diff options
Diffstat (limited to '')
-rw-r--r-- | ls.c | 28 |
1 files changed, 16 insertions, 12 deletions
@@ -17,18 +17,22 @@ int main(int argc, char *argv[]) } } - if (argc > 0) { - for (int i = 1; i < argc; i++) { - dirs = argv[i]; - if ((d = opendir(dirs))) { - while ((dir = readdir(d)) != NULL) { - if (strncmp(dir->d_name, ".", 1) != 0 && hidden) /* dont print hidden files */ - printf("%s\n", dir->d_name); - else if (!hidden) - printf("%s\n", dir->d_name); - } - closedir(d); - } + if (argc < 2) { + fprintf(stderr, "No arguments provided.\n"); + return 1; + } + + for (int i = 1; i < argc; i++) { + while (!strncmp(argv[i], "-", 1) || !opendir(argv[i])) + i++; + + d = opendir(argv[i]); + while ((dir = readdir(d)) != NULL) { + if (strncmp(dir->d_name, ".", 1) != 0 && hidden) /* dont print hidden files */ + printf("%s\n", dir->d_name); + else if (!hidden) + printf("%s\n", dir->d_name); } + closedir(d); } } |