/* See LICENSE file for copyright and license details. */ #include #include #include #include #include #include "../util.h" void recurse(const char *path, void (*fn)(const char *)) { char *cwd; struct dirent *d; DIR *dp; if(!(dp = opendir(path))) { if(errno == ENOTDIR) return; else eprintf("opendir %s:", path); } cwd = agetcwd(); if(chdir(path) == -1) eprintf("chdir %s:", path); while((d = readdir(dp))) if(strcmp(d->d_name, ".") && strcmp(d->d_name, "..")) fn(d->d_name); closedir(dp); if(chdir(cwd) == -1) eprintf("chdir %s:", cwd); free(cwd); }