in src/bench.c [70:94]
static size_t file_size_rec(const char *dir) {
struct stat buf;
errno_assert(stat(dir, &buf));
if (S_ISREG(buf.st_mode)) {
return buf.st_size;
} else if (S_ISDIR(buf.st_mode)) {
size_t sum = 0;
DIR *tmpd = opendir(dir);
if (tmpd != NULL) {
struct dirent *d;
while ((d = readdir(tmpd))) {
char subdir[100];
sprintf(subdir, "%s/%s", dir, d->d_name);
if(strcmp(d->d_name, ".") &&
strcmp(d->d_name, "..")) {
sum += file_size_rec(subdir);
}
}
closedir(tmpd);
}
return sum;
} else {
return 0;
}
}