From a95b233c68ecdf30cfd7c8c2e68341b41129acbf Mon Sep 17 00:00:00 2001 From: IonutParau Date: Mon, 23 Mar 2026 11:41:39 +0100 Subject: [PATCH] basic changes --- TODO.md | 1 + data/drive.img | Bin 65536 -> 0 bytes src/main.c | 7 ++++++- src/neonucleus.c | 4 +++- 4 files changed, 10 insertions(+), 2 deletions(-) delete mode 100644 data/drive.img diff --git a/TODO.md b/TODO.md index a67754c..8c3ab9a 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,6 @@ # For MVP functionality +- write a tester OS, basically a menu with tests to run - stop doing linear scans and do hashmaps smh (ls /dev is awfully slow and this MIGHT be why) - volatile filesystem - device info diff --git a/data/drive.img b/data/drive.img deleted file mode 100644 index c97c12f9b0a24bfc19c74a2b265a97c924137775..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65536 zcmeIufdBvi0Dz$VsTV1P3IhfV7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ u0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFi-;k4*&rG diff --git a/src/main.c b/src/main.c index 6d69684..8d8727c 100644 --- a/src/main.c +++ b/src/main.c @@ -200,7 +200,12 @@ nn_Exit ne_fsState_handler(nn_FilesystemRequest *req) { if(feof(f)) { req->strarg1 = NULL; } else { - req->strarg1len = fread(req->strarg1, sizeof(char), req->strarg1len, f); + size_t off = 0; + while(off < req->strarg1len) { + if(feof(f)) break; + off += fread(req->strarg1 + off, sizeof(char), req->strarg1len - off, f); + } + req->strarg1len = off; } return NN_OK; case NN_FS_WRITE: diff --git a/src/neonucleus.c b/src/neonucleus.c index d237de3..820e0ea 100644 --- a/src/neonucleus.c +++ b/src/neonucleus.c @@ -2718,7 +2718,9 @@ nn_Exit nn_filesystem_handler(nn_ComponentRequest *req) { if(nn_checkinteger(computer, 0, "bad argument #1 (integer expected)")) return NN_EBADCALL; fsreq.fd = nn_tointeger(computer, 0); fsreq.action = NN_FS_CLOSE; - return state->handler(&fsreq); + err = state->handler(&fsreq); + if(err) return err; + return nn_pushbool(computer, true); } if(method == NN_FSNUM_READ) { nn_costComponent(computer, req->compAddress, state->fs.readsPerTick);