Allow setting errno instead of just clearing it

db4
Doug Coleman 2010-02-03 17:20:24 -06:00
parent 7447fc1073
commit a2ce57d856
3 changed files with 10 additions and 4 deletions

View File

@ -9,8 +9,14 @@ IN: libc
: errno ( -- int ) : errno ( -- int )
int "factor" "err_no" { } alien-invoke ; int "factor" "err_no" { } alien-invoke ;
: set-errno ( int -- )
void "factor" "set_err_no" { int } alien-invoke ;
: clear-errno ( -- ) : clear-errno ( -- )
void "factor" "clear_err_no" { } alien-invoke ; 0 set-errno ;
: preserve-errno ( quot -- )
errno [ call ] dip set-errno ; inline
<PRIVATE <PRIVATE

View File

@ -245,8 +245,8 @@ VM_C_API int err_no()
return errno; return errno;
} }
VM_C_API void clear_err_no() VM_C_API void set_err_no(int err)
{ {
errno = 0; errno = err;
} }
} }

View File

@ -8,6 +8,6 @@ int safe_fclose(FILE *stream);
/* Platform specific primitives */ /* Platform specific primitives */
VM_C_API int err_no(); VM_C_API int err_no();
VM_C_API void clear_err_no(); VM_C_API void set_err_no(int err);
} }