[ (make-overlapped) ] dip
handle>> ptr>> [ >>offset ] when* ;
-M: winnt FileArgs-overlapped ( port -- overlapped )
+M: windows FileArgs-overlapped ( port -- overlapped )
make-overlapped ;
: <completion-port> ( handle existing -- handle )
: <master-completion-port> ( -- handle )
INVALID_HANDLE_VALUE f <completion-port> ;
-M: winnt add-completion ( win32-handle -- win32-handle )
+M: windows add-completion ( win32-handle -- win32-handle )
dup handle>> master-completion-port get-global <completion-port> drop ;
: eof? ( error -- ? )
M: win32-handle cancel-operation
[ handle>> CancelIo win32-error=0/f ] unless-disposed ;
-M: winnt io-multiplex ( nanos -- )
+M: windows io-multiplex ( nanos -- )
handle-overlapped [ 0 io-multiplex ] when ;
-M: winnt init-io ( -- )
+M: windows init-io ( -- )
<master-completion-port> master-completion-port set-global
H{ } clone pending-overlapped set-global ;
: set-seek-ptr ( n handle -- )
[ dup 0 < [ seek-before-start ] when ] dip ptr<< ;
-M: winnt tell-handle ( handle -- n ) ptr>> ;
+M: windows tell-handle ( handle -- n ) ptr>> ;
-M: winnt seek-handle ( n seek-type handle -- )
+M: windows seek-handle ( n seek-type handle -- )
swap {
{ seek-absolute [ set-seek-ptr ] }
{ seek-relative [ [ ptr>> + ] keep set-seek-ptr ] }
[ lpOverlapped>> ]
} cleave ;
-M: winnt (wait-to-write)
+M: windows (wait-to-write)
[
[ make-FileArgs dup setup-write WriteFile ]
[ wait-for-file ]
: finish-read ( n port -- )
[ update-file-ptr ] [ buffer>> n>buffer ] 2bi ;
-M: winnt (wait-to-read) ( port -- )
+M: windows (wait-to-read) ( port -- )
[
[ make-FileArgs dup setup-read ReadFile ]
[ wait-for-file ]
: console-app? ( -- ? ) GetConsoleWindow >boolean ;
-M: winnt init-stdio
+M: windows init-stdio
console-app?
[ init-c-stdio ]
[ null-reader null-writer null-writer set-stdio ] if ;
[ timestamp>FILETIME ] tri@
SetFileTime win32-error=0/f ;
-M: winnt cwd
+M: windows cwd
MAX_UNICODE_PATH dup <ushort-array>
[ GetCurrentDirectory win32-error=0/f ] keep
utf16n alien>string ;
-M: winnt cd
+M: windows cd
SetCurrentDirectory win32-error=0/f ;
CONSTANT: unicode-prefix "\\\\?\\"
-M: winnt root-directory? ( path -- ? )
+M: windows root-directory? ( path -- ? )
{
{ [ dup empty? ] [ drop f ] }
{ [ dup [ path-separator? ] all? ] [ drop t ] }
PRIVATE>
-M: winnt normalize-path ( string -- string' )
+M: windows normalize-path ( string -- string' )
dup unc-path? [
normalize-separators
] [
prepend-prefix
] if ;
-M: winnt CreateFile-flags ( DWORD -- DWORD )
+M: windows CreateFile-flags ( DWORD -- DWORD )
FILE_FLAG_OVERLAPPED bitor ;
<PRIVATE
PRIVATE>
-M: winnt open-append
+M: windows open-append
[ dup windows-file-size ] [ drop 0 ] recover
[ (open-append) ] dip >>ptr ;
-M: winnt home
+M: windows home
{
[ "HOMEDRIVE" os-env "HOMEPATH" os-env append-path ]
[ "USERPROFILE" os-env ]