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
@@ -138,7 +138,7 @@ begin
|
||||
|
||||
{ Open for writing }
|
||||
debug.tracer.push_trace('edit.SaveFile.openRW');
|
||||
fHandle := driver.storage.vfs.OpenFile(FilePath, omReadWrite, wmRewrite, @fError);
|
||||
fHandle := driver.storage.vfs.OpenFile(FilePath, omReadWrite, @fError);
|
||||
if fHandle <> 0 then begin
|
||||
debug.tracer.push_trace('edit.SaveFile.writeFile');
|
||||
driver.storage.vfs.WriteFile(fHandle, 0, puint8(buf), totalLen);
|
||||
@@ -149,7 +149,7 @@ begin
|
||||
end else begin
|
||||
{ Try write-only for new file }
|
||||
debug.tracer.push_trace('edit.SaveFile.openWO');
|
||||
fHandle := driver.storage.vfs.OpenFile(FilePath, omWriteOnly, wmNew, @fError);
|
||||
fHandle := driver.storage.vfs.OpenFile(FilePath, omCreate, @fError);
|
||||
if fHandle <> 0 then begin
|
||||
debug.tracer.push_trace('edit.SaveFile.writeFileNew');
|
||||
driver.storage.vfs.WriteFile(fHandle, 0, puint8(buf), totalLen);
|
||||
@@ -181,7 +181,7 @@ begin
|
||||
if FilePath = nil then exit;
|
||||
|
||||
debug.tracer.push_trace('edit.LoadFile.openFile');
|
||||
fHandle := driver.storage.vfs.OpenFile(FilePath, omReadOnly, wmRewrite, @fError);
|
||||
fHandle := driver.storage.vfs.OpenFile(FilePath, omRead, @fError);
|
||||
debug.tracer.push_trace('edit.LoadFile.openFile.done');
|
||||
if (fHandle = 0) or (fError <> eNone) then begin
|
||||
io.syslog.writestringln('New file.');
|
||||
|
||||
Reference in new issue
Block a user