fn processExecutableOpen(
userdata: ?*anyopaque,
flags: Dir.OpenFileOptions,
) process.OpenExecutableError!File userdata: ?*anyopaqueflags: Dir.OpenFileOptions3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953fn processExecutableOpen(
userdata: ?*anyopaque,
flags: Dir.OpenFileOptions,
) process.OpenExecutableError!File {
const ev: *Evented = @ptrCast(@alignCast(userdata));
// _NSGetExecutablePath() returns a path that might be a symlink to
// the executable. Here it does not matter since we open it.
var symlink_path_buf: [c.PATH_MAX + 1]u8 = undefined;
var n: u32 = symlink_path_buf.len;
const rc = c._NSGetExecutablePath(&symlink_path_buf, &n);
if (rc != 0) return error.NameTooLong;
const symlink_path = std.mem.sliceTo(&symlink_path_buf, 0);
return dirOpenFile(ev, .cwd(), symlink_path, flags);
}