libc

my libc
git clone git://git.evenfri.duckdns.org/libc.git
Log | Files | Refs | README

commit 0ddeaa888fbb0e98229c24619fddd5d44dac3ede
parent 3d10790d4689db3a8b55c253087ca75326f3e5d7
Author: evenfri <evenfri256@gmail.com>
Date:   Mon, 10 Aug 2026 03:56:18 +0800

add utime

Diffstat:
Mlibc.h | 10++++++++++
Mmkfile | 1+
Autime.c | 15+++++++++++++++
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; +}