diff options
Diffstat (limited to 'src/lib/syscall.zig')
-rw-r--r-- | src/lib/syscall.zig | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/lib/syscall.zig b/src/lib/syscall.zig index 5e9105b..3b7ed71 100644 --- a/src/lib/syscall.zig +++ b/src/lib/syscall.zig @@ -180,11 +180,14 @@ fn remove(trap_frame: *trap.Frame) void { if (vfs.find(dirname)) |node| { const basename = std.fs.path.basenamePosix(path); - sysexchange.frameReturn(null, trap_frame, switch (node.data.resource) { - .dir => |*dir| dir.remove(basename), - .dir_hook => Error.Unimplemented, - else => vfs.Error.NotADirectory, - }); + switch (node.data.resource) { + .dir => |*dir| sysexchange.frameReturn(null, trap_frame, dir.remove(basename)), + .dir_hook => |dir_hook| { + const result = dir_hook.removeFn(basename.ptr, basename.len); + sysexchange.frameReturnResult(void, trap_frame, result); + }, + else => sysexchange.frameReturn(void, trap_frame, vfs.Error.NotADirectory), + } } else { sysexchange.frameReturn(void, trap_frame, vfs.Error.NotFound); } |