vfs: major overhaul — device nodes, stream I/O, mode simplification
- 5-phase VFS architecture overhaul (path resolution, dir cache, watch/notify, symlinks, async API) - Add character/block device node layer with /dev/null and /dev/zero built-ins - RegisterDevice() API for custom device nodes with read/write/size callbacks - Merge TOpenMode + TWriteMode into single TOpenMode enum (omRead, omWrite, omCreate, omReadWrite, omStream) - Add stream write support: WriteFile/WriteFileAsync now accept omStream handles with auto-advancing offset for both device and volume FDs - Add PPWriteOffsetHook type and writeOffsetCallback field to TFilesystem - Add PPReadOffsetHook-based streaming reads for FAT32 and ISO9660 - Update all callers (notepad, edit, inio, wasm runner, filepicker, filedispatch, vterminal, stdio) to new 2-param OpenFile API - 77 unit tests (0 failures) covering path ops, dir cache, symlinks, watch, device nodes, and stream read/write - Add doc/vfs.md — comprehensive public VFS API documentation
This commit is contained in:
1 parent
63b67f5878
commit
fcc9809248
17 files changed
+2774
-417
No files matched your search
@@ -372,9 +372,9 @@ begin
|
||||
buf := pchar(kalloc(FILE_BUF_SIZE));
|
||||
memset(uint32(buf), 0, FILE_BUF_SIZE);
|
||||
memcpy(uint32(txt), uint32(buf), len);
|
||||
fHandle := driver.storage.vfs.OpenFile(state^.currentPath, omReadWrite, wmRewrite, @fError);
|
||||
fHandle := driver.storage.vfs.OpenFile(state^.currentPath, omReadWrite, @fError);
|
||||
if fHandle = 0 then
|
||||
fHandle := driver.storage.vfs.OpenFile(state^.currentPath, omWriteOnly, wmNew, @fError);
|
||||
fHandle := driver.storage.vfs.OpenFile(state^.currentPath, omCreate, @fError);
|
||||
if fHandle = 0 then begin
|
||||
kfree(void(buf));
|
||||
io.syslog.logln('NOTEPAD', 'saveFile: OpenFile failed');
|
||||
@@ -413,7 +413,7 @@ var
|
||||
buf : pchar;
|
||||
begin
|
||||
debug.tracer.push_trace('notepad.loadFile');
|
||||
fHandle := driver.storage.vfs.OpenFile(path, omReadOnly, wmRewrite, @fError);
|
||||
fHandle := driver.storage.vfs.OpenFile(path, omRead, @fError);
|
||||
if (fHandle = 0) or (fError <> eNone) then begin
|
||||
io.syslog.logln('NOTEPAD', 'loadFile: could not open file');
|
||||
showErrorMsgbox('Open Failed', 'Could not open file for reading.');
|
||||
|
||||
Reference in new issue
Block a user