From 62ae2490d3ee162a2000087de82a46728fd4f664 Mon Sep 17 00:00:00 2001 From: cozis Date: Sat, 23 May 2026 17:52:07 +0200 Subject: [PATCH] node: Implement openDir and createDir to expose FileSystem.openDir and FileSystem.createDir --- src/node.zig | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/node.zig b/src/node.zig index f54f81a..34ac0c5 100644 --- a/src/node.zig +++ b/src/node.zig @@ -184,6 +184,29 @@ pub fn closeDir(self: *Node, handle: Handle) HandleError!void { desc.kind = .unused; } +pub const CreateDirError = HandleError || FileSystem.CreateError; + +pub fn createDir(self: *Node, parent: ?Handle, path: []const u8) CreateDirError!void { + self.scheduler.sleep(10); + return self.file_system.createDir( + path, + try self.handleToOpenDirOrNULL(parent), + self.gpa + ); +} + +pub const OpenDirError = error { + DescriptorLimit, +} || HandleError || FileSystem.OpenError; + +pub fn openDir(self: *Node, parent: ?Handle, path: []const u8) OpenDirError!Handle { + self.scheduler.sleep(10); + const desc = self.unusedDesc() orelse return OpenDirError.DescriptorLimit; + try self.file_system.openDir(path, try self.handleToOpenDirOrNULL(parent), &desc.dir); + desc.kind = .dir; + return self.descToHandle(desc); +} + pub fn readDir(self: *Node, handle: Handle) HandleError!FileSystem.ReadDir { self.scheduler.sleep(10); const desc = try self.handleToDescOfType(handle, .dir);