diff options
Diffstat (limited to 'scrap')
-rw-r--r-- | scrap/find.c | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/scrap/find.c b/scrap/find.c deleted file mode 100644 index 92744b17..00000000 --- a/scrap/find.c +++ /dev/null @@ -1,48 +0,0 @@ -#include <dirent.h> -#include <err.h> -#include <fcntl.h> -#include <stdio.h> -#include <stdlib.h> -#include <sysexits.h> - -static const char *path[1024]; -static size_t depth; - -static void traverse(int parent, const char *name) { - path[depth++] = name; - - int fd = openat(parent, name, O_RDONLY); - if (fd < 0) err(EX_NOINPUT, "%s", name); - - DIR *dir = fdopendir(fd); - if (!dir) err(EX_IOERR, "%s", name); - - struct dirent *entry; - while (NULL != (entry = readdir(dir))) { - if (entry->d_namlen == 1 && entry->d_name[0] == '.') continue; - if ( - entry->d_namlen == 2 - && entry->d_name[0] == '.' - && entry->d_name[1] == '.' - ) continue; - - if (entry->d_type == DT_DIR) { - traverse(fd, entry->d_name); - } - - for (size_t i = 0; i < depth; ++i) { - printf("%s/", path[i]); - } - printf("%s\n", entry->d_name); - } - // TODO: Check error. - - closedir(dir); - depth--; -} - -int main(int argc, char *argv[]) { - if (argc < 2) return EX_USAGE; - traverse(AT_FDCWD, argv[1]); - return EX_OK; -} |