use structs in a few places in windows backend
parent
847cd797bb
commit
3507616f3b
|
@ -3,7 +3,7 @@ destructors io io.backend io.ports io.timeouts io.backend.windows
|
||||||
io.files.windows io.files.windows.nt io.files io.pathnames io.buffers
|
io.files.windows io.files.windows.nt io.files io.pathnames io.buffers
|
||||||
io.streams.c io.streams.null libc kernel math namespaces sequences
|
io.streams.c io.streams.null libc kernel math namespaces sequences
|
||||||
threads windows windows.errors windows.kernel32 strings splitting
|
threads windows windows.errors windows.kernel32 strings splitting
|
||||||
ascii system accessors locals ;
|
ascii system accessors locals classes.struct ;
|
||||||
QUALIFIED: windows.winsock
|
QUALIFIED: windows.winsock
|
||||||
IN: io.backend.windows.nt
|
IN: io.backend.windows.nt
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,8 @@ USING: alien alien.c-types arrays destructors io io.backend
|
||||||
io.buffers io.files io.ports io.binary io.timeouts system
|
io.buffers io.files io.ports io.binary io.timeouts system
|
||||||
strings kernel math namespaces sequences windows.errors
|
strings kernel math namespaces sequences windows.errors
|
||||||
windows.kernel32 windows.shell32 windows.types windows.winsock
|
windows.kernel32 windows.shell32 windows.types windows.winsock
|
||||||
splitting continuations math.bitwise accessors init sets assocs ;
|
splitting continuations math.bitwise accessors init sets assocs
|
||||||
|
classes.struct classes ;
|
||||||
IN: io.backend.windows
|
IN: io.backend.windows
|
||||||
|
|
||||||
TUPLE: win32-handle < disposable handle ;
|
TUPLE: win32-handle < disposable handle ;
|
||||||
|
@ -50,6 +51,5 @@ HOOK: add-completion io-backend ( port -- )
|
||||||
} flags ; foldable
|
} flags ; foldable
|
||||||
|
|
||||||
: default-security-attributes ( -- obj )
|
: default-security-attributes ( -- obj )
|
||||||
"SECURITY_ATTRIBUTES" <c-object>
|
SECURITY_ATTRIBUTES <struct>
|
||||||
"SECURITY_ATTRIBUTES" heap-size
|
dup class heap-size >>nLength ;
|
||||||
over set-SECURITY_ATTRIBUTES-nLength ;
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ io.files.windows io.files.windows.nt kernel windows.kernel32
|
||||||
windows.time windows accessors alien.c-types combinators
|
windows.time windows accessors alien.c-types combinators
|
||||||
generalizations system alien.strings io.encodings.utf16n
|
generalizations system alien.strings io.encodings.utf16n
|
||||||
sequences splitting windows.errors fry continuations destructors
|
sequences splitting windows.errors fry continuations destructors
|
||||||
calendar ascii combinators.short-circuit locals ;
|
calendar ascii combinators.short-circuit locals classes.struct ;
|
||||||
IN: io.files.info.windows
|
IN: io.files.info.windows
|
||||||
|
|
||||||
:: round-up-to ( n multiple -- n' )
|
:: round-up-to ( n multiple -- n' )
|
||||||
|
@ -57,35 +57,26 @@ TUPLE: windows-file-info < file-info attributes ;
|
||||||
: BY_HANDLE_FILE_INFORMATION>file-info ( HANDLE_FILE_INFORMATION -- file-info )
|
: BY_HANDLE_FILE_INFORMATION>file-info ( HANDLE_FILE_INFORMATION -- file-info )
|
||||||
[ \ windows-file-info new ] dip
|
[ \ windows-file-info new ] dip
|
||||||
{
|
{
|
||||||
[ BY_HANDLE_FILE_INFORMATION-dwFileAttributes win32-file-type >>type ]
|
[ dwFileAttributes>> win32-file-type >>type ]
|
||||||
[ BY_HANDLE_FILE_INFORMATION-dwFileAttributes win32-file-attributes >>attributes ]
|
[ dwFileAttributes>> win32-file-attributes >>attributes ]
|
||||||
[
|
[
|
||||||
[ BY_HANDLE_FILE_INFORMATION-nFileSizeLow ]
|
[ nFileSizeLow>> ]
|
||||||
[ BY_HANDLE_FILE_INFORMATION-nFileSizeHigh ] bi >64bit >>size
|
[ nFileSizeHigh>> ] bi >64bit >>size
|
||||||
]
|
]
|
||||||
[ BY_HANDLE_FILE_INFORMATION-dwFileAttributes >>permissions ]
|
[ dwFileAttributes>> >>permissions ]
|
||||||
[
|
[ ftCreationTime>> FILETIME>timestamp >>created ]
|
||||||
BY_HANDLE_FILE_INFORMATION-ftCreationTime
|
[ ftLastWriteTime>> FILETIME>timestamp >>modified ]
|
||||||
FILETIME>timestamp >>created
|
[ ftLastAccessTime>> FILETIME>timestamp >>accessed ]
|
||||||
]
|
! [ nNumberOfLinks>> ]
|
||||||
[
|
|
||||||
BY_HANDLE_FILE_INFORMATION-ftLastWriteTime
|
|
||||||
FILETIME>timestamp >>modified
|
|
||||||
]
|
|
||||||
[
|
|
||||||
BY_HANDLE_FILE_INFORMATION-ftLastAccessTime
|
|
||||||
FILETIME>timestamp >>accessed
|
|
||||||
]
|
|
||||||
! [ BY_HANDLE_FILE_INFORMATION-nNumberOfLinks ]
|
|
||||||
! [
|
! [
|
||||||
! [ BY_HANDLE_FILE_INFORMATION-nFileIndexLow ]
|
! [ nFileIndexLow>> ]
|
||||||
! [ BY_HANDLE_FILE_INFORMATION-nFileIndexHigh ] bi >64bit
|
! [ nFileIndexHigh>> ] bi >64bit
|
||||||
! ]
|
! ]
|
||||||
} cleave ;
|
} cleave ;
|
||||||
|
|
||||||
: get-file-information ( handle -- BY_HANDLE_FILE_INFORMATION )
|
: get-file-information ( handle -- BY_HANDLE_FILE_INFORMATION )
|
||||||
[
|
[
|
||||||
"BY_HANDLE_FILE_INFORMATION" <c-object>
|
BY_HANDLE_FILE_INFORMATION <struct>
|
||||||
[ GetFileInformationByHandle win32-error=0/f ] keep
|
[ GetFileInformationByHandle win32-error=0/f ] keep
|
||||||
] keep CloseHandle win32-error=0/f ;
|
] keep CloseHandle win32-error=0/f ;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
! Copyright (C) 2005, 2006 Doug Coleman.
|
! Copyright (C) 2005, 2006 Doug Coleman.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: alien alien.syntax kernel windows.types multiline ;
|
USING: alien alien.syntax kernel windows.types multiline
|
||||||
|
classes.struct ;
|
||||||
IN: windows.kernel32
|
IN: windows.kernel32
|
||||||
|
|
||||||
CONSTANT: MAX_PATH 260
|
CONSTANT: MAX_PATH 260
|
||||||
|
@ -707,17 +708,17 @@ C-STRUCT: WIN32_FIND_DATA
|
||||||
{ { "TCHAR" 260 } "cFileName" }
|
{ { "TCHAR" 260 } "cFileName" }
|
||||||
{ { "TCHAR" 14 } "cAlternateFileName" } ;
|
{ { "TCHAR" 14 } "cAlternateFileName" } ;
|
||||||
|
|
||||||
C-STRUCT: BY_HANDLE_FILE_INFORMATION
|
STRUCT: BY_HANDLE_FILE_INFORMATION
|
||||||
{ "DWORD" "dwFileAttributes" }
|
{ dwFileAttributes DWORD }
|
||||||
{ "FILETIME" "ftCreationTime" }
|
{ ftCreationTime FILETIME }
|
||||||
{ "FILETIME" "ftLastAccessTime" }
|
{ ftLastAccessTime FILETIME }
|
||||||
{ "FILETIME" "ftLastWriteTime" }
|
{ ftLastWriteTime FILETIME }
|
||||||
{ "DWORD" "dwVolumeSerialNumber" }
|
{ dwVolumeSerialNumber DWORD }
|
||||||
{ "DWORD" "nFileSizeHigh" }
|
{ nFileSizeHigh DWORD }
|
||||||
{ "DWORD" "nFileSizeLow" }
|
{ nFileSizeLow DWORD }
|
||||||
{ "DWORD" "nNumberOfLinks" }
|
{ nNumberOfLinks DWORD }
|
||||||
{ "DWORD" "nFileIndexHigh" }
|
{ nFileIndexHigh DWORD }
|
||||||
{ "DWORD" "nFileIndexLow" } ;
|
{ nFileIndexLow DWORD } ;
|
||||||
|
|
||||||
TYPEDEF: WIN32_FIND_DATA* PWIN32_FIND_DATA
|
TYPEDEF: WIN32_FIND_DATA* PWIN32_FIND_DATA
|
||||||
TYPEDEF: WIN32_FIND_DATA* LPWIN32_FIND_DATA
|
TYPEDEF: WIN32_FIND_DATA* LPWIN32_FIND_DATA
|
||||||
|
@ -737,10 +738,10 @@ TYPEDEF: PFILETIME LPFILETIME
|
||||||
|
|
||||||
TYPEDEF: int GET_FILEEX_INFO_LEVELS
|
TYPEDEF: int GET_FILEEX_INFO_LEVELS
|
||||||
|
|
||||||
C-STRUCT: SECURITY_ATTRIBUTES
|
STRUCT: SECURITY_ATTRIBUTES
|
||||||
{ "DWORD" "nLength" }
|
{ nLength DWORD }
|
||||||
{ "LPVOID" "lpSecurityDescriptor" }
|
{ lpSecurityDescriptor LPVOID }
|
||||||
{ "BOOL" "bInheritHandle" } ;
|
{ bInheritHandle BOOL } ;
|
||||||
|
|
||||||
CONSTANT: HANDLE_FLAG_INHERIT 1
|
CONSTANT: HANDLE_FLAG_INHERIT 1
|
||||||
CONSTANT: HANDLE_FLAG_PROTECT_FROM_CLOSE 2
|
CONSTANT: HANDLE_FLAG_PROTECT_FROM_CLOSE 2
|
||||||
|
|
Loading…
Reference in New Issue