[hackers] [sbase] ls: Simplify some logic || Michael Forney

From: <git_AT_suckless.org>
Date: Sat, 9 Jul 2016 11:09:58 +0200 (CEST)

commit d827fcace2c605c0114859d77cb9b2b47f37e693
Author: Michael Forney <mforney_AT_mforney.org>
AuthorDate: Sat May 14 18:56:53 2016 -0700
Commit: sin <sin_AT_2f30.org>
CommitDate: Sat Jul 9 10:09:50 2016 +0100

    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.

diff --git a/ls.c b/ls.c
index 42811c5..b5c4b00 100644
--- a/ls.c
+++ b/ls.c
_AT_@ -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]);
 
_AT_@ -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);
                 }
         }
 
_AT_@ -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;
 
_AT_@ -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:
_AT_@ -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 {
Received on Sat Jul 09 2016 - 11:09:58 CEST

This archive was generated by hypermail 2.3.0 : Sat Jul 09 2016 - 11:13:37 CEST