sbase

suckless unix tools
git clone git://git.suckless.org/sbase
Log | Files | Refs | README | LICENSE

commit d827fcace2c605c0114859d77cb9b2b47f37e693
parent ea03da0bdaa305cb4b32e6b6a5ff0e28b3b2fd19
Author: Michael Forney <mforney@mforney.org>
Date:   Sat, 14 May 2016 18:56:53 -0700

ls: Simplify some logic

- After first iteration, set first to 0 instead of !first.
- If Hflag || Lflag, then mkent used stat instead of lstat, so the
  entity cannot be a symlink.
- Print path prefix along with directory name.
- In the 'if (Rflag)' block, just use 1 instead of Rflag.

Diffstat:
Mls.c | 15+++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/ls.c b/ls.c @@ -279,7 +279,7 @@ lsdir(const char *path, const struct entry *dir) qsort(ents, n, sizeof(*ents), entcmp); if (path[0] || showdirs) - printf("%s:\n", dir->name); + printf("%s%s:\n", path, dir->name); for (i = 0; i < n; i++) output(&ents[i]); @@ -296,7 +296,7 @@ lsdir(const char *path, const struct entry *dir) if (S_ISLNK(ent->mode) && S_ISDIR(ent->tmode) && !Lflag) continue; - ls(prefix, ent, Rflag); + ls(prefix, ent, 1); } } @@ -346,11 +346,10 @@ ls(const char *path, const struct entry *ent, int listdir) eprintf("getcwd:"); if (first) - first = !first; + first = 0; else putchar('\n'); - fputs(path, stdout); lsdir(path, ent); tree[treeind].ino = 0; @@ -451,8 +450,8 @@ main(int argc, char *argv[]) case 1: mkent(&ent, argv[0], 1, Hflag || Lflag); ls("", &ent, (!dflag && S_ISDIR(ent.mode)) || - ((S_ISLNK(ent.mode) && S_ISDIR(ent.tmode)) && - ((Hflag || Lflag) || !(dflag || Fflag || lflag)))); + (S_ISLNK(ent.mode) && S_ISDIR(ent.tmode) && + !(dflag || Fflag || lflag))); break; default: @@ -460,8 +459,8 @@ main(int argc, char *argv[]) mkent(&ent, argv[i], 1, Hflag || Lflag); if ((!dflag && S_ISDIR(ent.mode)) || - ((S_ISLNK(ent.mode) && S_ISDIR(ent.tmode)) && - ((Hflag || Lflag) || !(dflag || Fflag || lflag)))) { + (S_ISLNK(ent.mode) && S_ISDIR(ent.tmode) && + !(dflag || Fflag || lflag))) { dents = ereallocarray(dents, ++ds, sizeof(*dents)); memcpy(&dents[ds - 1], &ent, sizeof(ent)); } else {