]> Sergey Matveev's repositories - nnn.git/commitdiff
Simplify detail print
authorArun Prakash Jana <engineerarun@gmail.com>
Sat, 22 Feb 2020 09:09:22 +0000 (14:39 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 22 Feb 2020 09:38:59 +0000 (15:08 +0530)
src/nnn.c

index 0da4e47e86db8824ab54770d5ad3e4d2c53b613e..3bb58300cd73c3ec212698a2398032bd87f2f7fc 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -3207,7 +3207,7 @@ static void printent(const struct entry *ent, uint namecols, bool sel)
 
 static void printent_long(const struct entry *ent, uint namecols, bool sel)
 {
-       char timebuf[24], permbuf[4], ind1 = '\0', ind2[] = "\0\0";
+       char timebuf[24], permbuf[4], ind1 = '\0', ind2 = '\0';
        const char cp = (ent->flags & FILE_SELECTED) ? '+' : ' ';
 
        /* Timestamp */
@@ -3235,23 +3235,27 @@ static void printent_long(const struct entry *ent, uint namecols, bool sel)
 
        switch (ent->mode & S_IFMT) {
        case S_IFREG:
-               printw("%c%-16.16s  %s %8.8s%s %s%s\n", cp, timebuf, permbuf,
-                      coolsize(cfg.blkorder ? ent->blocks << blk_shift : ent->size),
-                      ((ent->flags & HARD_LINK) ? ">" : " "), pname,
-                      ((ent->mode & 0100) ? "*" : ""));
-               break;
+               ind1 = (ent->flags & HARD_LINK) ? '>' : ' ';
+               if (ent->mode & 0100)
+                       ind2 = '*'; // fallthrough
        case S_IFDIR:
-               printw("%c%-16.16s  %s %8.8s  %s/\n", cp, timebuf, permbuf,
-                      coolsize(cfg.blkorder ? ent->blocks << blk_shift : ent->size), pname);
+               if (!ind1) {
+                       ind1 = ' ';
+                       ind2 = '/';
+               }
+
+               printw("%c%-16.16s  %s %8.8s%c %s%c", cp, timebuf, permbuf,
+                      coolsize(cfg.blkorder ? ent->blocks << blk_shift : ent->size),
+                      ind1, pname, ind2);
                break;
        case S_IFLNK:
-               printw("%c%-16.16s  %s        @  %s@\n", cp, timebuf, permbuf, pname);
-               break;
+               ind1 = ind2 = '@'; // fallthrough
        case S_IFSOCK:
-               ind1 = ind2[0] = '='; // fallthrough
+               if (!ind1)
+                       ind1 = ind2 = '='; // fallthrough
        case S_IFIFO:
                if (!ind1)
-                       ind1 = ind2[0] = '|'; // fallthrough
+                       ind1 = ind2 = '|'; // fallthrough
        case S_IFBLK:
                if (!ind1)
                        ind1 = 'b'; // fallthrough
@@ -3260,11 +3264,13 @@ static void printent_long(const struct entry *ent, uint namecols, bool sel)
                        ind1 = 'c'; // fallthrough
        default:
                if (!ind1)
-                       ind1 = ind2[0] = '?';
-               printw("%c%-16.16s  %s        %c  %s%s\n", cp, timebuf, permbuf, ind1, pname, ind2);
+                       ind1 = ind2 = '?';
+               printw("%c%-16.16s  %s        %c  %s%c", cp, timebuf, permbuf, ind1, pname, ind2);
                break;
        }
 
+       addch('\n');
+
        if (sel)
                attroff(A_REVERSE);
 }