123456789101112131415161718192021222324 |
- package os2
- import "base:runtime"
- import "core:sys/posix"
- _get_executable_path :: proc(allocator: runtime.Allocator) -> (path: string, err: Error) {
- temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator })
- buf := make([dynamic]byte, 1024, temp_allocator) or_return
- for {
- n := posix.readlink("/proc/curproc/exe", raw_data(buf), len(buf))
- if n < 0 {
- err = _get_platform_error()
- return
- }
- if n < len(buf) {
- return clone_string(string(buf[:n]), allocator)
- }
- resize(&buf, len(buf)*2) or_return
- }
- }
|