commit ea03da0bdaa305cb4b32e6b6a5ff0e28b3b2fd19
parent e8e9b97baf42525ee884c6dd6863c8694a81b13a
Author: Michael Forney <mforney@mforney.org>
Date: Sat, 14 May 2016 18:56:52 -0700
ls: Don't show directory name with single directory operand
This fixes the issue b107489bf2cda579ca53551206270b9eee80c059 tried
to fix, but doesn't break -R (which
bb83eade399e7d6f3642ae3a5e2cdebab6f222a1 tried to fix).
Diffstat:
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/ls.c b/ls.c
@@ -53,6 +53,7 @@ static int Uflag = 0;
static int uflag = 0;
static int first = 1;
static char sort = 0;
+static int showdirs;
static void ls(const char *, const struct entry *, int);
@@ -277,7 +278,7 @@ lsdir(const char *path, const struct entry *dir)
if (!Uflag)
qsort(ents, n, sizeof(*ents), entcmp);
- if (path[0] || dir->name[0] != '.')
+ if (path[0] || showdirs)
printf("%s:\n", dir->name);
for (i = 0; i < n; i++)
output(&ents[i]);
@@ -469,6 +470,8 @@ main(int argc, char *argv[])
}
}
+ showdirs = ds > 1 || (ds && fs);
+
qsort(fents, fs, sizeof(ent), entcmp);
qsort(dents, ds, sizeof(ent), entcmp);