]> Sergey Matveev's repositories - nnn.git/commitdiff
Show extn for regular files
authorArun Prakash Jana <engineerarun@gmail.com>
Thu, 12 Sep 2019 16:45:25 +0000 (22:15 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Thu, 12 Sep 2019 16:45:25 +0000 (22:15 +0530)
src/nnn.c

index aa681f95e9b60bfc7c4a4c1238953efd6dff9315..d48fc81f30b3bd375f9b9fbb4ebace51fd045ec5 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -3284,18 +3284,31 @@ static void redraw(char *path)
                if (cfg.selmode)
                        selmode[0] = 'Y';
 
+               /* Get the file extension for regular files */
+               if (S_ISREG(dents[cur].mode)) {
+                       i = (int)strlen(dents[cur].name);
+                       ptr = xmemrchr((uchar *)dents[cur].name, '.', i);
+                       if (ptr)
+                               attrs = ptr - dents[cur].name; /* attrs used as tmp var */
+                       if (!ptr || (i - attrs) > 5 || (i - attrs) < 2)
+                               ptr = "\b";
+               } else
+                       ptr = "\b";
+
+               /* Get the unescaped file name */
+               base = unescape(dents[cur].name, NAME_MAX, NULL);
+
                /* We need to show filename as it may be truncated in directory listing */
                if (!cfg.showdetail || !cfg.blkorder)
-                       mvprintw(lastln, 0, "%d/%d (%d) %s%s[%s]\n", cur + 1, ndents, nselected,
-                                selmode, sort, unescape(dents[cur].name, NAME_MAX, NULL));
+                       mvprintw(lastln, 0, "%d/%d (%d) %s%s%s [%s]\n",
+                                cur + 1, ndents, nselected, selmode, sort, ptr, base);
                else {
                        xstrlcpy(buf, coolsize(dir_blocks << BLK_SHIFT), 12);
                        c = cfg.apparentsz ? 'a' : 'd';
 
-                       mvprintw(lastln, 0, "%d/%d (%d) %s%cu: %s (%lu files) free: %s [%s]\n",
+                       mvprintw(lastln, 0, "%d/%d (%d) %s%cu: %s (%lu files) free: %s %s [%s]\n",
                                 cur + 1, ndents, nselected, selmode, c, buf, num_files,
-                                coolsize(get_fs_info(path, FREE)),
-                                unescape(dents[cur].name, NAME_MAX, NULL));
+                                coolsize(get_fs_info(path, FREE)), ptr, base);
                }
        } else
                printmsg("0/0");