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