sbase

suckless unix tools
git clone git://git.suckless.org/sbase
Log | Files | Refs | README | LICENSE

commit 830ca05c25984586f3578f11a7a8038304d71719
parent a5612b0d08b9abb4e65acaa3d322581af2fd7a39
Author: Michael Forney <mforney@mforney.org>
Date:   Wed, 14 Dec 2016 19:40:03 -0800

du: Don't print 0 entry if stat of named file fails

Previously:

	$ du doesntexist
	du: lstat doesntexist: No such file or directory
	0       doesntexist

Now:

	$ du doesntexist
	du: lstat doesntexist: No such file or directory

Also, just call nblks one time.

Diffstat:
du.c | 15++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/du.c b/du.c @@ -35,16 +35,19 @@ nblks(blkcnt_t blocks) } static void -du(const char *path, struct stat *st, void *total, struct recursor *r) +du(const char *path, struct stat *st, void *data, struct recursor *r) { - off_t subtotal = 0; + off_t *total = data, subtotal; + subtotal = nblks(st->st_blocks); if (S_ISDIR(st->st_mode)) recurse(path, &subtotal, r); - *((off_t *)total) += subtotal + nblks(st->st_blocks); + *total += subtotal; - if (!sflag && r->depth <= maxdepth && r->depth && (S_ISDIR(st->st_mode) || aflag)) - printpath(subtotal + nblks(st->st_blocks), path); + if (!r->depth) + printpath(*total, path); + else if (!sflag && r->depth <= maxdepth && (S_ISDIR(st->st_mode) || aflag)) + printpath(subtotal, path); } static void @@ -102,12 +105,10 @@ main(int argc, char *argv[]) if (!argc) { recurse(".", &n, &r); - printpath(n, "."); } else { for (; *argv; argc--, argv++) { n = 0; recurse(*argv, &n, &r); - printpath(n, *argv); } }