refactor: restructure the user space stuff.
[lunaix-os.git] / lunaix-os / usr / ls / ls.c
diff --git a/lunaix-os/usr/ls/ls.c b/lunaix-os/usr/ls/ls.c
new file mode 100644 (file)
index 0000000..646dd6b
--- /dev/null
@@ -0,0 +1,34 @@
+#include <dirent.h>
+#include <errno.h>
+#include <stdio.h>
+
+int
+main(int argc, const char* argv[])
+{
+    const char* path = ".";
+    if (argc > 1) {
+        path = argv[1];
+    }
+
+    DIR* dir = opendir(path);
+
+    if (!dir) {
+        return errno;
+    }
+
+    struct dirent* dent;
+
+    while ((dent = readdir(dir))) {
+        if (dent->d_type == DT_DIR) {
+            printf(" \033[3m%s\033[39;49m\n", dent->d_name);
+        } else if (dent->d_type == DT_SYMLINK) {
+            printf(" \033[13m%s@\033[39;49m\n", dent->d_name);
+        } else {
+            printf(" %s\n", dent->d_name);
+        }
+    }
+
+    closedir(dir);
+
+    return 0;
+}
\ No newline at end of file