diff options
| -rw-r--r-- | cftw.c | 7 | ||||
| -rw-r--r-- | main.c | 3 |
2 files changed, 9 insertions, 1 deletions
@@ -57,7 +57,12 @@ int cftw(const char *const dirpath, int (*const fn)(const char *, fprintf(stderr, "%s: stat(2) %s: %s\n", __func__, path, strerror(errno)); else if (S_ISDIR(sb.st_mode)) - ret = cftw(d.str, fn, user); + { + if ((ret = cftw(d.str, fn, user))) + ; + else if ((ret = fn(d.str, &sb, user))) + ; + } else if (S_ISREG(sb.st_mode)) ret = fn(d.str, &sb, user); else @@ -768,6 +768,9 @@ end: static int add_length(const char *const fpath, const struct stat *const sb, void *const user) { + if (!S_ISREG(sb->st_mode)) + return 0; + unsigned long long *const l = user; *l += sb->st_size; |
