Show vol free in help

This commit is contained in:
Arun Prakash Jana 2017-08-12 01:42:55 +05:30
parent 054f037bd2
commit f178004b13
No known key found for this signature in database
GPG Key ID: A75979F35C080412
1 changed files with 51 additions and 43 deletions

94
nnn.c
View File

@ -1421,6 +1421,50 @@ show_stats(char *fpath, char *fname, struct stat *sb)
return 0; 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 static int
show_mediainfo(char *fpath, char *arg) show_mediainfo(char *fpath, char *arg)
{ {
@ -1434,7 +1478,7 @@ show_mediainfo(char *fpath, char *arg)
} }
static int static int
show_help(void) show_help(char *path)
{ {
char tmp[] = "/tmp/nnnXXXXXX"; char tmp[] = "/tmp/nnnXXXXXX";
static char helpstr[] = ("\ static char helpstr[] = ("\
@ -1485,7 +1529,7 @@ Home, g, ^, ^A | Jump to first entry\n\
dprintf(fd, "BOOKMARKS\n"); dprintf(fd, "BOOKMARKS\n");
for (; i < MAX_BM; ++i) for (; i < MAX_BM; ++i)
if (bookmark[i].key) if (bookmark[i].key)
dprintf(fd, "\t%s: %s\n", dprintf(fd, " %s: %s\n",
bookmark[i].key, bookmark[i].loc); bookmark[i].key, bookmark[i].loc);
else else
break; break;
@ -1504,6 +1548,9 @@ Home, g, ^, ^A | Jump to first entry\n\
if (copier) if (copier)
dprintf(fd, "NNN_COPIER: %s\n", copier); dprintf(fd, "NNN_COPIER: %s\n", copier);
update_fs_free(path);
dprintf(fd, "\nVolume: %s free\n", coolsize(fs_free));
dprintf(fd, "\n"); dprintf(fd, "\n");
close(fd); close(fd);
@ -1525,39 +1572,6 @@ sum_bsizes(const char *fpath, const struct stat *sb,
return 0; 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 static int
dentfill(char *path, struct entry **dents, dentfill(char *path, struct entry **dents,
int (*filter)(regex_t *, char *), regex_t *re) int (*filter)(regex_t *, char *), regex_t *re)
@ -1578,15 +1592,9 @@ dentfill(char *path, struct entry **dents,
n = 0; n = 0;
if (cfg.blkorder) { 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; num_files = 0;
dir_blocks = 0; dir_blocks = 0;
update_fs_free(path);
} }
while ((dp = readdir(dirp)) != NULL) { while ((dp = readdir(dirp)) != NULL) {
@ -2413,7 +2421,7 @@ nochange:
printmsg("NNN_COPIER is not set"); printmsg("NNN_COPIER is not set");
goto nochange; goto nochange;
case SEL_HELP: case SEL_HELP:
show_help(); show_help(path);
break; break;
case SEL_RUN: case SEL_RUN:
run = xgetenv(env, run); run = xgetenv(env, run);