windows.errors: streamline error handling and throwing

fix-linux
Alexander Iljin 2016-06-29 01:55:15 +03:00 committed by John Benediktsson
parent 2dfb3b3a73
commit ca474dd154
2 changed files with 8 additions and 12 deletions

View File

@ -1 +1,2 @@
Doug Coleman
Alexander Ilin

View File

@ -719,23 +719,18 @@ CONSTANT: FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF
ERROR: windows-error n string ;
: (win32-error) ( n -- )
[ dup win32-error-string windows-error ] unless-zero ;
: throw-windows-error ( n -- * )
dup n>win32-error-string windows-error ;
: win32-error ( -- )
GetLastError (win32-error) ;
: n>win32-error-check ( n -- )
[ throw-windows-error ] unless-zero ;
! Note that win32-error* words throw GetLastError code.
: win32-error ( -- ) GetLastError n>win32-error-check ;
: win32-error=0/f ( n -- ) { 0 f } member? [ win32-error ] when ;
: win32-error>0 ( n -- ) 0 > [ win32-error ] when ;
: win32-error<0 ( n -- ) 0 < [ win32-error ] when ;
: win32-error<>0 ( n -- ) zero? [ win32-error ] unless ;
: n>win32-error-check ( n -- )
dup ERROR_SUCCESS = [
drop
] [
dup n>win32-error-string windows-error
] if ;
: win32-error<>0 ( n -- ) [ win32-error ] unless-zero ;
: check-invalid-handle ( handle -- handle )
dup INVALID_HANDLE_VALUE = [ win32-error ] when ;