Index: uspace/app/sysinfo/sysinfo.c
===================================================================
--- uspace/app/sysinfo/sysinfo.c	(revision 76f382b9b45e8460f46017535a7dbebc23d9e5e1)
+++ uspace/app/sysinfo/sysinfo.c	(revision 196c2530df71f9f2878804f3f8971bb545304e28)
@@ -92,5 +92,11 @@
 }
 
-static void print_keys(const char *path)
+static void print_spaces(size_t spaces)
+{
+	for (size_t i = 0; i < spaces; i++)
+		printf(" ");
+}
+
+static void print_keys(const char *path, size_t spaces)
 {
 	size_t size;
@@ -103,4 +109,7 @@
 		/* Process each key with sanity checks */
 		size_t cur_size = str_nsize(keys + pos, size - pos);
+		if (keys[pos + cur_size] != 0)
+			break;
+		
 		size_t path_size = str_size(path) + cur_size + 2;
 		char *cur_path = (char *) malloc(path_size);
@@ -108,11 +117,20 @@
 			break;
 		
-		if (path[0] != 0)
+		size_t length;
+		
+		if (path[0] != 0) {
+			print_spaces(spaces);
+			printf(".%s\n", keys + pos);
+			length = str_length(keys + pos) + 1;
+			
 			snprintf(cur_path, path_size, "%s.%s", path, keys + pos);
-		else
+		} else {
+			printf("%s\n", keys + pos);
+			length = str_length(keys + pos);
+			
 			snprintf(cur_path, path_size, "%s", keys + pos);
+		}
 		
-		printf("%s\n", cur_path);
-		print_keys(cur_path);
+		print_keys(cur_path, spaces + length);
 		
 		free(cur_path);
@@ -127,5 +145,5 @@
 	if (argc != 2) {
 		/* Print keys */
-		print_keys("");
+		print_keys("", 0);
 		return 0;
 	}
