X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/ebb55b7e5f0b8f31328950ec383b77b208ffbb64..0fd474df7001837bde53da0e42e83081827c9641:/lunaix-os/usr/ls.c diff --git a/lunaix-os/usr/ls.c b/lunaix-os/usr/ls.c index 698d025..3fdfc6e 100644 --- a/lunaix-os/usr/ls.c +++ b/lunaix-os/usr/ls.c @@ -13,22 +13,43 @@ main(int argc, const char* argv[]) DIR* dir = opendir(path); if (!dir) { - return errno; + goto done; } struct dirent* dent; + int i = 0, sz; + char bf[100]; 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) { - printf(" %s@\n", dent->d_name); + sz = snprintf(bf, 100, "%s@", dent->d_name); } 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); } - closedir(dir); + if (dir) + closedir(dir); - return 0; + return err; } \ No newline at end of file