errors_posix.odin 647 B

12345678910111213141516171819202122232425262728293031323334
  1. #+private
  2. #+build darwin, netbsd, freebsd, openbsd
  3. package os2
  4. import "core:sys/posix"
  5. _Platform_Error :: posix.Errno
  6. _error_string :: proc(errno: i32) -> string {
  7. return string(posix.strerror(posix.Errno(errno)))
  8. }
  9. _get_platform_error :: proc() -> Error {
  10. #partial switch errno := posix.errno(); errno {
  11. case .EPERM:
  12. return .Permission_Denied
  13. case .EEXIST:
  14. return .Exist
  15. case .ENOENT:
  16. return .Not_Exist
  17. case .ETIMEDOUT:
  18. return .Timeout
  19. case .EPIPE:
  20. return .Broken_Pipe
  21. case .EBADF:
  22. return .Invalid_File
  23. case .ENOMEM:
  24. return .Out_Of_Memory
  25. case .ENOSYS:
  26. return .Unsupported
  27. case:
  28. return Platform_Error(errno)
  29. }
  30. }