diff options
| author | avanspector <avanspector@gmail.com> | 2024-02-25 02:59:45 +0100 |
|---|---|---|
| committer | avanspector <avanspector@gmail.com> | 2024-02-25 02:59:45 +0100 |
| commit | b03f17dd8d5510b852d69918f7fdcc07b0d649e1 (patch) | |
| tree | 50fed8e658daae472bb36e193e71bd3fd5d43217 /base | |
| parent | 24c8b1540920bd181dc399bf86f2ec3a8ea72762 (diff) | |
add haiku to base:runtime and core:c/libc
Diffstat (limited to 'base')
| -rw-r--r-- | base/runtime/os_specific_haiku.odin | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/base/runtime/os_specific_haiku.odin b/base/runtime/os_specific_haiku.odin new file mode 100644 index 000000000..0cd3938e5 --- /dev/null +++ b/base/runtime/os_specific_haiku.odin @@ -0,0 +1,21 @@ +//+build haiku +//+private +package runtime + +foreign import libc "system:c" + +foreign libc { + @(link_name="write") + _unix_write :: proc(fd: i32, buf: rawptr, size: int) -> int --- + + _errnop :: proc() -> ^i32 --- +} + +_stderr_write :: proc "contextless" (data: []byte) -> (int, _OS_Errno) { + ret := _unix_write(2, raw_data(data), len(data)) + if ret < len(data) { + err := __error() + return int(ret), _OS_Errno(err^ if err != nil else 0) + } + return int(ret), 0 +} |