From 2cdc815322af6c7c22b9ceb371d9c7b2a4853c0e Mon Sep 17 00:00:00 2001 From: dzwdz Date: Fri, 29 Jul 2022 19:06:23 +0200 Subject: syscall/write: WRITE_TRUNCATE --- src/user/app/init/driver/tmpfs.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'src/user/app/init/driver/tmpfs.c') diff --git a/src/user/app/init/driver/tmpfs.c b/src/user/app/init/driver/tmpfs.c index e4c079c..7bda37f 100644 --- a/src/user/app/init/driver/tmpfs.c +++ b/src/user/app/init/driver/tmpfs.c @@ -99,11 +99,7 @@ void tmpfs_drv(void) { _syscall_fs_respond(NULL, -1, 0); break; } - if (res.len == 0) { - _syscall_fs_respond(NULL, 0, 0); - break; - } - if (!ptr->buf) { + if (res.len > 0 && !ptr->buf) { ptr->buf = malloc(256); if (!ptr->buf) { _syscall_fs_respond(NULL, -1, 0); @@ -121,8 +117,9 @@ void tmpfs_drv(void) { } memcpy(ptr->buf + res.offset, buf, res.len); - if (ptr->size < res.offset + res.len) + if ((res.flags & WRITE_TRUNCATE) || ptr->size < res.offset + res.len) { ptr->size = res.offset + res.len; + } _syscall_fs_respond(NULL, res.len, 0); break; -- cgit v1.2.3