about summary refs log tree commit diff
path: root/src/fs.zig
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2025-10-18 01:33:05 +0200
committerRobert Günzler <r@gnzler.io>2025-10-18 03:17:43 +0200
commit98c4afd018532adc6b3c6011027f069541b82ee9 (patch)
tree0c5e7498159f37cf7d0dccfdc880c1f3dd5d6642 /src/fs.zig
parent01a086a3c8cb08566dddd833c940a6c97db8bc35 (diff)
downloadsite-98c4afd018532adc6b3c6011027f069541b82ee9.tar.gz
% fix mtimes
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to 'src/fs.zig')
-rw-r--r--src/fs.zig15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/fs.zig b/src/fs.zig
index adcd0c3..8eaf7c2 100644
--- a/src/fs.zig
+++ b/src/fs.zig
@@ -127,20 +127,19 @@ pub fn stripExtension(path: []const u8) ![]const u8 {
 }
 
 pub fn joinPathAndFilename(alloc: std.mem.Allocator, paths: []const []const u8, filename_parts: []const []const u8) ![]const u8 {
-    const filename = try std.mem.concat(alloc, u8, filename_parts);
-    defer alloc.free(filename);
+    var buf: [std.os.linux.PATH_MAX]u8 = undefined;
+    var fba = std.heap.FixedBufferAllocator.init(&buf);
 
-    var p = try std.ArrayList([]const u8).initCapacity(alloc, paths.len + 1);
+    const filename = try std.mem.concat(fba.allocator(), u8, filename_parts);
+
+    var p = try std.ArrayList([]const u8).initCapacity(fba.allocator(), paths.len + 1);
     defer p.deinit();
 
     p.appendSliceAssumeCapacity(paths);
     p.appendAssumeCapacity(filename);
 
-    const paths2 = try p.toOwnedSlice();
-    defer alloc.free(paths2);
-
-    std.debug.assert(paths.len + 1 == paths2.len);
-    return try std.fs.path.join(alloc, paths2);
+    std.debug.assert(paths.len + 1 == p.items.len);
+    return try std.fs.path.join(alloc, p.items);
 }
 
 pub fn getGitTime(path: []const u8) !std.posix.timespec {