aboutsummaryrefslogtreecommitdiffstats
path: root/ls.c
diff options
context:
space:
mode:
authorSquibid <me@zacharyscheiman.com>2023-05-05 21:01:05 +0000
committerSquibid <me@zacharyscheiman.com>2023-05-05 21:01:05 +0000
commit89adab843f6a7c12634e1311408f8e866570caf8 (patch)
tree16d54515299b8269b89840ed19e12b0378fd5058 /ls.c
parent17442300ddcbbc423f718355e50ec9576250ef46 (diff)
downloadcoreutils-89adab843f6a7c12634e1311408f8e866570caf8.tar.gz
coreutils-89adab843f6a7c12634e1311408f8e866570caf8.tar.bz2
coreutils-89adab843f6a7c12634e1311408f8e866570caf8.zip
simplify code and add warngings
Diffstat (limited to '')
-rw-r--r--ls.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/ls.c b/ls.c
index 630ee4a..ddcdc74 100644
--- a/ls.c
+++ b/ls.c
@@ -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);
}
}