commit 1e1a83509093a266a0ec296003e9b87d83b36f06
parent 452fa4ba4fed9ee7078d2798b01dfeae4f710a4e
Author: Ashymad <szymon.mikulicz@posteo.net>
Date: Thu, 12 Mar 2026 22:50:40 +0100
Start work on the native nftw
Diffstat:
2 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/compile_flags.txt b/compile_flags.txt
@@ -0,0 +1 @@
+-I/home/shyman/.local/include
diff --git a/src/native/nftw.c b/src/native/nftw.c
@@ -0,0 +1,23 @@
+#include <ftw.h>
+#include <janet.h>
+
+static JanetFunction *janet_callback = NULL;
+
+int callback(const char *path, const struct stat *st, int flag,
+ struct FTW *info) {
+ return janet_unwrap_integer(janet_call(
+ janet_callback, 2,
+ (const Janet[]){janet_wrap_string(path), janet_wrap_integer(flag)}));
+}
+
+static Janet c_nftw(int32_t argc, Janet *argv) {
+ janet_fixarity(argc, 2);
+ janet_callback = janet_unwrap_function(argv[2]);
+ return janet_wrap_integer(nftw((const char *)janet_unwrap_string(argv[1]),
+ callback, 1024, FTW_DEPTH));
+}
+
+static JanetReg cfuns[] = {
+ {"nftw", c_nftw, "(nftw path callback)\n\nruns nftw"}, {NULL, NULL, NULL}};
+
+JANET_MODULE_ENTRY(JanetTable *env) { janet_cfuns(env, "nftw", cfuns); }