From 9695ea005d4af93dcd60f74f10fd3c54499a182f Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Thu, 11 Nov 2021 16:31:58 -0800 Subject: chore: split up base library into individual files for smaller binaries --- sys/base/fs/walker.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 sys/base/fs/walker.c (limited to 'sys/base/fs/walker.c') diff --git a/sys/base/fs/walker.c b/sys/base/fs/walker.c new file mode 100644 index 0000000..65ff391 --- /dev/null +++ b/sys/base/fs/walker.c @@ -0,0 +1,39 @@ +#include "internal.h" + +static +void +delete(fs·History *h) +{ + SET_FREE(h, sys·Memory, nil); +} + +int +fs·init(fs·Walker *fs, char *path) +{ + fs->base = fs->end = fs->path; + + if(!path || !path[0]){ + path = getcwd(fs->path, arrlen(fs->path)); + if (!path) + return 1; + fs->end += strlen(path); + }else + fs->end = str·copyn(fs->base, path, arrlen(fs->path)); + + if(fs->path[0] != '/') + fs->fd = AT_FDCWD; + + if(!fs->hist && !(fs->flags & fs·nolinks)) + fs->hist = calloc(1, sizeof(*fs->hist)); + + return 0; +} + +void +fs·fini(fs·Walker *fs) +{ + if(fs->hist){ + delete(fs->hist); + free(fs->hist); + } +} -- cgit v1.2.1