Index: uspace/app/init/init.c
===================================================================
--- uspace/app/init/init.c	(revision 6cef75da8659d3a74bd38b23ec6f18016304dbc7)
+++ uspace/app/init/init.c	(revision c91c9fb987cd6b3304347080515420a31a935edc)
@@ -28,7 +28,7 @@
 
 /** @addtogroup init Init
- * @brief	Init process for testing purposes.
+ * @brief Init process for user space environment configuration.
  * @{
- */ 
+ */
 /**
  * @file
@@ -37,4 +37,5 @@
 #include <stdio.h>
 #include <unistd.h>
+#include <ipc/ipc.h>
 #include <vfs/vfs.h>
 #include <bool.h>
@@ -43,12 +44,7 @@
 #include <task.h>
 #include <malloc.h>
+#include <macros.h>
 #include "init.h"
 #include "version.h"
-
-static void console_wait(void)
-{
-	while (get_cons_phone() < 0)
-		usleep(50000);	// FIXME
-}
 
 static bool mount_fs(const char *fstype)
@@ -57,6 +53,6 @@
 	
 	while (rc < 0) {
-		rc = mount(fstype, "/", "initrd");
-
+		rc = mount(fstype, "/", "initrd", IPC_FLAG_BLOCKING);
+		
 		switch (rc) {
 		case EOK:
@@ -72,6 +68,4 @@
 			printf(NAME ": Unknown filesystem type (%s)\n", fstype);
 			return false;
-		default:
-			sleep(5);	// FIXME
 		}
 	}
@@ -83,14 +77,16 @@
 {
 	char *argv[2];
-
+	
 	printf(NAME ": Spawning %s\n", fname);
-
+	
 	argv[0] = fname;
 	argv[1] = NULL;
-
-	if (task_spawn(fname, argv) != 0) {
-		/* Success */
-		sleep(1);
-	}
+	
+	if (task_spawn(fname, argv))
+		/* Add reasonable delay to avoid
+		   intermixed klog output */
+		usleep(10000);
+	else
+		printf(NAME ": Error spawning %s\n", fname);
 }
 
@@ -98,7 +94,6 @@
 {
 	info_print();
-	sleep(5);	// FIXME
 	
-	if (!mount_fs("tmpfs") && !mount_fs("fat")) {
+	if (!mount_fs(STRING(RDFMT))) {
 		printf(NAME ": Exiting\n");
 		return -1;
