: (delete-file) ( path -- )
dup DeleteFile 0 = [
GetLastError ERROR_ACCESS_DENIED =
- [ delete-read-only-file ] [ win32-error ] if
+ [ delete-read-only-file ] [ throw-win32-error ] if
] [ drop ] if ;
M: windows delete-file ( path -- )
: handle>file-size ( handle -- n/f )
(handle>file-size) [
GetLastError ERROR_INVALID_FUNCTION =
- [ f ] [ win32-error ] if
+ [ f ] [ throw-win32-error ] if
] unless* ;
ERROR: seek-before-start n ;
0
[ FindFirstStream ] keepd
over INVALID_HANDLE_VALUE = [
- 2drop win32-error
+ 2drop throw-win32-error
] [
1vector swap file-streams-rest
] if ;
dup n>win32-error-string windows-error
] if ;
+: throw-win32-error ( -- * )
+ win32-error-string throw ;
+
: check-invalid-handle ( handle -- handle )
dup INVALID_HANDLE_VALUE = [ win32-error ] when ;
expected-io-errors member? ;
: expected-io-error ( error-code -- )
- expected-io-error? [ win32-error ] unless ;
+ dup expected-io-error? [
+ drop
+ ] [
+ throw-win32-error
+ ] if ;
: io-error ( return-value -- )
{ 0 f } member? [ GetLastError expected-io-error ] when ;