Make sure io.backend.windows loads the implementations for the generics it defines. Make windows.handles not depend on io.timeouts. Fix typo in win32-file-attributes. Fix bug in null-output word. Clean up error checking code.

release
Doug Coleman 2010-09-17 14:19:10 -05:00
parent 04be762fac
commit 7122f9fccb
9 changed files with 34 additions and 34 deletions

View File

@ -3,8 +3,8 @@ arrays assocs classes.struct combinators
combinators.short-circuit destructors io io.backend
io.backend.windows io.buffers io.files.windows io.ports
io.streams.c io.streams.null io.timeouts kernel libc locals
math namespaces sequences system threads windows.errors
windows.handles windows.kernel32 ;
math namespaces sequences system threads vocabs.loader
windows.errors windows.handles windows.kernel32 ;
IN: io.backend.windows.nt
! Global variable with assoc mapping overlapped to threads
@ -32,8 +32,8 @@ SYMBOL: master-completion-port
: <master-completion-port> ( -- handle )
INVALID_HANDLE_VALUE f <completion-port> ;
M: winnt add-completion ( win32-handle -- )
handle>> master-completion-port get-global <completion-port> drop ;
M: winnt add-completion ( win32-handle -- win32-handle )
dup handle>> master-completion-port get-global <completion-port> drop ;
: eof? ( error -- ? )
{ [ ERROR_HANDLE_EOF = ] [ ERROR_BROKEN_PIPE = ] } 1|| ;
@ -144,4 +144,5 @@ M: winnt init-stdio
[ init-c-stdio ]
[ null-reader null-writer null-writer set-stdio ] if ;
"io.files.windows.nt" require
winnt set-io-backend

View File

@ -1,18 +1,24 @@
! Copyright (C) 2004, 2010 Mackenzie Straight, Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien.c-types classes.struct destructors
io.backend kernel literals windows.errors windows.handles
windows.kernel32 ;
io.backend io.timeouts kernel literals windows.errors
windows.handles windows.kernel32 vocabs.loader ;
IN: io.backend.windows
HOOK: CreateFile-flags io-backend ( DWORD -- DWORD )
HOOK: FileArgs-overlapped io-backend ( port -- overlapped/f )
HOOK: add-completion io-backend ( port -- )
HOOK: add-completion io-backend ( port -- port )
TUPLE: win32-file < win32-handle ptr ;
: <win32-file> ( handle -- win32-file )
win32-file new-win32-handle ;
M: win32-file dispose
[ cancel-operation ] [ call-next-method ] bi ;
: opened-file ( handle -- win32-file )
dup invalid-handle?
<win32-file> |dispose
dup add-completion ;
check-invalid-handle <win32-file> |dispose add-completion ;
CONSTANT: share-mode
flags{
@ -24,3 +30,5 @@ CONSTANT: share-mode
: default-security-attributes ( -- obj )
SECURITY_ATTRIBUTES <struct>
SECURITY_ATTRIBUTES heap-size >>nLength ;
"io.files.windows" require

View File

@ -2,8 +2,7 @@ USING: accessors alien.c-types alien.strings classes.struct
combinators combinators.short-circuit continuations environment
io.backend io.backend.windows io.encodings.utf16n
io.files.private io.files.windows io.pathnames kernel math
sequences specialized-arrays
specialized-arrays.instances.alien.c-types.ushort system tr
sequences specialized-arrays system tr
windows windows.errors windows.kernel32 windows.shell32
windows.time ;
SPECIALIZED-ARRAY: ushort

View File

@ -2,9 +2,9 @@
! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien.c-types alien.data combinators
destructors io.backend.windows io.binary io.buffers io.files
io.files.types io.ports kernel literals make math.bitwise
system windows.errors windows.handles windows.kernel32
windows.time windows.types ;
io.files.types io.ports kernel literals make
math.bitwise system windows.errors windows.handles
windows.kernel32 windows.time windows.types vocabs.loader ;
IN: io.files.windows
: open-file ( path access-mode create-mode flags -- handle )
@ -98,7 +98,7 @@ SYMBOLS: +read-only+ +hidden+ +system+
+sparse-file+ +reparse-point+ +compressed+ +offline+
+not-content-indexed+ +encrypted+ ;
: win32-file-attribute ( n attr symbol -- )
: win32-file-attribute ( n symbol attr -- )
rot mask? [ , ] [ drop ] if ;
: win32-file-attributes ( n -- seq )
@ -127,3 +127,5 @@ SYMBOLS: +read-only+ +hidden+ +system+
: (set-file-times) ( handle timestamp/f timestamp/f timestamp/f -- )
[ timestamp>FILETIME ] tri@
SetFileTime win32-error=0/f ;
"io.files.windows.nt" require

View File

@ -23,7 +23,7 @@ IN: io.launcher.windows.nt
(pipe) [ in>> &dispose ] [ out>> dispose ] bi ;
: null-output ( -- pipe )
(pipe) [ in>> dispose ] [ out>> &dispose ] bi ;
(pipe) [ out>> &dispose ] [ in>> dispose ] bi ;
: null-pipe ( mode -- pipe )
{
@ -48,7 +48,7 @@ IN: io.launcher.windows.nt
create-mode
FILE_ATTRIBUTE_NORMAL ! flags and attributes
f ! template file
CreateFile dup invalid-handle? <win32-file> &dispose ;
CreateFile check-invalid-handle <win32-file> &dispose ;
: redirect-append ( path access-mode create-mode -- handle )
[ path>> ] 2dip

View File

@ -38,7 +38,7 @@ M: win32-socket dispose* ( stream -- )
[ empty-sockaddr/size ] [ protocol-family ] bi pick family<< ;
: opened-socket ( handle -- win32-socket )
<win32-socket> |dispose dup add-completion ;
<win32-socket> |dispose add-completion ;
: open-socket ( addrspec type -- win32-socket )
[ protocol-family ] dip

View File

@ -1,7 +1,7 @@
! Copyright (C) 2008 Slava Pestov, Doug Coleman
! See http://factorcode.org/license.txt for BSD license.
USING: kernel calendar timers io io.encodings accessors
namespaces fry io.streams.null ;
USING: accessors fry io io.encodings io.streams.null kernel
namespaces timers ;
IN: io.timeouts
GENERIC: timeout ( obj -- dt/f )

View File

@ -734,10 +734,8 @@ ERROR: windows-error n string ;
: win32-error<0 ( n -- ) 0 < [ win32-error ] when ;
: win32-error<>0 ( n -- ) zero? [ win32-error ] unless ;
: invalid-handle? ( handle -- )
INVALID_HANDLE_VALUE = [
win32-error-string throw
] when ;
: check-invalid-handle ( handle -- handle )
dup INVALID_HANDLE_VALUE = [ win32-error-string throw ] when ;
CONSTANT: expected-io-errors
${

View File

@ -1,6 +1,6 @@
! Copyright (C) 2010 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors destructors io.timeouts kernel windows.errors
USING: accessors destructors kernel windows.errors
windows.kernel32 windows.types ;
IN: windows.handles
@ -19,11 +19,3 @@ TUPLE: win32-handle < disposable handle ;
M: win32-handle dispose* ( handle -- )
handle>> CloseHandle win32-error=0/f ;
TUPLE: win32-file < win32-handle ptr ;
: <win32-file> ( handle -- win32-file )
win32-file new-win32-handle ;
M: win32-file dispose
[ cancel-operation ] [ call-next-method ] bi ;