errors_posix.odin 853 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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_from_errno :: proc() -> Error {
  10. return _get_platform_error_existing(posix.errno())
  11. }
  12. _get_platform_error_existing :: proc(errno: posix.Errno) -> Error {
  13. #partial switch errno {
  14. case .EPERM:
  15. return .Permission_Denied
  16. case .EEXIST:
  17. return .Exist
  18. case .ENOENT:
  19. return .Not_Exist
  20. case .ETIMEDOUT:
  21. return .Timeout
  22. case .EPIPE:
  23. return .Broken_Pipe
  24. case .EBADF:
  25. return .Invalid_File
  26. case .ENOMEM:
  27. return .Out_Of_Memory
  28. case .ENOSYS:
  29. return .Unsupported
  30. case:
  31. return Platform_Error(errno)
  32. }
  33. }
  34. _get_platform_error :: proc{
  35. _get_platform_error_existing,
  36. _get_platform_error_from_errno,
  37. }