Commit 7439eb5e99

David CARLIER <devnexen@gmail.com>
2023-04-24 21:35:51
std.os: selfExePath implementation for haiku
1 parent dc94729
Changed files (1)
lib
std
lib/std/fs.zig
@@ -2913,6 +2913,7 @@ pub const OpenSelfExeError = error{
     /// On Windows, file paths cannot contain these characters:
     /// '/', '*', '?', '"', '<', '>', '|'
     BadPathName,
+    Overflow,
     Unexpected,
 } || os.OpenError || SelfExePathError || os.FlockError;
 
@@ -2991,7 +2992,15 @@ pub fn selfExePath(out_buffer: []u8) SelfExePathError![]u8 {
             // TODO could this slice from 0 to out_len instead?
             return mem.sliceTo(out_buffer, 0);
         },
-        .openbsd, .haiku => {
+        .haiku => {
+            // The only possible issue when looking for the self image path is
+            // when the buffer is too short.
+            // TODO replace with proper constants
+            if (os.find_path(null, 1000, null, out_buffer.ptr, out_buffer.len) != 0)
+                return error.Overflow;
+            return mem.sliceTo(out_buffer, 0);
+        },
+        .openbsd => {
             // OpenBSD doesn't support getting the path of a running process, so try to guess it
             if (os.argv.len == 0)
                 return error.FileNotFound;