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).
This commit is contained in:
parent
e8e9b97baf
commit
ea03da0bda
5
ls.c
5
ls.c
@ -53,6 +53,7 @@ static int Uflag = 0;
|
|||||||
static int uflag = 0;
|
static int uflag = 0;
|
||||||
static int first = 1;
|
static int first = 1;
|
||||||
static char sort = 0;
|
static char sort = 0;
|
||||||
|
static int showdirs;
|
||||||
|
|
||||||
static void ls(const char *, const struct entry *, int);
|
static void ls(const char *, const struct entry *, int);
|
||||||
|
|
||||||
@ -277,7 +278,7 @@ lsdir(const char *path, const struct entry *dir)
|
|||||||
if (!Uflag)
|
if (!Uflag)
|
||||||
qsort(ents, n, sizeof(*ents), entcmp);
|
qsort(ents, n, sizeof(*ents), entcmp);
|
||||||
|
|
||||||
if (path[0] || dir->name[0] != '.')
|
if (path[0] || showdirs)
|
||||||
printf("%s:\n", dir->name);
|
printf("%s:\n", dir->name);
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
output(&ents[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(fents, fs, sizeof(ent), entcmp);
|
||||||
qsort(dents, ds, sizeof(ent), entcmp);
|
qsort(dents, ds, sizeof(ent), entcmp);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user