From 78ff2a7f351be187be693177e5db5f4985f964c3 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Mon, 2 Jul 2018 22:25:55 -0400 Subject: Add find scrap --- scrap/find.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 scrap/find.c diff --git a/scrap/find.c b/scrap/find.c new file mode 100644 index 00000000..92744b17 --- /dev/null +++ b/scrap/find.c @@ -0,0 +1,48 @@ +#include +#include +#include +#include +#include +#include + +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; +} -- cgit 1.4.1 lass='form'>
Commit message (Expand)Author
2021-01-14Add igp gopher server for text.causal.agencyJune McEnroe
2021-01-13Clean up html.shJune McEnroe
2021-01-13Remove ttpreJune McEnroe
2021-01-13Remove hiJune McEnroe
2021-01-13Add gg mapping to viJune McEnroe
2021-01-13Match \ before newline in string as EscapeJune McEnroe
2021-01-13Remove -t flag from ctags commandsJune McEnroe
2021-01-13Match strftime format specifiersJune McEnroe
2021-01-13Switch git.causal.agency to hilex and htagmlJune McEnroe
2021-01-13Try to return make substitutions as single tokensJune McEnroe
2021-01-13Shorten hilex class namesJune McEnroe
2021-01-13Move text "lexer" to hilex.cJune McEnroe
2021-01-13Try to return strings as single tokensJune McEnroe
2021-01-13Match [] as Operator in C lexerJune McEnroe
2021-01-13Fix C lexer to require a digit in a float literalJune McEnroe
2021-01-13Support long double in c.shJune McEnroe
2021-01-13Update Terminal.app coloursJune McEnroe
2021-01-13Increase dark white brightness slightlyJune McEnroe
2021-01-13Add hilex example to htagml manualJune McEnroe
2021-01-12Style causal.agency like bin HTMLJune McEnroe
2021-01-12Avoid matching tag text inside HTML elementsJune McEnroe
2021-01-12Use hilex for up -hJune McEnroe
2021-01-12Use hilex for bin HTMLJune McEnroe
2021-01-12Don't output a pre in hilex by defaultJune McEnroe
2021-01-12Move hilex out of hilex directoryJune McEnroe
2021-01-12Consolidate hilex formatters into hilex.cJune McEnroe
2021-01-12Remove hacky tagging from hilexJune McEnroe
2021-01-12Add htagml -iJune McEnroe
2021-01-12Render tag index in HTMLJune McEnroe
2021-01-12Add htagml -xJune McEnroe
2021-01-12Prevent matching the same tag twiceJune McEnroe
2021-01-12Process htagml file line by lineJune McEnroe
2021-01-12Split fields by tab onlyJune McEnroe
2021-01-12List both Makefile and html.sh under README.7June McEnroe
2021-01-12Add htagml exampleJune McEnroe
2021-01-12Use mandoc and htagml for bin htmlJune McEnroe
2021-01-12Add htagmlJune McEnroe
2021-01-12Replace causal.agency with a simple mdoc pageJune McEnroe
2021-01-11Publish "Using vi"June McEnroe
2021-01-11Enable diff.colorMovedJune McEnroe
2021-01-10Set less search case-insensitiveJune McEnroe
2021-01-10Set EXINITJune McEnroe
2021-01-09Add c -t flag to print expression typeJune McEnroe
2021-01-05Update taglineJune McEnroe