authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-07-09 23:13:03-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-07-12 00:14:08-07:00
logdcbb3aa1f329ba0f12f8a039df62cd347b8f2559
tree6a1c67705f15a5759f40cec9948d99a50b89fc76
parentd1c14f2f52ddec476eca6d605b985a27f4d4fe28

std.Build.Cache.Path: fix format function for absolute paths


1 files changed, 18 insertions(+), 0 deletions(-)

lib/std/Build/Cache/Path.zig+18
......@@ -58,6 +58,20 @@ pub fn openFile(
5858 return p.root_dir.handle.openFile(joined_path, flags);
5959}
6060
61pub fn openDir(
62 p: Path,
63 sub_path: []const u8,
64 args: fs.Dir.OpenOptions,
65) fs.Dir.OpenError!fs.Dir {
66 var buf: [fs.max_path_bytes]u8 = undefined;
67 const joined_path = if (p.sub_path.len == 0) sub_path else p: {
68 break :p std.fmt.bufPrint(&buf, "{s}" ++ fs.path.sep_str ++ "{s}", .{
69 p.sub_path, sub_path,
70 }) catch return error.NameTooLong;
71 };
72 return p.root_dir.handle.openDir(joined_path, args);
73}
74
6175pub fn makeOpenPath(p: Path, sub_path: []const u8, opts: fs.Dir.OpenOptions) !fs.Dir {
6276 var buf: [fs.max_path_bytes]u8 = undefined;
6377 const joined_path = if (p.sub_path.len == 0) sub_path else p: {
......@@ -137,6 +151,10 @@ pub fn format(
137151 }
138152 if (fmt_string.len > 0)
139153 std.fmt.invalidFmtError(fmt_string, self);
154 if (std.fs.path.isAbsolute(self.sub_path)) {
155 try writer.writeAll(self.sub_path);
156 return;
157 }
140158 if (self.root_dir.path) |p| {
141159 try writer.writeAll(p);
142160 try writer.writeAll(fs.path.sep_str);