diff options
-rw-r--r-- | src/kernel.zig | 2 | ||||
-rw-r--r-- | src/lib/resources.zig | 10 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/kernel.zig b/src/kernel.zig index 820ee3e..97cc85b 100644 --- a/src/kernel.zig +++ b/src/kernel.zig @@ -201,7 +201,7 @@ fn pagedRun() !noreturn { try vfs.init(allocator); try w.print("Initialize VFS\r\n", .{}); - try resources.provideBuiltin(); + try resources.provideBuiltin(allocator); try w.print("Provide builtin resources\r\n", .{}); try w.print("Start init process\r\n", .{}); diff --git a/src/lib/resources.zig b/src/lib/resources.zig index 71cd73b..25835d5 100644 --- a/src/lib/resources.zig +++ b/src/lib/resources.zig @@ -170,14 +170,14 @@ pub const Error = error{ NoConsole, }; -pub fn provideBuiltin() !void { +pub fn provideBuiltin(allocator: std.mem.Allocator) !void { try addDir("/io"); try addDir("/userinit"); try addDir("/process"); try addDir("/process/self"); try provideConsole(); - try provideUserinit(); + try provideUserinit(allocator); try provideProcess(); } @@ -195,13 +195,12 @@ fn provideConsole() !void { }); } -fn provideUserinit() !void { +fn provideUserinit(allocator: std.mem.Allocator) !void { var userinit_stream = io.fixedBufferStream(userinit.tarball); const reader = userinit_stream.reader(); var file_name_buffer: [4086]u8 = undefined; var link_name_buffer: [4086]u8 = undefined; - var path_buffer: [4096]u8 = undefined; var it = tar.iterator(reader, .{ .file_name_buffer = file_name_buffer[0..], @@ -209,7 +208,8 @@ fn provideUserinit() !void { }); while (try it.next()) |file| { - const path = try std.fmt.bufPrint(path_buffer[0..], "/userinit/{s}", .{file.name}); + const resolved = try std.fs.path.resolvePosix(allocator, &[_][]const u8{file.name}); + const path = try std.fmt.allocPrint(allocator, "/userinit/{s}", .{resolved}); switch (file.kind) { .file => try addFile(path, file), .directory => try addDir(path), |