summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--scrap/find.c48
1 files changed, 48 insertions, 0 deletions
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 <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;
+}
s from June 22 (and the few days after that)June McEnroe 2024-06-30Accommodate lower-case .jpg filesJune McEnroe 2024-06-23Add another BACKXWASH showJune McEnroe 2024-06-16Update bioJune McEnroe 2024-06-15Add photo descriptions from June 12June McEnroe 2024-06-10Add first roll of film from June 8June McEnroe 2024-06-10Cope with not having an EXIF infoJune McEnroe 2024-06-10Resize using target pixel counts for consistencyJune McEnroe 2024-06-10Add The Girl Who Was Convinced...June McEnroe 2024-06-09Add photos from May 31June McEnroe 2024-06-09Use monospace on photo pagesJune McEnroe 2024-06-09Put lens and (future) film at the tops of photo pagesJune McEnroe 2024-05-22Remove use of sysexits.hJune McEnroe 2024-05-22Add photo descriptions from 05-03 and 05-06June McEnroe 2024-05-21Fix = precedence in whenJune McEnroe