diff options
| author | user <user@clank> | 2026-07-16 13:07:28 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-07-16 13:07:28 +0200 |
| commit | fc6f690727aac2b5c9bd368f9b13188fb0ba36a7 (patch) | |
| tree | 5cf80045737ddcd267d484318fa782ba5faf7efb /c/gbos.h | |
| parent | fs rewrite stage 3: nested directories, paths, cwd (cd/mkdir/ls) (diff) | |
| download | gbos-fc6f690727aac2b5c9bd368f9b13188fb0ba36a7.tar.gz gbos-fc6f690727aac2b5c9bd368f9b13188fb0ba36a7.tar.xz gbos-fc6f690727aac2b5c9bd368f9b13188fb0ba36a7.zip | |
fs: reject open()/read() on a directory (EISDIR)
open() now checks the target's inode type: opening a directory as a file
returns $FE (EISDIR) instead of a valid fd, so 'cat docs' no longer streams the
raw directory block as bytes. cat reports 'is a directory'; wc/head/save treat
any invalid fd (>3) as an open failure. (ls is unaffected - it uses the
structural opendir/list path, not open/getb.)
Diffstat (limited to '')
| -rw-r--r-- | c/gbos.h | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -34,6 +34,7 @@ void poweroff(void); /* clean emulator shutdown (saves) */ #define O_READ 0 #define O_WRITE 1 #define NOFD 0xFF +#define EISDIR 0xFE /* open() failed: path is a directory */ /* process control (c/libc.s) */ unsigned char fork(void); |
