From ecc54f4be44fa1fd1ce79b0458a04eef2667cba8 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sat, 3 Sep 2022 23:12:31 +0200 Subject: user: implement a basic mkdir --- src/user/lib/sysstat.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/user/lib/sysstat.c (limited to 'src/user/lib/sysstat.c') diff --git a/src/user/lib/sysstat.c b/src/user/lib/sysstat.c new file mode 100644 index 0000000..df192c5 --- /dev/null +++ b/src/user/lib/sysstat.c @@ -0,0 +1,24 @@ +#include +#include +#include +#include + +int mkdir(const char *path, mode_t mode) { + // TODO error when directory already exits + // TODO fopen-like wrapper that calls open() with a processed path + (void)mode; + size_t plen = strlen(path); + char *tmp = NULL; + /* ensure trailing slash */ + if (plen >= 1 && path[plen - 1] != '/') { + tmp = malloc(plen + 2); + memcpy(tmp, path, plen); + tmp[plen] = '/'; + tmp[plen + 1] = '\0'; + path = tmp; + } + FILE *f = fopen(path, "a"); /* sets errno */ + if (f) fclose(f); + free(tmp); + return f == NULL ? -1 : 0; +} -- cgit v1.2.3