diff options
author | Jakob Kaivo <jkk@ung.org> | 2022-04-11 16:39:20 -0400 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2022-04-11 16:39:20 -0400 |
commit | 5110660d1762483a818a3bc4326fbfece57dd146 (patch) | |
tree | 154adc1e808c3b4f42b9f6422a9a3a2f659d8a18 | |
parent | 8fd0eb02905bf6e5d614a8b964943f1a9d2c0776 (diff) |
show dirname and add spacing with multiple directory operands
-rw-r--r-- | ls.c | 23 |
1 files changed, 10 insertions, 13 deletions
@@ -59,15 +59,6 @@ static enum { ATIME, } sort = ALPHA; -#define CHARACTER 1 << 0 -#define INODES 1 << 1 -#define DIRS 1 << 2 -#define QUOTE 1 << 3 -#define BLOCKS 1 << 4 - -#define FOLLOW 1 -#define LLONG 2 - #define DEFAULT_BLOCK_SIZE 512 static enum { HIDE_ALL, HIDE_SOME, HIDE_NONE } ls_hidden = HIDE_ALL; @@ -150,7 +141,7 @@ static int ls_compare_files(const void *op_a, const void *op_b) return (reverse ? -1 : 1) * ret; } -static int ls_dir(char *dir) +static int ls_dir(char *dir, int showdirname) { size_t nfiles = 0; struct file_info *files = NULL; @@ -201,6 +192,9 @@ static int ls_dir(char *dir) closedir(d); qsort(files, nfiles, sizeof(*files), ls_compare_files); + if (showdirname) { + printf("%s:\n", dir); + } ls_print(nfiles, files); free(files); @@ -585,7 +579,7 @@ int main(int argc, char *argv[]) size_t nfiles = 0; struct file_info *op = operands; while (op->path != NULL) { - if (list_dirs_separately && !S_ISDIR(op->st.st_mode)) { + if (list_dirs_separately && S_ISDIR(op->st.st_mode)) { break; } op++; @@ -599,12 +593,15 @@ int main(int argc, char *argv[]) } while (op->path != NULL) { - ls_dir(op->path); + ls_dir(op->path, (size_t)argc > nfiles + 1); op++; + if (op->path) { + printf("\n"); + } } if (argc == 0) { - return ls_dir("."); + return ls_dir(".", 0); } return ret; |