factor/unmaintained/ce/files/files.factor

33 lines
1.0 KiB
Factor
Raw Normal View History

2007-11-06 20:44:45 -05:00
USING: alien alien.c-types combinators io io.backend io.buffers
2008-05-13 19:24:46 -04:00
io.files io.ports io.windows kernel libc math namespaces
2007-11-06 20:44:45 -05:00
prettyprint sequences strings threads threads.private
2008-04-02 21:09:56 -04:00
windows windows.kernel32 io.windows.ce.backend system ;
2007-11-06 20:44:45 -05:00
IN: windows.ce.files
2008-04-02 21:09:56 -04:00
! M: wince normalize-path ( string -- string )
2007-11-06 20:44:45 -05:00
! dup 1 tail* CHAR: \\ = [ "*" append ] [ "\\*" append ] if ;
2008-04-02 21:09:56 -04:00
M: wince CreateFile-flags ( DWORD -- DWORD )
FILE_ATTRIBUTE_NORMAL bitor ;
2008-04-02 21:09:56 -04:00
M: wince FileArgs-overlapped ( port -- f ) drop f ;
2007-11-06 20:44:45 -05:00
: finish-read ( port status bytes-ret -- )
swap [ drop port-errored ] [ swap n>buffer ] if ;
2007-11-06 20:44:45 -05:00
M: win32-file wince-read
drop
dup make-FileArgs dup setup-read ReadFile zero?
swap FileArgs-lpNumberOfBytesRet *uint dup zero? [
2drop t swap set-port-eof?
2007-11-06 20:44:45 -05:00
] [
finish-read
2007-11-06 20:44:45 -05:00
] if ;
M: win32-file wince-write ( port port-handle -- )
drop dup make-FileArgs dup setup-write WriteFile zero? [
drop port-errored
] [
2007-11-07 14:01:45 -05:00
FileArgs-lpNumberOfBytesRet *uint
2007-11-09 03:01:45 -05:00
swap buffer-consume
2007-11-06 20:44:45 -05:00
] if ;