#include "internal.h" static void delete(fs·History *h) { SET_FREE(h, base·Memory, nil); } int fs·init(fs·Walker *fs, char *path) { fs->base = fs->end = fs->path; if(!path || !path[0]){ if(sys·cwd(fs->path, arrlen(fs->path))) return 1; fs->end += str·len(path); }else fs->end = str·ncopy(fs->base, arrlen(fs->path), path); if(fs->path[0] != '/') fs->fd = sys·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); } }