more structs
parent
f517e22e91
commit
d2accedf8d
basis
io
files/info/windows
monitors/windows/nt
windows/kernel32
|
@ -35,20 +35,17 @@ TUPLE: windows-file-info < file-info attributes ;
|
|||
: WIN32_FIND_DATA>file-info ( WIN32_FIND_DATA -- file-info )
|
||||
[ \ windows-file-info new ] dip
|
||||
{
|
||||
[ WIN32_FIND_DATA-dwFileAttributes win32-file-type >>type ]
|
||||
[ WIN32_FIND_DATA-dwFileAttributes win32-file-attributes >>attributes ]
|
||||
[
|
||||
[ WIN32_FIND_DATA-nFileSizeLow ]
|
||||
[ WIN32_FIND_DATA-nFileSizeHigh ] bi >64bit >>size
|
||||
]
|
||||
[ WIN32_FIND_DATA-dwFileAttributes >>permissions ]
|
||||
[ WIN32_FIND_DATA-ftCreationTime FILETIME>timestamp >>created ]
|
||||
[ WIN32_FIND_DATA-ftLastWriteTime FILETIME>timestamp >>modified ]
|
||||
[ WIN32_FIND_DATA-ftLastAccessTime FILETIME>timestamp >>accessed ]
|
||||
[ dwFileAttributes>> win32-file-type >>type ]
|
||||
[ dwFileAttributes>> win32-file-attributes >>attributes ]
|
||||
[ [ nFileSizeLow>> ] [ nFileSizeHigh>> ] bi >64bit >>size ]
|
||||
[ dwFileAttributes>> >>permissions ]
|
||||
[ ftCreationTime>> FILETIME>timestamp >>created ]
|
||||
[ ftLastWriteTime>> FILETIME>timestamp >>modified ]
|
||||
[ ftLastAccessTime>> FILETIME>timestamp >>accessed ]
|
||||
} cleave ;
|
||||
|
||||
: find-first-file-stat ( path -- WIN32_FIND_DATA )
|
||||
"WIN32_FIND_DATA" <c-object> [
|
||||
WIN32_FIND_DATA <struct> [
|
||||
FindFirstFile
|
||||
[ INVALID_HANDLE_VALUE = [ win32-error ] when ] keep
|
||||
FindClose win32-error=0/f
|
||||
|
|
|
@ -55,17 +55,13 @@ TUPLE: win32-monitor < monitor port ;
|
|||
memory>byte-array utf16n decode ;
|
||||
|
||||
: parse-notify-record ( buffer -- path changed )
|
||||
[
|
||||
[ FILE_NOTIFY_INFORMATION-FileName ]
|
||||
[ FILE_NOTIFY_INFORMATION-FileNameLength ]
|
||||
bi memory>u16-string
|
||||
]
|
||||
[ FILE_NOTIFY_INFORMATION-Action parse-action ] bi ;
|
||||
[ [ FileName>> ] [ FileNameLength>> ] bi memory>u16-string ]
|
||||
[ Action>> parse-action ] bi ;
|
||||
|
||||
: (file-notify-records) ( buffer -- buffer )
|
||||
dup ,
|
||||
dup FILE_NOTIFY_INFORMATION-NextEntryOffset zero? [
|
||||
[ FILE_NOTIFY_INFORMATION-NextEntryOffset ] keep <displaced-alien>
|
||||
dup NextEntryOffset>> zero? [
|
||||
[ NextEntryOffset>> ] [ <displaced-alien> ] bi
|
||||
(file-notify-records)
|
||||
] unless ;
|
||||
|
||||
|
|
|
@ -90,11 +90,12 @@ CONSTANT: FILE_ACTION_MODIFIED 3
|
|||
CONSTANT: FILE_ACTION_RENAMED_OLD_NAME 4
|
||||
CONSTANT: FILE_ACTION_RENAMED_NEW_NAME 5
|
||||
|
||||
C-STRUCT: FILE_NOTIFY_INFORMATION
|
||||
{ "DWORD" "NextEntryOffset" }
|
||||
{ "DWORD" "Action" }
|
||||
{ "DWORD" "FileNameLength" }
|
||||
{ "WCHAR[1]" "FileName" } ;
|
||||
STRUCT: FILE_NOTIFY_INFORMATION
|
||||
{ NextEntryOffset DWORD }
|
||||
{ Action DWORD }
|
||||
{ FileNameLength DWORD }
|
||||
{ FileName WCHAR[1] } ;
|
||||
|
||||
TYPEDEF: FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION
|
||||
|
||||
CONSTANT: STD_INPUT_HANDLE -10
|
||||
|
@ -694,19 +695,17 @@ C-STRUCT: OFSTRUCT
|
|||
|
||||
TYPEDEF: OFSTRUCT* LPOFSTRUCT
|
||||
|
||||
! MAX_PATH = 260
|
||||
C-STRUCT: WIN32_FIND_DATA
|
||||
{ "DWORD" "dwFileAttributes" }
|
||||
{ "FILETIME" "ftCreationTime" }
|
||||
{ "FILETIME" "ftLastAccessTime" }
|
||||
{ "FILETIME" "ftLastWriteTime" }
|
||||
{ "DWORD" "nFileSizeHigh" }
|
||||
{ "DWORD" "nFileSizeLow" }
|
||||
{ "DWORD" "dwReserved0" }
|
||||
{ "DWORD" "dwReserved1" }
|
||||
! { { "TCHAR" MAX_PATH } "cFileName" }
|
||||
{ { "TCHAR" 260 } "cFileName" }
|
||||
{ { "TCHAR" 14 } "cAlternateFileName" } ;
|
||||
STRUCT: WIN32_FIND_DATA
|
||||
{ dwFileAttributes DWORD }
|
||||
{ ftCreationTime FILETIME }
|
||||
{ ftLastAccessTime FILETIME }
|
||||
{ ftLastWriteTime FILETIME }
|
||||
{ nFileSizeHigh DWORD }
|
||||
{ nFileSizeLow DWORD }
|
||||
{ dwReserved0 DWORD }
|
||||
{ dwReserved1 DWORD }
|
||||
{ cFileName { "TCHAR" MAX_PATH } }
|
||||
{ cAlternateFileName TCHAR[14] } ;
|
||||
|
||||
STRUCT: BY_HANDLE_FILE_INFORMATION
|
||||
{ dwFileAttributes DWORD }
|
||||
|
|
Loading…
Reference in New Issue