sbase

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

commit a6e5696cbda5a29f94a98563a8fb63987b94edde
parent 9e321b69d2a4f2af1e067c1f58a0c8237e47a248
Author: sin <sin@2f30.org>
Date:   Thu, 17 Oct 2013 18:03:01 +0100

Fix indentation in du(1)

Diffstat:
Mdu.c | 62+++++++++++++++++++++++++++++++++-----------------------------
1 file changed, 33 insertions(+), 29 deletions(-)

diff --git a/du.c b/du.c @@ -109,38 +109,42 @@ du(const char *path) eprintf("stat: %s:", path); n = 512 * st.st_blocks / blksize; - if (S_ISDIR(st.st_mode)) { - dp = opendir(path); - if (!dp) { - fprintf(stderr, "opendir: %s: %s\n", path, - strerror(errno)); - } else { - cwd = push(path); - while ((dent = readdir(dp))) { - if (strcmp(dent->d_name, ".") == 0 || - strcmp(dent->d_name, "..") == 0) - continue; - if (lstat(dent->d_name, &st) < 0) - eprintf("stat: %s:", dent->d_name); - if (S_ISDIR(st.st_mode)) { - n += du(dent->d_name); - } else { - m = 512 * st.st_blocks / blksize; - n += m; - if (aflag && !sflag) { - if (S_ISLNK(st.st_mode)) - snprintf(file, sizeof(file), "%s/%s", cwd, dent->d_name); - else - realpath(dent->d_name, file); - print(m, file); - } - } - } - pop(cwd); - closedir(dp); + if (!S_ISDIR(st.st_mode)) + goto done; + + dp = opendir(path); + if (!dp) { + fprintf(stderr, "opendir: %s: %s\n", path, + strerror(errno)); + goto done; + } + + cwd = push(path); + while ((dent = readdir(dp))) { + if (strcmp(dent->d_name, ".") == 0 || + strcmp(dent->d_name, "..") == 0) + continue; + if (lstat(dent->d_name, &st) < 0) + eprintf("stat: %s:", dent->d_name); + if (S_ISDIR(st.st_mode)) { + n += du(dent->d_name); + continue; + } + m = 512 * st.st_blocks / blksize; + n += m; + if (aflag && !sflag) { + if (S_ISLNK(st.st_mode)) + snprintf(file, sizeof(file), "%s/%s", + cwd, dent->d_name); + else + realpath(dent->d_name, file); + print(m, file); } } + pop(cwd); + closedir(dp); +done: if (!sflag) print(n, realpath(path, file)); return n;