Loop forever instead of exiting.
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 */