diff options
| author | 2017-06-22 07:07:51 +0530 | |
|---|---|---|
| committer | 2017-06-22 07:12:40 +0530 | |
| commit | ad4e35215b850252059f93d08b5c4566986ef508 (patch) | |
| tree | 8a181fb3eaf30a31c987e9af399eed82e34ec0c8 | |
| parent | 90680cb3709aa1cdc9f6ae1b11ed903cb748bc1a (diff) | |
| download | nnn-ad4e35215b850252059f93d08b5c4566986ef508.tar.gz | |
Add if blocks used (helps in large dirs)
| -rw-r--r-- | nnn.c | 19 |
1 files changed, 10 insertions, 9 deletions
@@ -168,7 +168,7 @@ static char *copier; static char *editor; static char *desktop_manager; static off_t blk_size; -static off_t dir_size; +static off_t dir_blocks; static size_t fs_free; static uint open_max; static bm bookmark[MAX_BM]; @@ -1428,7 +1428,7 @@ static int sum_bsizes(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf) { - if (typeflag == FTW_F || typeflag == FTW_D) + if (sb->st_blocks && (typeflag == FTW_F || typeflag == FTW_D)) blk_size += sb->st_blocks; return 0; @@ -1480,7 +1480,7 @@ dentfill(char *path, struct entry **dents, n = 0; if (cfg.bsizeorder) - dir_size = 0; + dir_blocks = 0; dirp = opendir(path); if (dirp == NULL) @@ -1509,11 +1509,11 @@ dentfill(char *path, struct entry **dents, if (nftw(newpath, sum_bsizes, open_max, FTW_MOUNT | FTW_PHYS) == -1) { printmsg("nftw(3) failed"); - dir_size += sb.st_blocks; + dir_blocks += sb.st_blocks; } else - dir_size += blk_size; - } else - dir_size += sb.st_blocks; + dir_blocks += blk_size; + } else if (sb.st_blocks) + dir_blocks += sb.st_blocks; continue; } @@ -1543,7 +1543,8 @@ dentfill(char *path, struct entry **dents, } else (*dents)[n].bsize = sb.st_blocks; - dir_size += (*dents)[n].bsize; + if ((*dents)[n].bsize) + dir_blocks += (*dents)[n].bsize; } ++n; @@ -1695,7 +1696,7 @@ redraw(char *path) replace_escape(dents[cur].name), ind); else { i = sprintf(g_buf, "du: %s in dir, ", - coolsize(dir_size << 9)); + coolsize(dir_blocks << 9)); sprintf(g_buf + i, "%s free [%s%s]", coolsize(fs_free), replace_escape(dents[cur].name), ind); } |