Ver código fonte

LibCore: Add syscall wrapper for mkdir()

Andreas Kling 3 anos atrás
pai
commit
01c2756e9a

+ 15 - 0
Userland/Libraries/LibCore/System.cpp

@@ -465,4 +465,19 @@ ErrorOr<void> symlink(StringView target, StringView link_path)
 #endif
 }
 
+ErrorOr<void> mkdir(StringView path, mode_t mode)
+{
+    if (path.is_null())
+        return Error::from_errno(EFAULT);
+#ifdef __serenity__
+    int rc = syscall(SC_mkdir, path.characters_without_null_termination(), path.length(), mode);
+    HANDLE_SYSCALL_RETURN_VALUE("mkdir"sv, rc, {});
+#else
+    String path_string = path;
+    if (::mkdir(path_string.characters(), mode) < 0)
+        return Error::from_syscall("mkdir"sv, -errno);
+    return {};
+#endif
+}
+
 }

+ 1 - 0
Userland/Libraries/LibCore/System.h

@@ -63,5 +63,6 @@ ErrorOr<void> setgid(gid_t);
 ErrorOr<void> setegid(gid_t);
 ErrorOr<bool> isatty(int fd);
 ErrorOr<void> symlink(StringView target, StringView link_path);
+ErrorOr<void> mkdir(StringView path, mode_t);
 
 }