instow

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

commit fa26fe68a5611827db1ce0c2ff791ab70667c778
parent 6f2c6913373d2c7047d484579d4bd42f4d7d4b55
Author: Szymon Mikulicz <szymon.mikulicz@posteo.net>
Date:   Fri, 13 Mar 2026 23:38:12 +0100

nftw formatted

Diffstat:
Msrc/native/nftw.c | 93++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
1 file changed, 54 insertions(+), 39 deletions(-)

diff --git a/src/native/nftw.c b/src/native/nftw.c @@ -8,44 +8,56 @@ static JanetFunction *janet_callback = NULL; -static const char * flagname(int flag) { - switch (flag) { - case FTW_F: return "f"; - case FTW_D: return "d"; - case FTW_DNR: return "dnr"; - case FTW_DP: return "dp"; - case FTW_NS: return "ns"; - case FTW_SL: return "sl"; - case FTW_SLN: return "sln"; - default: return "err"; - } +static const char *flagname(int flag) { + switch (flag) { + case FTW_F: + return "f"; + case FTW_D: + return "d"; + case FTW_DNR: + return "dnr"; + case FTW_DP: + return "dp"; + case FTW_NS: + return "ns"; + case FTW_SL: + return "sl"; + case FTW_SLN: + return "sln"; + default: + return "err"; + } } -int callback(const char *path, const struct stat *st, int flag, struct FTW *info) { - JanetTable * stattab = janet_table(0); +int callback(const char *path, const struct stat *st, int flag, + struct FTW *info) { + JanetTable *stattab = janet_table(0); - if (st) { - for (const struct OsStatGetter *sg = os_stat_getters; sg->name != NULL; sg++) { - janet_table_put(stattab, janet_ckeywordv(sg->name), sg->fn(st)); - } + if (st) { + for (const struct OsStatGetter *sg = os_stat_getters; sg->name != NULL; + sg++) { + janet_table_put(stattab, janet_ckeywordv(sg->name), sg->fn(st)); } + } - JanetTable * ftwtab = janet_table(0); - janet_table_put(ftwtab, janet_ckeywordv("base"), janet_wrap_integer(info->base)); - janet_table_put(ftwtab, janet_ckeywordv("level"), janet_wrap_integer(info->level)); + JanetTable *ftwtab = janet_table(0); + janet_table_put(ftwtab, janet_ckeywordv("base"), + janet_wrap_integer(info->base)); + janet_table_put(ftwtab, janet_ckeywordv("level"), + janet_wrap_integer(info->level)); - return janet_unwrap_integer( - janet_call( + return janet_unwrap_integer(janet_call( janet_callback, 4, - (const Janet[]){ - janet_cstringv(path), - st ? janet_wrap_table(stattab) : janet_wrap_nil(), - janet_ckeywordv(flagname(flag)), - janet_wrap_table(ftwtab) - })); + (const Janet[]){janet_cstringv(path), + st ? janet_wrap_table(stattab) : janet_wrap_nil(), + janet_ckeywordv(flagname(flag)), + janet_wrap_table(ftwtab)})); } -struct {const char* name; int value;} flagnames[] = { +struct { + const char *name; + int value; +} flagnames[] = { {"chdir", FTW_CHDIR}, {"depth", FTW_DEPTH}, {"mount", FTW_MOUNT}, @@ -55,24 +67,27 @@ struct {const char* name; int value;} flagnames[] = { static Janet c_nftw(int32_t argc, Janet *argv) { janet_arity(argc, 3, 7); - int flags = 0; + int flags = 0; - for (int i = 3; i < argc; i++) { - for (int j = 0; j < sizeof(flagnames)/sizeof(flagnames[0]); j++) { - if (strcmp((const char*)janet_unwrap_keyword(argv[i]), flagnames[j].name) == 0) { - flags |= flagnames[j].value; - break; - } - } + for (int i = 3; i < argc; i++) { + for (int j = 0; j < sizeof(flagnames) / sizeof(flagnames[0]); j++) { + if (strcmp((const char *)janet_unwrap_keyword(argv[i]), + flagnames[j].name) == 0) { + flags |= flagnames[j].value; + break; + } } + } janet_callback = janet_unwrap_function(argv[1]); return janet_wrap_integer(nftw((const char *)janet_unwrap_string(argv[0]), - callback, janet_unwrap_integer(argv[2]), flags)); + callback, janet_unwrap_integer(argv[2]), + flags)); } static JanetReg cfuns[] = { - {"nftw", c_nftw, "(nftw path callback fd_limit & flags)\n\nruns nftw"}, {NULL, NULL, NULL}}; + {"nftw", c_nftw, "(nftw path callback fd_limit & flags)\n\nruns nftw"}, + {NULL, NULL, NULL}}; JANET_MODULE_ENTRY(JanetTable *env) { janet_cfuns(env, "nftw", cfuns); }