summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler Murphy <tylerm@tylerm.dev>2023-04-28 13:11:56 -0400
committerTyler Murphy <tylerm@tylerm.dev>2023-04-28 13:11:56 -0400
commit5b710c02b413ad17c62fa64fa53a84e1f53b8141 (patch)
tree3668b7b2cbf3d675b6c774ce9af30fe8ea5740b0
parentimprove ls command (diff)
downloadlazysphere-5b710c02b413ad17c62fa64fa53a84e1f53b8141.tar.gz
lazysphere-5b710c02b413ad17c62fa64fa53a84e1f53b8141.tar.bz2
lazysphere-5b710c02b413ad17c62fa64fa53a84e1f53b8141.zip
fi ls spacing
-rw-r--r--src/commands/ls.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/commands/ls.c b/src/commands/ls.c
index e9fec8c..36725f2 100644
--- a/src/commands/ls.c
+++ b/src/commands/ls.c
@@ -52,7 +52,11 @@ struct FileListInfo {
static DIR* get_directory(char* path) {
DIR* d = opendir(path);
if (d == NULL) {
- printf("\x1b[0merror: failed to open directory '%s': %s\n", path, strerror(errno));
+ if (errno == ENOTDIR) {
+ printf("\x1b[0m%s is a a file\n", path);
+ } else {
+ printf("\x1b[0merror: failed to open directory '%s': %s\n", path, strerror(errno));
+ }
}
return d;
}
@@ -267,13 +271,14 @@ static void push_file(
(*size)++;
}
-static void recurse_directory(char* path, struct Flags* flags) {
+static bool recurse_directory(char* path, struct Flags* flags) {
DIR* d;
struct dirent* file;
bool first = true;
d = get_directory(path);
- if (d == NULL) return;
+ if (d == NULL) return false;
+
int capacity = 8;
int size = 0;
@@ -300,7 +305,7 @@ static void recurse_directory(char* path, struct Flags* flags) {
closedir(d);
d = get_directory(path);
- if (d == NULL) return;
+ if (d == NULL) return false;
while((file = readdir(d)) != NULL) {
if (file->d_type != DT_DIR) continue;
@@ -312,16 +317,17 @@ static void recurse_directory(char* path, struct Flags* flags) {
}
closedir(d);
+
+ return true;
}
-static void list_directory(char* path, struct Flags* flags) {
+static bool list_directory(char* path, struct Flags* flags) {
if (flags->recurse) {
- recurse_directory(path, flags);
- return;
+ return recurse_directory(path, flags);
}
DIR* d = get_directory(path);
- if (d == NULL) return;
+ if (d == NULL) return false;
int capacity = 8;
int size = 0;
@@ -340,6 +346,7 @@ static void list_directory(char* path, struct Flags* flags) {
free(files);
closedir(d);
+ return true;
}
static void help() {
@@ -403,10 +410,9 @@ COMMAND(ls) {
if (titled && !flags.recurse) {
printf("\n%s%s:%s\n", DIR_COLOR, argv[i], FILE_COLOR);
}
- list_directory(argv[i], &flags);
- if (titled && !flags.recurse) printf("\n");
+ if (list_directory(argv[i], &flags) && i + 1 != argc)
+ if (titled && !flags.recurse) printf("\n");
}
- if (!flags.more_info) printf("\n");
return EXIT_SUCCESS;
}