errors_wasi.odin 900 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #+private
  2. package os2
  3. import "base:runtime"
  4. import "core:slice"
  5. import "core:sys/wasm/wasi"
  6. _Platform_Error :: wasi.errno_t
  7. _error_string :: proc(errno: i32) -> string {
  8. e := wasi.errno_t(errno)
  9. if e == .NONE {
  10. return ""
  11. }
  12. err := runtime.Type_Info_Enum_Value(e)
  13. ti := &runtime.type_info_base(type_info_of(wasi.errno_t)).variant.(runtime.Type_Info_Enum)
  14. if idx, ok := slice.binary_search(ti.values, err); ok {
  15. return ti.names[idx]
  16. }
  17. return "<unknown platform error>"
  18. }
  19. _get_platform_error :: proc(errno: wasi.errno_t) -> Error {
  20. #partial switch errno {
  21. case .PERM:
  22. return .Permission_Denied
  23. case .EXIST:
  24. return .Exist
  25. case .NOENT:
  26. return .Not_Exist
  27. case .TIMEDOUT:
  28. return .Timeout
  29. case .PIPE:
  30. return .Broken_Pipe
  31. case .BADF:
  32. return .Invalid_File
  33. case .NOMEM:
  34. return .Out_Of_Memory
  35. case .NOSYS:
  36. return .Unsupported
  37. case:
  38. return Platform_Error(errno)
  39. }
  40. }