commit 422fc9d3e9ffc3dacb72e8074c5c2b0cf3b2fb2a
parent 2d5ee6f51710e487453984a19c8f1c62e098ef1a
Author: evenfri <evenfri256@gmail.com>
Date: Tue, 11 Aug 2026 02:19:45 +0800
add rmdir
Diffstat:
3 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/libc.h b/libc.h
@@ -51,6 +51,7 @@ struct linux_dirent64 {
#define sys_getcwd 79
#define sys_chdir 80
#define sys_mkdir 83
+#define sys_rmdir 84
#define sys_unlink 87
#define sys_mount 165
#define sys_getdents64 217
@@ -90,6 +91,7 @@ int mount(const char *source,
const void *data);
int chdir(const char *path);
int mkdir(const char *path, unsigned int mode);
+int rmdir(const char *path);
int unlink(const char *path);
char *getcwd(char *buf, size_t size);
int getdents64(int fd, struct linux_dirent64 *dirp, unsigned int count);
diff --git a/mkfile b/mkfile
@@ -28,6 +28,7 @@ ofiles = start.$o \
getcwd.$o \
chdir.$o \
mkdir.$o \
+ rmdir.$o \
unlink.$o \
getdents.$o \
utime.$o \
diff --git a/rmdir.c b/rmdir.c
@@ -0,0 +1,17 @@
+/*
+ * rmdir.c - rmdir system call
+ * Copyright (C) 2026. All rights reserved.
+ */
+
+#include "libc.h"
+
+int rmdir(const char *path) {
+ int ret = syscall(sys_rmdir, path);
+
+ if (ret < 0) {
+ errno = -ret;
+ return -1;
+ }
+
+ return ret;
+}