instow

:)
git clone https://git.sr.ht/~ashymad/instow
Log | Files | Refs | LICENSE

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:
Acompile_flags.txt | 1+
Asrc/native/nftw.c | 23+++++++++++++++++++++++
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); }