diff options
Diffstat (limited to 'std')
| -rw-r--r-- | std/os/index.zig | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/std/os/index.zig b/std/os/index.zig index a543f27be4..057be6a370 100644 --- a/std/os/index.zig +++ b/std/os/index.zig @@ -1556,12 +1556,22 @@ pub fn openSelfExe() %io.File { return io.File.openRead("/proc/self/exe", null); }, Os.macosx, Os.ios => { - @panic("TODO: openSelfExe on Darwin"); + var fixed_buffer_mem: [darwin.PATH_MAX]u8 = undefined; + var fixed_allocator = mem.FixedBufferAllocator.init(fixed_buffer_mem[0..]); + const self_exe_path = try selfExePath(&fixed_allocator.allocator); + return io.File.openRead(self_exe_path, null); }, else => @compileError("Unsupported OS"), } } +test "openSelfExe" { + switch (builtin.os) { + Os.linux, Os.macosx, Os.ios => (try openSelfExe()).close(), + else => return, // Unsupported OS. + } +} + /// Get the path to the current executable. /// If you only need the directory, use selfExeDirPath. /// If you only want an open file handle, use openSelfExe. |
