diff --git a/init.c b/init.c
index 370ee72..6369ef9 100644
--- a/init.c
+++ b/init.c
@@ -185,7 +185,11 @@
 
 static void delete_initAction(initAction * action);
 
-
+static void loop_forever()
+{
+	while (1)
+		sleep (1);
+}
 
 /* Print a message to the specified device.
  * Device may be bitwise-or'd from LOG | CONSOLE */
@@ -611,8 +615,7 @@
   goodnight:
 	message(CONSOLE,
 			"Sorry, your computer does not have enough memory.\r\n");
-	while (1)
-		sleep(1);
+	loop_forever();
 }
 
 /* Run all commands to be run right before halt/reboot */
@@ -679,7 +682,8 @@
 		init_reboot(RB_POWER_OFF);
 	else
 		init_reboot(RB_HALT_SYSTEM);
-	exit(0);
+
+	loop_forever();
 }
 
 static void reboot_signal(int sig)
@@ -692,7 +696,8 @@
 	sleep(2);
 
 	init_reboot(RB_AUTOBOOT);
-	exit(0);
+
+	loop_forever();
 }
 
 static void ctrlaltdel_signal(int sig)
@@ -720,8 +725,7 @@
 	newAction = calloc((size_t) (1), sizeof(initAction));
 	if (!newAction) {
 		message(LOG | CONSOLE, "Memory allocation failure\n");
-		while (1)
-			sleep(1);
+		loop_forever();
 	}
 	newAction->nextPtr = initActionList;
 	initActionList = newAction;
@@ -993,8 +997,7 @@
 	if (initActionList == NULL) {
 		message(LOG | CONSOLE,
 				"No more tasks for init -- sleeping forever.\n");
-		while (1)
-			sleep(1);
+		loop_forever();
 	}
 
 	/* Now run the looping stuff for the rest of forever */
diff --git a/init/init.c b/init/init.c
index 370ee72..6369ef9 100644
--- a/init/init.c
+++ b/init/init.c
@@ -185,7 +185,11 @@
 
 static void delete_initAction(initAction * action);
 
-
+static void loop_forever()
+{
+	while (1)
+		sleep (1);
+}
 
 /* Print a message to the specified device.
  * Device may be bitwise-or'd from LOG | CONSOLE */
@@ -611,8 +615,7 @@
   goodnight:
 	message(CONSOLE,
 			"Sorry, your computer does not have enough memory.\r\n");
-	while (1)
-		sleep(1);
+	loop_forever();
 }
 
 /* Run all commands to be run right before halt/reboot */
@@ -679,7 +682,8 @@
 		init_reboot(RB_POWER_OFF);
 	else
 		init_reboot(RB_HALT_SYSTEM);
-	exit(0);
+
+	loop_forever();
 }
 
 static void reboot_signal(int sig)
@@ -692,7 +696,8 @@
 	sleep(2);
 
 	init_reboot(RB_AUTOBOOT);
-	exit(0);
+
+	loop_forever();
 }
 
 static void ctrlaltdel_signal(int sig)
@@ -720,8 +725,7 @@
 	newAction = calloc((size_t) (1), sizeof(initAction));
 	if (!newAction) {
 		message(LOG | CONSOLE, "Memory allocation failure\n");
-		while (1)
-			sleep(1);
+		loop_forever();
 	}
 	newAction->nextPtr = initActionList;
 	initActionList = newAction;
@@ -993,8 +997,7 @@
 	if (initActionList == NULL) {
 		message(LOG | CONSOLE,
 				"No more tasks for init -- sleeping forever.\n");
-		while (1)
-			sleep(1);
+		loop_forever();
 	}
 
 	/* Now run the looping stuff for the rest of forever */
