os/os2: use proc_pidpath for executable path on darwin

This commit is contained in:
Laytan Laats
2025-01-22 18:39:33 +01:00
parent f1b0b19710
commit d54de6704a
2 changed files with 6 additions and 27 deletions
+6 -20
View File
@@ -6,26 +6,12 @@ import "core:sys/darwin"
import "core:sys/posix"
_get_executable_path :: proc(allocator: runtime.Allocator) -> (path: string, err: Error) {
size: u32
ret := darwin._NSGetExecutablePath(nil, &size)
assert(ret == -1)
assert(size > 0)
TEMP_ALLOCATOR_GUARD()
buf := make([]byte, size, temp_allocator()) or_return
assert(u32(len(buf)) == size)
ret = darwin._NSGetExecutablePath(raw_data(buf), &size)
assert(ret == 0)
real := posix.realpath(cstring(raw_data(buf)))
if real == nil {
err = _get_platform_error()
return
buffer: [darwin.PIDPATHINFO_MAXSIZE]byte = ---
ret := darwin.proc_pidpath(posix.getpid(), raw_data(buffer[:]), len(buffer))
if ret > 0 {
return clone_string(string(buffer[:ret]), allocator)
}
defer posix.free(real)
return clone_string(string(real), allocator)
err = _get_platform_error()
return
}
-7
View File
@@ -1,7 +0,0 @@
package darwin
foreign import system "system:System.framework"
foreign system {
_NSGetExecutablePath :: proc(buf: [^]byte, bufsize: ^u32) -> i32 ---
}