From 4b8de32c8576d189eeef5ab22ee70f380d001613 Mon Sep 17 00:00:00 2001 From: Francois Fleuret Date: Fri, 26 Feb 2010 10:57:00 +0100 Subject: [PATCH] Added an option ignore_dotfiles. --- dus.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/dus.c b/dus.c index 338b69b..a4b5d0a 100644 --- a/dus.c +++ b/dus.c @@ -33,14 +33,24 @@ #include #include #include +#include #define BUFFER_SIZE 4096 typedef int64_t size_sum_t; +int ignore_dotfiles = 1; + /********************************************************************/ -size_sum_t file_or_dir_size(char *name) { +int ignore_entry(const char *name) { + return + strcmp(name, ".") == 0 || + strcmp(name, "..") == 0 || + (ignore_dotfiles && name[0] == '.'); +} + +size_sum_t file_or_dir_size(const char *name) { DIR *dir; struct dirent *dir_e; struct stat dummy; @@ -62,8 +72,7 @@ size_sum_t file_or_dir_size(char *name) { if(dir) { while((dir_e = readdir(dir))) { - if(strcmp(dir_e->d_name, ".") && - strcmp(dir_e->d_name, "..")) { + if(!ignore_entry(dir_e->d_name)) { snprintf(subname, BUFFER_SIZE, "%s/%s", name, dir_e->d_name); result += file_or_dir_size(subname); } @@ -197,8 +206,7 @@ int main(int argc, char **argv) { dir = opendir("."); if(dir) { while((dir_e = readdir(dir))) { - if(strcmp(dir_e->d_name, ".") && - strcmp(dir_e->d_name, "..")) { + if(!ignore_entry(dir_e->d_name)) { root = create(dir_e->d_name, root); } } -- 2.20.1