os_specific_darwin.odin 617 B

12345678910111213141516171819202122232425262728
  1. #+build darwin
  2. #+private
  3. package runtime
  4. import "base:intrinsics"
  5. _stderr_write :: proc "contextless" (data: []byte) -> (int, _OS_Errno) {
  6. STDERR :: 2
  7. when ODIN_NO_CRT {
  8. WRITE :: 0x2000004
  9. ret := intrinsics.syscall(WRITE, STDERR, uintptr(raw_data(data)), uintptr(len(data)))
  10. if ret < 0 {
  11. return 0, _OS_Errno(-ret)
  12. }
  13. return int(ret), 0
  14. } else {
  15. foreign {
  16. write :: proc(handle: i32, buffer: [^]byte, count: uint) -> int ---
  17. __error :: proc() -> ^i32 ---
  18. }
  19. if ret := write(STDERR, raw_data(data), len(data)); ret >= 0 {
  20. return int(ret), 0
  21. }
  22. return 0, _OS_Errno(__error()^)
  23. }
  24. }