0 | ||| Managing error codes.
 1 | module System.Errno
 2 |
 3 | %default total
 4 |
 5 | %foreign "C:idris2_getErrno, libidris2_support, idris_support.h"
 6 |          "node:support:getErrno,support_system"
 7 | prim__getErrno : PrimIO Int
 8 |
 9 | %foreign "C:idris2_strerror, libidris2_support, idris_support.h"
10 |          "node:lambda:errno=>'Error code: '+errno"
11 | prim__strerror : Int -> PrimIO String
12 |
13 | ||| Fetch libc `errno` global variable.
14 | ||| This sometimes returns 0 on windows.
15 | export
16 | getErrno : HasIO io => io Int
17 | getErrno = primIO prim__getErrno
18 |
19 | ||| Convert numeric `errno` to string.
20 | export
21 | strerror : Int -> String
22 | strerror errno = unsafePerformIO $ primIO $ prim__strerror errno
23 |