From 852a5b237116e8b53ae18ea8ea00505e44b40dfe Mon Sep 17 00:00:00 2001 From: hachem Date: Thu, 8 Oct 2026 22:23:55 +0200 Subject: feat: file descriptor and proper stdio --- user/chat.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 user/chat.c (limited to 'user/chat.c') diff --git a/user/chat.c b/user/chat.c new file mode 100644 index 0000000..67bc727 --- /dev/null +++ b/user/chat.c @@ -0,0 +1,33 @@ +#include "user.h" + +void _start(const char* arg, unsigned long arglen) +{ + if (arglen == 0) + { + put("usage: run chat \n"); + sys_exit(1); + } + + char path[128]; + unsigned long i = 0; + for (; i < arglen && i < sizeof(path) - 1; i++) + path[i] = arg[i]; + path[i] = 0; + + long fd = sys_open(path, 0); + if (fd < 0) + { + put("chat: "); + put(path); + put(": cannot open\n"); + sys_exit(1); + } + + char buffer[256]; + long n; + while ((n = sys_read(fd, buffer, sizeof(buffer))) > 0) + sys_write(1, buffer, (unsigned long)n); + + sys_close(fd); + sys_exit(0); +} -- cgit v1.3