authorgravatar for michael.dusan@gmail.comMichael Dusan <michael.dusan@gmail.com> 2025-12-19 22:43:50-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-12-23 22:15:11-08:00
log90bc371f564f7992a5137abddd958b012f8855e6
tree8d9ca3a7702a904894536c5efd8f4624a4960e69
parent486ed907f7cf3034e8f9ca1d2c445beec8b2df16

openbsd: use Io.Dir.realPathFileAbsolute


1 files changed, 8 insertions(+), 10 deletions(-)

lib/std/Io/Threaded.zig+8-10
......@@ -7194,15 +7194,14 @@ fn processExecutablePath(userdata: ?*anyopaque, out_buffer: []u8) std.process.Ex
71947194 if (std.mem.indexOf(u8, argv0, "/") != null) {
71957195 // argv[0] is a path (relative or absolute): use realpath(3) directly
71967196 var real_path_buf: [posix.PATH_MAX]u8 = undefined;
7197 const real_path = Io.Dir.realPathFileAbsolute(ioBasic(t), std.os.argv[0], &real_path_buf) catch |err| switch (err) {
7197 const real_path_len = Io.Dir.realPathFileAbsolute(ioBasic(t), argv0, &real_path_buf) catch |err| switch (err) {
71987198 error.NetworkNotFound => unreachable, // Windows-only
71997199 else => |e| return e,
72007200 };
7201 if (real_path.len > out_buffer.len)
7201 if (real_path_len > out_buffer.len)
72027202 return error.NameTooLong;
7203 const result = out_buffer[0..real_path.len];
7204 @memcpy(result, real_path);
7205 return result.len;
7203 @memcpy(out_buffer[0..real_path_len], real_path_buf[0..real_path_len]);
7204 return real_path_len;
72067205 } else if (argv0.len != 0) {
72077206 // argv[0] is not empty (and not a path): search it inside PATH
72087207 const PATH = posix.getenvZ("PATH") orelse return error.FileNotFound;
......@@ -7214,13 +7213,12 @@ fn processExecutablePath(userdata: ?*anyopaque, out_buffer: []u8) std.process.Ex
72147213 }, 0) catch continue;
72157214
72167215 var real_path_buf: [posix.PATH_MAX]u8 = undefined;
7217 if (Io.Dir.realPathFileAbsolute(ioBasic(t), resolved_path, &real_path_buf)) |real_path| {
7216 if (Io.Dir.realPathFileAbsolute(ioBasic(t), resolved_path, &real_path_buf)) |real_path_len| {
72187217 // found a file, and hope it is the right file
7219 if (real_path.len > out_buffer.len)
7218 if (real_path_len > out_buffer.len)
72207219 return error.NameTooLong;
7221 const result = out_buffer[0..real_path.len];
7222 @memcpy(result, real_path);
7223 return result.len;
7220 @memcpy(out_buffer[0..real_path_len], real_path_buf[0..real_path_len]);
7221 return real_path_len;
72247222 } else |_| continue;
72257223 }
72267224 }