update stream seeking on windows for new api
parent
bc0521f88a
commit
44a4c20f23
|
@ -82,7 +82,17 @@ M: winnt init-io ( -- )
|
|||
H{ } clone pending-overlapped set-global
|
||||
windows.winsock:init-winsock ;
|
||||
|
||||
M: winnt (stream-seek) ( n stream -- ) 2drop ;
|
||||
ERROR: invalid-file-size n ;
|
||||
|
||||
: handle>file-size ( handle -- n )
|
||||
0 <ulonglong> [ GetFileSizeEx win32-error=0/f ] keep *ulonglong ;
|
||||
|
||||
M: winnt (stream-seek) ( n seek-type stream -- )
|
||||
swap {
|
||||
{ seek-absolute [ handle>> (>>ptr) ] }
|
||||
{ seek-relative [ handle>> [ + ] change-ptr drop ] }
|
||||
{ seek-end [ handle>> [ handle>> handle>file-size + ] keep (>>ptr) ] }
|
||||
} case ;
|
||||
|
||||
: file-error? ( n -- eof? )
|
||||
zero? [
|
||||
|
|
|
@ -21,15 +21,15 @@ M: buffer dispose* ptr>> free ;
|
|||
: buffer-reset ( n buffer -- )
|
||||
swap >>fill 0 >>pos drop ;
|
||||
|
||||
: buffer-reset-hard ( buffer -- )
|
||||
0 >>fill 0 >>pos drop ;
|
||||
|
||||
: buffer-capacity ( buffer -- n )
|
||||
[ size>> ] [ fill>> ] bi - ; inline
|
||||
|
||||
: buffer-empty? ( buffer -- ? )
|
||||
fill>> zero? ; inline
|
||||
|
||||
: buffer-seek ( n buffer -- )
|
||||
0 >>fill 0 >>pos 2drop ; inline
|
||||
|
||||
: buffer-consume ( n buffer -- )
|
||||
[ + ] change-pos
|
||||
dup [ pos>> ] [ fill>> ] bi <
|
||||
|
|
|
@ -124,7 +124,7 @@ HOOK: (stream-seek) os ( n seek-type stream -- )
|
|||
|
||||
M: port stream-seek ( n seek-type stream -- )
|
||||
dup check-disposed
|
||||
[ nip buffer>> buffer-seek ] [ (stream-seek) ] 3bi ;
|
||||
[ buffer>> buffer-reset-hard 2drop ] [ (stream-seek) ] 3bi ;
|
||||
|
||||
|
||||
GENERIC: shutdown ( handle -- )
|
||||
|
|
|
@ -1235,7 +1235,7 @@ ALIAS: GetFileAttributesEx GetFileAttributesExW
|
|||
|
||||
FUNCTION: BOOL GetFileInformationByHandle ( HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation ) ;
|
||||
FUNCTION: DWORD GetFileSize ( HANDLE hFile, LPDWORD lpFileSizeHigh ) ;
|
||||
! FUNCTION: GetFileSizeEx
|
||||
FUNCTION: BOOL GetFileSizeEx ( HANDLE hFile, PLARGE_INTEGER lpFileSize ) ;
|
||||
FUNCTION: BOOL GetFileTime ( HANDLE hFile, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime ) ;
|
||||
FUNCTION: DWORD GetFileType ( HANDLE hFile ) ;
|
||||
! FUNCTION: GetFirmwareEnvironmentVariableA
|
||||
|
|
Loading…
Reference in New Issue