summaryrefslogtreecommitdiff
path: root/kernel/scalls/stat.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/scalls/stat.c')
-rw-r--r--kernel/scalls/stat.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/kernel/scalls/stat.c b/kernel/scalls/stat.c
new file mode 100644
index 0000000..0850151
--- /dev/null
+++ b/kernel/scalls/stat.c
@@ -0,0 +1,13 @@
+#include <errno.h>
+#include <fs/vfs.h>
+#include <scalls/stat.h>
+
+int syscall_stat(SYS_STAT_PARAMS *args) {
+ const char *pathname = copy_and_allocate_user_string(args->pathname);
+ struct stat *statbuf = args->statbuf;
+ vfs_inode_t *i = vfs_internal_open(pathname);
+ if (!i)
+ return -ENOENT;
+ statbuf->st_size = i->file_size;
+ return 0;
+}