Multiuser, Capabilities and Access Controls (#54)
[lunaix-os.git] / lunaix-os / usr / ls.c
index caea32d8f63c481b14da836ed616dad61a603a69..3fdfc6eb772475633321d1543e2476cefe98a0d7 100644 (file)
@@ -13,27 +13,43 @@ main(int argc, const char* argv[])
     DIR* dir = opendir(path);
 
     if (!dir) {
     DIR* dir = opendir(path);
 
     if (!dir) {
-        return errno;
+        goto done;
     }
 
     struct dirent* dent;
     }
 
     struct dirent* dent;
+    int i = 0, sz;
+    char bf[100];
 
     while ((dent = readdir(dir))) {
         if (dent->d_type == DT_DIR) {
 
     while ((dent = readdir(dir))) {
         if (dent->d_type == DT_DIR) {
-            printf(" %s/\n", dent->d_name);
+            sz = snprintf(bf, 100, "%s/", dent->d_name);
         } else if (dent->d_type == DT_SYMLINK) {
         } else if (dent->d_type == DT_SYMLINK) {
-            printf(" %s@\n", dent->d_name);
+            sz = snprintf(bf, 100, "%s@", dent->d_name);
         } else {
         } else {
-            printf(" %s\n", dent->d_name);
+            sz = snprintf(bf, 100, "%s", dent->d_name);
         }
         }
+
+        bf[sz] = 0;
+        printf("%-15s ", bf);
+
+        i++;
+        if ((i % 4) == 0) {
+            printf("\n");
+        }
+    }
+
+    if ((i % 4) != 0) {
+        printf("\n");
     }
 
     }
 
+done:
     int err = errno;
     if (err) {
         printf("failed: %d\n",err);
     }
 
     int err = errno;
     if (err) {
         printf("failed: %d\n",err);
     }
 
-    closedir(dir);
+    if (dir)
+        closedir(dir);
 
     return err;
 }
\ No newline at end of file
 
     return err;
 }
\ No newline at end of file