]> git.proxmox.com Git - wasi-libc.git/blobdiff - libc-bottom-half/cloudlibc/src/libc/sys/stat/mkdirat.c
WASI libc prototype implementation.
[wasi-libc.git] / libc-bottom-half / cloudlibc / src / libc / sys / stat / mkdirat.c
diff --git a/libc-bottom-half/cloudlibc/src/libc/sys/stat/mkdirat.c b/libc-bottom-half/cloudlibc/src/libc/sys/stat/mkdirat.c
new file mode 100644 (file)
index 0000000..41c5ba8
--- /dev/null
@@ -0,0 +1,30 @@
+// Copyright (c) 2015-2016 Nuxi, https://nuxi.nl/
+//
+// SPDX-License-Identifier: BSD-2-Clause
+
+#include <common/errno.h>
+
+#include <sys/stat.h>
+
+#include <wasi/core.h>
+#include <errno.h>
+#include <string.h>
+
+#ifdef __wasilibc_unmodified_upstream
+int mkdirat(int fd, const char *path, ...) {
+#else
+int mkdirat(int fd, const char *path, mode_t mode) {
+#endif
+#ifdef __wasilibc_unmodified_upstream // __wasi_path_create_directory
+  __wasi_errno_t error = __wasi_file_create(
+      fd, path, strlen(path), __WASI_FILETYPE_DIRECTORY);
+#else
+  __wasi_errno_t error = __wasi_path_create_directory(
+      fd, path, strlen(path));
+#endif
+  if (error != 0) {
+    errno = errno_fixup_directory(fd, error);
+    return -1;
+  }
+  return 0;
+}