]> Sergey Matveev's repositories - nnn.git/commitdiff
Show vol free in help
authorArun Prakash Jana <engineerarun@gmail.com>
Fri, 11 Aug 2017 20:12:55 +0000 (01:42 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 12 Aug 2017 14:27:23 +0000 (19:57 +0530)
nnn.c

diff --git a/nnn.c b/nnn.c
index 195f095eadbb1113277602fc36b54ff383aca10a..17506fd5f35d5a83932984f5076a2b262660a57a 100644 (file)
--- a/nnn.c
+++ b/nnn.c
@@ -1421,6 +1421,50 @@ show_stats(char *fpath, char *fname, struct stat *sb)
        return 0;
 }
 
+static int
+getorder(size_t size)
+{
+       switch (size) {
+       case 4096:
+               return 12;
+       case 512:
+               return 9;
+       case 8192:
+               return 13;
+       case 16384:
+               return 14;
+       case 32768:
+               return 15;
+       case 65536:
+               return 16;
+       case 131072:
+               return 17;
+       case 262144:
+               return 18;
+       case 524288:
+               return 19;
+       case 1048576:
+               return 20;
+       case 2048:
+               return 11;
+       case 1024:
+               return 10;
+       default:
+               return 0;
+       }
+}
+
+static void
+update_fs_free(char *path)
+{
+       static struct statvfs svb;
+
+       if (statvfs(path, &svb) == -1)
+               fs_free = 0;
+       else
+               fs_free = svb.f_bavail << getorder(svb.f_bsize);
+}
+
 static int
 show_mediainfo(char *fpath, char *arg)
 {
@@ -1434,7 +1478,7 @@ show_mediainfo(char *fpath, char *arg)
 }
 
 static int
-show_help(void)
+show_help(char *path)
 {
        char tmp[] = "/tmp/nnnXXXXXX";
        static char helpstr[] = ("\
@@ -1485,7 +1529,7 @@ Home, g, ^, ^A | Jump to first entry\n\
                dprintf(fd, "BOOKMARKS\n");
                for (; i < MAX_BM; ++i)
                        if (bookmark[i].key)
-                               dprintf(fd, "\t%s: %s\n",
+                               dprintf(fd, " %s: %s\n",
                                        bookmark[i].key, bookmark[i].loc);
                        else
                                break;
@@ -1504,6 +1548,9 @@ Home, g, ^, ^A | Jump to first entry\n\
        if (copier)
                dprintf(fd, "NNN_COPIER: %s\n", copier);
 
+       update_fs_free(path);
+       dprintf(fd, "\nVolume: %s free\n", coolsize(fs_free));
+
        dprintf(fd, "\n");
        close(fd);
 
@@ -1525,39 +1572,6 @@ sum_bsizes(const char *fpath, const struct stat *sb,
        return 0;
 }
 
-static int
-getorder(size_t size)
-{
-       switch (size) {
-       case 4096:
-               return 12;
-       case 512:
-               return 9;
-       case 8192:
-               return 13;
-       case 16384:
-               return 14;
-       case 32768:
-               return 15;
-       case 65536:
-               return 16;
-       case 131072:
-               return 17;
-       case 262144:
-               return 18;
-       case 524288:
-               return 19;
-       case 1048576:
-               return 20;
-       case 2048:
-               return 11;
-       case 1024:
-               return 10;
-       default:
-               return 0;
-       }
-}
-
 static int
 dentfill(char *path, struct entry **dents,
         int (*filter)(regex_t *, char *), regex_t *re)
@@ -1578,15 +1592,9 @@ dentfill(char *path, struct entry **dents,
        n = 0;
 
        if (cfg.blkorder) {
-               static struct statvfs svb;
-
-               if (statvfs(path, &svb) == -1)
-                       fs_free = 0;
-               else
-                       fs_free = svb.f_bavail << getorder(svb.f_bsize);
-
                num_files = 0;
                dir_blocks = 0;
+               update_fs_free(path);
        }
 
        while ((dp = readdir(dirp)) != NULL) {
@@ -2413,7 +2421,7 @@ nochange:
                                printmsg("NNN_COPIER is not set");
                        goto nochange;
                case SEL_HELP:
-                       show_help();
+                       show_help(path);
                        break;
                case SEL_RUN:
                        run = xgetenv(env, run);