commit 0ddeaa888fbb0e98229c24619fddd5d44dac3ede
parent 3d10790d4689db3a8b55c253087ca75326f3e5d7
Author: evenfri <evenfri256@gmail.com>
Date: Mon, 10 Aug 2026 03:56:18 +0800
add utime
Diffstat:
3 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/libc.h b/libc.h
@@ -32,6 +32,7 @@ struct linux_dirent64 {
#define o_wronly 01
#define o_rdwr 02
#define o_creat 0100
+#define o_excl 0x800
#define o_directory 0200000
/* syscall numbers */
@@ -42,6 +43,7 @@ struct linux_dirent64 {
#define sys_mmap 9
#define sys_munmap 11
#define sys_brk 12
+#define sys_utime 30
#define sys_clone 56
#define sys_execve 59
#define sys_exit 60
@@ -100,6 +102,14 @@ void free(void *ptr);
void* calloc(size_t nmemb, size_t size);
void* realloc(void *ptr, size_t size);
+/* utime */
+struct utimbuf {
+ int actime;
+ int modtime;
+};
+
+int utime(const char *path, const struct utimbuf *times);
+
/* string functions */
size_t strlen(const char *str);
char *strchr(const char *s, int c);
diff --git a/mkfile b/mkfile
@@ -27,6 +27,7 @@ ofiles = start.$o \
getcwd.$o \
chdir.$o \
getdents.$o \
+ utime.$o \
errno.$o \
strlen.$o \
strchr.$o \
diff --git a/utime.c b/utime.c
@@ -0,0 +1,15 @@
+/*
+ * utime.c - update timestamp of file
+ * Copyright (C) 2026. All rights reserved.
+ */
+
+#include "libc.h"
+
+int utime(const char *path, const struct utimbuf *times) {
+ int ret = syscall(sys_utime, path, times);
+ if (ret < 0) {
+ errno = -ret;
+ return -1;
+ }
+ return ret;
+}