aboutsummaryrefslogtreecommitdiff
path: root/src/lib/resources.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/resources.zig')
-rw-r--r--src/lib/resources.zig10
1 files changed, 5 insertions, 5 deletions
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),