Bug fixes.
 -Erik
diff --git a/init/init.c b/init/init.c
index 8a48380..b4ab1c7 100644
--- a/init/init.c
+++ b/init/init.c
@@ -331,7 +331,7 @@
 static pid_t run(char* command, 
 	char *terminal, int get_enter)
 {
-    int i;
+    int i, fd;
     pid_t pid;
     char* tmpCmd;
     char* cmd[255];
@@ -357,21 +357,20 @@
 	close(2);
 	setsid();
 
-	if (device_open(terminal, O_RDWR) < 0) {
-	    message(LOG|CONSOLE, "Bummer, can't open %s\r\n", terminal);
-	    exit(1);
-	}
-	dup(0);
-	dup(0);
-	tcsetpgrp (0, getpgrp());
-	set_term(0);
-
 	/* Reset signal handlers set for parent process */
 	signal(SIGUSR1, SIG_DFL);
 	signal(SIGUSR2, SIG_DFL);
 	signal(SIGINT, SIG_DFL);
 	signal(SIGTERM, SIG_DFL);
 
+	if ((fd = device_open(terminal, O_RDWR)) < 0) {
+	    message(LOG|CONSOLE, "Bummer, can't open %s\r\n", terminal);
+	    exit(1);
+	}
+	dup(fd);
+	dup(fd);
+	tcsetpgrp (0, getpgrp());
+	set_term(0);
 
 	if (get_enter==TRUE) {
 	    /*
@@ -389,19 +388,21 @@
 	    read(fileno(stdin), &c, 1);
 	}
 
+	/* Log the process name and args */
+	message(LOG|CONSOLE, "Starting pid %d, console %s: '", 
+		shell_pgid, terminal, command);
+
 	/* Convert command (char*) into cmd (char**, one word per string) */
 	for (tmpCmd=command, i=0; (tmpCmd=strsep(&command, " \t")) != NULL;) {
 	    if (*tmpCmd != '\0') {
 		cmd[i] = tmpCmd;
+		message(LOG|CONSOLE, "%s ", tmpCmd);
 		tmpCmd++;
 		i++;
 	    }
 	}
 	cmd[i] = NULL;
-
-	/* Log the process name and args */
-	message(LOG, "Starting pid %d, console %s: '%s'\r\n", 
-		shell_pgid, terminal, cmd[0]);
+	message(LOG|CONSOLE, "'\r\n");
 
 	/* Now run it.  The new program will take over this PID, 
 	 * so nothing further in init.c should be run. */
@@ -540,8 +541,8 @@
     } else
 	strncpy(newAction->console, console, 255);
     newAction->pid = 0;
-//    message(LOG|CONSOLE, "process='%s' action='%d' console='%s'\n",
-//	    newAction->process, newAction->action, newAction->console);
+    message(LOG|CONSOLE, "process='%s' action='%d' console='%s'\n",
+	    newAction->process, newAction->action, newAction->console);
 }
 
 void delete_initAction (initAction *action)
@@ -672,11 +673,8 @@
 	usage( "init\n\nInit is the parent of all processes.\n\n"
 		"This version of init is designed to be run only by the kernel\n");
     }
-
-    /* from the controlling terminal */
-    setsid();
-
-    /* Set up sig handlers  -- be sure to clear all of these in run() */
+    /* Set up sig handlers  -- be sure to
+     * clear all of these in run() */
     signal(SIGUSR1, halt_signal);
     signal(SIGUSR2, reboot_signal);
     signal(SIGINT, reboot_signal);
@@ -686,7 +684,7 @@
      * SIGINT on CAD so we can shut things down gracefully... */
     reboot(RB_DISABLE_CAD);
 #endif 
-    
+
     /* Figure out where the default console should be */
     console_init();
 
@@ -695,11 +693,11 @@
     close(1);
     close(2);
     set_term(0);
+    setsid();
 
     /* Make sure PATH is set to something sane */
     putenv(_PATH_STDPATH);
 
-   
     /* Hello world */
 #ifndef DEBUG_INIT
     message(LOG|CONSOLE,