X-Git-Url: http://git.thejh.net/?p=cleanmysourcetree.git;a=blobdiff_plain;f=cleanmysourcetree.c;h=f989b72078b18b119f15b7d84ba780be569d4ce3;hp=defb428f3616a05b9153a9a822682e0e681bb421;hb=a005b735551edafb2bd47260bf34cccbc119fc9b;hpb=59f0559bbdf5ba176ed26fb0aa77500a3f8c27f4 diff --git a/cleanmysourcetree.c b/cleanmysourcetree.c index defb428..f989b72 100644 --- a/cleanmysourcetree.c +++ b/cleanmysourcetree.c @@ -81,7 +81,7 @@ static void add_dir(const char *dir_path) { } static void add_files_recursive(const char *current_path) { - DIR *d = opendir((current_path[0] == '\0') ? "." : current_path); + DIR *d = opendir(current_path); if (d == NULL) err(1, "unable to open directory '%s'", current_path); @@ -91,16 +91,12 @@ static void add_files_recursive(const char *current_path) { if (readdir_r(d, &entry, &r_entry)) errx(1, "readdir_r failed"); if (r_entry == NULL) - return; + break; if (strcmp(entry.d_name, ".") == 0 || strcmp(entry.d_name, "..") == 0) continue; char file_path[strlen(current_path) + 1 + strlen(entry.d_name) + 1]; - if (current_path[0] == '\0') { - strcpy(file_path, entry.d_name); - } else { - sprintf(file_path, "%s/%s", current_path, entry.d_name); - } + sprintf(file_path, "%s/%s", current_path, entry.d_name); struct stat st; if (lstat(file_path, &st)) @@ -113,12 +109,13 @@ static void add_files_recursive(const char *current_path) { // First recurse, then add the watch. This avoids spamming ourselves with irrelevant // directory open events. add_files_recursive(file_path); - add_dir(file_path); break; default: break; } } + add_dir(current_path); + closedir(d); } volatile bool child_quit = false; @@ -158,7 +155,7 @@ int main(int argc, char **argv) { inotify_fd = inotify_init1(IN_CLOEXEC | IN_NONBLOCK); if (inotify_fd == -1) err(1, "unable to open inotify fd"); - add_files_recursive(""); + add_files_recursive("."); sigset_t sigchild_mask; sigemptyset(&sigchild_mask);