/* Started: Wed Mar 23 14:21:23 EDT 2011 */ /* Finished: Wed Mar 23 14:27:38 EDT 2011 */ #include #include #include #include #include #include "dllist.h" void findjim(char *dir) { DIR *d; struct dirent *de; char *fname; Dllist l, tmp; struct stat buf; fname = (char *) malloc(strlen(dir)+300); l = new_dllist(); d = opendir(dir); for (de = readdir(d); de != NULL; de = readdir(d)) { if (strcmp(de->d_name, ".") != 0 && strcmp(de->d_name, "..") != 0) { sprintf(fname, "%s/%s", dir, de->d_name); if (strstr(de->d_name, "jim") != NULL) printf("%s\n", fname); stat(fname, &buf); if (S_ISDIR(buf.st_mode)) dll_append(l, new_jval_s(strdup(fname))); } } closedir(d); dll_traverse(tmp, l) { findjim(tmp->val.s); free(tmp->val.s); } free_dllist(l); free(fname); } int main() { findjim("."); }