diff options
Diffstat (limited to 'plugins/uade2/uade-2.13/src/frontends/common/unixwalkdir.c')
-rw-r--r-- | plugins/uade2/uade-2.13/src/frontends/common/unixwalkdir.c | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/plugins/uade2/uade-2.13/src/frontends/common/unixwalkdir.c b/plugins/uade2/uade-2.13/src/frontends/common/unixwalkdir.c deleted file mode 100644 index 292976d7..00000000 --- a/plugins/uade2/uade-2.13/src/frontends/common/unixwalkdir.c +++ /dev/null @@ -1,69 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <sys/types.h> -#include <dirent.h> -#include <sys/stat.h> -#include <unistd.h> -#include <string.h> - -#include <unixwalkdir.h> - -void *uade_walk_directories(const char *dirname, - void *(*fn) (const char *file, - enum uade_wtype wtype, void *opaque), - void *opaque) -{ - char *dename; - DIR *dir; - size_t namelen; - struct dirent *de; - void *ret = NULL; - struct stat st; - enum uade_wtype wtype; - - namelen = strlen(dirname) + 256 + 2; - if ((dename = malloc(namelen)) == NULL) - return NULL; - - if ((dir = opendir(dirname)) == NULL) - return NULL; - - while ((de = readdir(dir)) != NULL) { - - if (strcmp(de->d_name, ".") == 0 - || strcmp(de->d_name, "..") == 0) - continue; - - if (snprintf(dename, namelen, "%s/%s", dirname, de->d_name) >= - namelen) { - fprintf(stderr, "interesting: too long a filename\n"); - continue; - } - - if (lstat(dename, &st)) - continue; - - if (S_ISREG(st.st_mode)) - wtype = UADE_WALK_REGULAR_FILE; - else if (S_ISDIR(st.st_mode)) - wtype = UADE_WALK_DIRECTORY; - else if (S_ISLNK(st.st_mode)) - wtype = UADE_WALK_SYMLINK; - else - wtype = UADE_WALK_SPECIAL; - - if ((ret = fn(dename, wtype, opaque)) != NULL) - break; - - if (wtype == UADE_WALK_DIRECTORY) { - if ((ret = - uade_walk_directories(dename, fn, opaque)) != NULL) - break; - } - } - - closedir(dir); - free(dename); - - return ret; -} |