mirror of
https://github.com/jarun/nnn.git
synced 2024-11-28 13:51:31 +00:00
Show unprivileged free blocks in du mode
This commit is contained in:
parent
ea6f11a4d4
commit
b123985437
16
nnn.c
16
nnn.c
|
@ -2,6 +2,7 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
#include <sys/statvfs.h>
|
||||||
|
|
||||||
#include <curses.h>
|
#include <curses.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
@ -929,6 +930,7 @@ show_help(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
off_t blk_size;
|
off_t blk_size;
|
||||||
|
size_t fs_free = 0;
|
||||||
|
|
||||||
static int
|
static int
|
||||||
sum_sizes(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf)
|
sum_sizes(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf)
|
||||||
|
@ -955,12 +957,19 @@ dentfill(char *path, struct entry **dents,
|
||||||
DIR *dirp;
|
DIR *dirp;
|
||||||
struct dirent *dp;
|
struct dirent *dp;
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
|
struct statvfs svb;
|
||||||
int r, n = 0;
|
int r, n = 0;
|
||||||
|
|
||||||
dirp = opendir(path);
|
dirp = opendir(path);
|
||||||
if (dirp == NULL)
|
if (dirp == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
r = statvfs(path, &svb);
|
||||||
|
if (r == -1)
|
||||||
|
fs_free = 0;
|
||||||
|
else
|
||||||
|
fs_free = svb.f_bsize * svb.f_bavail;
|
||||||
|
|
||||||
while ((dp = readdir(dirp)) != NULL) {
|
while ((dp = readdir(dirp)) != NULL) {
|
||||||
/* Skip self and parent */
|
/* Skip self and parent */
|
||||||
if (strcmp(dp->d_name, ".") == 0 ||
|
if (strcmp(dp->d_name, ".") == 0 ||
|
||||||
|
@ -1114,8 +1123,6 @@ redraw(char *path)
|
||||||
sprintf(sort, "by time ");
|
sprintf(sort, "by time ");
|
||||||
else if (sizeorder)
|
else if (sizeorder)
|
||||||
sprintf(sort, "by size ");
|
sprintf(sort, "by size ");
|
||||||
else if (bsizeorder)
|
|
||||||
sprintf(sort, "by content size ");
|
|
||||||
else
|
else
|
||||||
sort[0] = '\0';
|
sort[0] = '\0';
|
||||||
|
|
||||||
|
@ -1132,8 +1139,13 @@ redraw(char *path)
|
||||||
else
|
else
|
||||||
ind[0] = '\0';
|
ind[0] = '\0';
|
||||||
|
|
||||||
|
if (!bsizeorder)
|
||||||
sprintf(cwd, "total %d %s[%s%s]", ndents, sort,
|
sprintf(cwd, "total %d %s[%s%s]", ndents, sort,
|
||||||
dents[cur].name, ind);
|
dents[cur].name, ind);
|
||||||
|
else
|
||||||
|
sprintf(cwd, "total %d by disk usage, %s free [%s%s]",
|
||||||
|
ndents, coolsize(fs_free), dents[cur].name, ind);
|
||||||
|
|
||||||
printmsg(cwd);
|
printmsg(cwd);
|
||||||
} else
|
} else
|
||||||
printmsg("0 items");
|
printmsg("0 items");
|
||||||
|
|
Loading…
Reference in a new issue