more structs

db4
Doug Coleman 2009-08-29 13:45:25 -05:00
parent f517e22e91
commit d2accedf8d
3 changed files with 29 additions and 37 deletions

View File

@ -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

View File

@ -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 ;

View File

@ -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 }