mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
FIX: Compiling WFX plugins
This commit is contained in:
parent
2c36822198
commit
055b98cdb9
5 changed files with 58 additions and 31 deletions
|
|
@ -1,9 +1,9 @@
|
|||
unit WfxPlugin; {Plugin definitions version 1.5}
|
||||
unit WfxPlugin; { Plugin definitions version 2.0 }
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
SysUtils {$IFDEF MSWINDOWS}, Windows{$ENDIF}, uTypes;
|
||||
SysUtils {$IFDEF MSWINDOWS}, Windows{$ENDIF};
|
||||
|
||||
{ ids for FsGetFile }
|
||||
|
||||
|
|
@ -186,7 +186,7 @@ type
|
|||
TInt64Rec = packed record
|
||||
case Boolean of
|
||||
True : (Value : Int64);
|
||||
False : (Low,High : DWORD);
|
||||
False : (Low, High : DWORD);
|
||||
end;
|
||||
|
||||
BOOL = LongBool;
|
||||
|
|
@ -195,14 +195,27 @@ type
|
|||
HWND = THandle;
|
||||
|
||||
type
|
||||
{$IFDEF MSWINDOWS}
|
||||
FILETIME = Windows.FILETIME;
|
||||
{$ELSE}
|
||||
FILETIME = packed record
|
||||
dwLowDateTime : DWORD;
|
||||
dwHighDateTime : DWORD;
|
||||
end;
|
||||
{$ENDIF}
|
||||
TFileTime = FILETIME; // for compatibility with all plugins
|
||||
PFileTime = ^FILETIME;
|
||||
TWfxFileTime = FILETIME;
|
||||
PWfxFileTime = ^FILETIME;
|
||||
|
||||
{$IFDEF MSWINDOWS}
|
||||
WIN32_FIND_DATAA = Windows.WIN32_FIND_DATA;
|
||||
{$ELSE}
|
||||
WIN32_FIND_DATAA = record
|
||||
WIN32_FIND_DATAA = packed record
|
||||
dwFileAttributes : DWORD;
|
||||
ftCreationTime : TWinFileTime;
|
||||
ftLastAccessTime : TWinFileTime;
|
||||
ftLastWriteTime : TWinFileTime;
|
||||
ftCreationTime : TFILETIME;
|
||||
ftLastAccessTime : TFILETIME;
|
||||
ftLastWriteTime : TFILETIME;
|
||||
nFileSizeHigh : DWORD;
|
||||
nFileSizeLow : DWORD;
|
||||
dwReserved0 : DWORD;
|
||||
|
|
@ -216,11 +229,11 @@ type
|
|||
{$IFDEF MSWINDOWS}
|
||||
WIN32_FIND_DATAW = Windows.WIN32_FIND_DATAW;
|
||||
{$ELSE}
|
||||
WIN32_FIND_DATAW = record
|
||||
WIN32_FIND_DATAW = packed record
|
||||
dwFileAttributes : DWORD;
|
||||
ftCreationTime : TWinFileTime;
|
||||
ftLastAccessTime : TWinFileTime;
|
||||
ftLastWriteTime : TWinFileTime;
|
||||
ftCreationTime : TFILETIME;
|
||||
ftLastAccessTime : TFILETIME;
|
||||
ftLastWriteTime : TFILETIME;
|
||||
nFileSizeHigh : DWORD;
|
||||
nFileSizeLow : DWORD;
|
||||
dwReserved0 : DWORD;
|
||||
|
|
@ -237,7 +250,7 @@ type
|
|||
|
||||
SizeLow,SizeHigh:longint;
|
||||
|
||||
LastWriteTime: TWinFileTime;
|
||||
LastWriteTime:TFileTime;
|
||||
|
||||
Attr:longint;
|
||||
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ begin
|
|||
if (aTemplateProperty as TFileModificationDateTimeProperty).Value <>
|
||||
(aFile.Properties[fpModificationTime] as TFileModificationDateTimeProperty).Value then
|
||||
begin
|
||||
ftTime := DateTimeToFileTime((aTemplateProperty as TFileModificationDateTimeProperty).Value);
|
||||
ftTime := DateTimeToWfxFileTime((aTemplateProperty as TFileModificationDateTimeProperty).Value);
|
||||
with FWfxPluginFileSource.WfxModule do
|
||||
Result := WfxSetTime(aFile.FullPath, nil, nil, @ftTime);
|
||||
end;
|
||||
|
|
@ -180,7 +180,7 @@ begin
|
|||
if (aTemplateProperty as TFileCreationDateTimeProperty).Value <>
|
||||
(aFile.Properties[fpCreationTime] as TFileCreationDateTimeProperty).Value then
|
||||
begin
|
||||
ftTime := DateTimeToFileTime((aTemplateProperty as TFileCreationDateTimeProperty).Value);
|
||||
ftTime := DateTimeToWfxFileTime((aTemplateProperty as TFileCreationDateTimeProperty).Value);
|
||||
with FWfxPluginFileSource.WfxModule do
|
||||
Result := WfxSetTime(aFile.FullPath, @ftTime, nil, nil);
|
||||
end;
|
||||
|
|
@ -189,7 +189,7 @@ begin
|
|||
if (aTemplateProperty as TFileLastAccessDateTimeProperty).Value <>
|
||||
(aFile.Properties[fpLastAccessTime] as TFileLastAccessDateTimeProperty).Value then
|
||||
begin
|
||||
ftTime := DateTimeToFileTime((aTemplateProperty as TFileLastAccessDateTimeProperty).Value);
|
||||
ftTime := DateTimeToWfxFileTime((aTemplateProperty as TFileLastAccessDateTimeProperty).Value);
|
||||
with FWfxPluginFileSource.WfxModule do
|
||||
Result := WfxSetTime(aFile.FullPath, nil, @ftTime, nil);
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, LCLProc, uLog, uGlobs,
|
||||
WfxPlugin,
|
||||
uFile,
|
||||
uFileSource,
|
||||
uFileSourceOperation,
|
||||
|
|
@ -82,11 +83,14 @@ type
|
|||
|
||||
function WfxRenameFile(aFileSource: IWfxPluginFileSource; const aFile: TFile; const NewFileName: UTF8String): Boolean;
|
||||
|
||||
function WfxFileTimeToDateTime(FileTime : TWfxFileTime) : TDateTime; inline;
|
||||
function DateTimeToWfxFileTime(DateTime : TDateTime) : TWfxFileTime; inline;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
uFileProcs, uDCUtils, uLng, WfxPlugin, uWfxModule, uFileSystemUtil, uFileProperty,
|
||||
uDateTimeUtils;
|
||||
uFileProcs, uDCUtils, uLng, uWfxModule, uFileSystemUtil, uFileProperty,
|
||||
uDateTimeUtils, uTypes;
|
||||
|
||||
function WfxRenameFile(aFileSource: IWfxPluginFileSource; const aFile: TFile; const NewFileName: UTF8String): Boolean;
|
||||
var
|
||||
|
|
@ -100,13 +104,23 @@ begin
|
|||
iTemp.Value := (aFile.Properties[fpSize] as TFileSizeProperty).Value;
|
||||
SizeLow := iTemp.Low;
|
||||
SizeHigh := iTemp.High;
|
||||
LastWriteTime := DateTimeToWinFileTime((aFile.Properties[fpModificationTime] as TFileModificationDateTimeProperty).Value);
|
||||
LastWriteTime := DateTimeToWfxFileTime((aFile.Properties[fpModificationTime] as TFileModificationDateTimeProperty).Value);
|
||||
Attr := LongInt((aFile.Properties[fpAttributes] as TFileAttributesProperty).Value);
|
||||
end;
|
||||
Result := (WfxCopyMove(aFile.Path + aFile.Name, NewFileName, FS_COPYFLAGS_MOVE, @RemoteInfo, True, True) = FS_FILE_OK);
|
||||
end;
|
||||
end;
|
||||
|
||||
function WfxFileTimeToDateTime(FileTime: TWfxFileTime): TDateTime;
|
||||
begin
|
||||
Result:= WinFileTimeToDateTime(TWinFileTime(FileTime));
|
||||
end;
|
||||
|
||||
function DateTimeToWfxFileTime(DateTime: TDateTime): TWfxFileTime;
|
||||
begin
|
||||
Result:= TWfxFileTime(DateTimeToWinFileTime(DateTime));
|
||||
end;
|
||||
|
||||
{ TWfxPluginOperationHelper }
|
||||
|
||||
procedure TWfxPluginOperationHelper.ShowError(sMessage: String);
|
||||
|
|
@ -183,7 +197,7 @@ begin
|
|||
iTemp.Value := (aFile.Properties[fpSize] as TFileSizeProperty).Value;
|
||||
SizeLow := iTemp.Low;
|
||||
SizeHigh := iTemp.High;
|
||||
LastWriteTime := DateTimeToFileTime((aFile.Properties[fpModificationTime] as TFileModificationDateTimeProperty).Value);
|
||||
LastWriteTime := DateTimeToWfxFileTime((aFile.Properties[fpModificationTime] as TFileModificationDateTimeProperty).Value);
|
||||
Attr := LongInt((aFile.Properties[fpAttributes] as TFileAttributesProperty).Value);
|
||||
end;
|
||||
Result := WfxCopyMove(aFile.Path + aFile.Name, AbsoluteTargetFileName, iFlags, @RemoteInfo, FInternal, FMode = wpohmCopyMoveIn);
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ type
|
|||
{en
|
||||
Each of CreationTime, LastAccessTime, LastWriteTime may be @nil to leave the value unchanged.
|
||||
}
|
||||
function WfxSetTime(RemoteName: UTF8String; pCreationTime, pLastAccessTime, pLastWriteTime: PWinFileTime): Boolean;
|
||||
function WfxSetTime(RemoteName: UTF8String; pCreationTime, pLastAccessTime, pLastWriteTime: PWfxFileTime): Boolean;
|
||||
function WfxMkDir(const sBasePath, sDirName: UTF8String): LongInt;
|
||||
function WfxRemoveDir(const sDirName: UTF8String): Boolean;
|
||||
function WfxDeleteFile(const sFileName: UTF8String): Boolean;
|
||||
|
|
@ -181,7 +181,7 @@ type
|
|||
implementation
|
||||
|
||||
uses
|
||||
LCLProc, uLng, FileUtil, uGlobsPaths, uDCUtils, uOSUtils, uDateTimeUtils,
|
||||
LCLProc, uLng, FileUtil, uGlobsPaths, uDCUtils, uOSUtils, uWfxPluginUtil,
|
||||
fDialogBox;
|
||||
|
||||
const
|
||||
|
|
@ -213,9 +213,9 @@ begin
|
|||
with Result do
|
||||
begin
|
||||
FileAttributes:= FindData.dwFileAttributes;
|
||||
CreationTime:= WinFileTimeToDateTime(FindData.ftCreationTime);
|
||||
LastAccessTime:= WinFileTimeToDateTime(FindData.ftLastAccessTime);
|
||||
LastWriteTime:= WinFileTimeToDateTime(FindData.ftLastWriteTime);
|
||||
CreationTime:= WfxFileTimeToDateTime(FindData.ftCreationTime);
|
||||
LastAccessTime:= WfxFileTimeToDateTime(FindData.ftLastAccessTime);
|
||||
LastWriteTime:= WfxFileTimeToDateTime(FindData.ftLastWriteTime);
|
||||
FileSize:= (Int64(FindData.nFileSizeHigh) * MAXDWORD) + FindData.nFileSizeLow;
|
||||
Reserved0:= FindData.dwReserved0;
|
||||
Reserved1:= FindData.dwReserved1;
|
||||
|
|
@ -229,9 +229,9 @@ begin
|
|||
with Result do
|
||||
begin
|
||||
FileAttributes:= FindData.dwFileAttributes;
|
||||
CreationTime:= WinFileTimeToDateTime(FindData.ftCreationTime);
|
||||
LastAccessTime:= WinFileTimeToDateTime(FindData.ftLastAccessTime);
|
||||
LastWriteTime:= WinFileTimeToDateTime(FindData.ftLastWriteTime);
|
||||
CreationTime:= WfxFileTimeToDateTime(FindData.ftCreationTime);
|
||||
LastAccessTime:= WfxFileTimeToDateTime(FindData.ftLastAccessTime);
|
||||
LastWriteTime:= WfxFileTimeToDateTime(FindData.ftLastWriteTime);
|
||||
FileSize:= (Int64(FindData.nFileSizeHigh) * MAXDWORD) + FindData.nFileSizeLow;
|
||||
Reserved0:= FindData.dwReserved0;
|
||||
Reserved1:= FindData.dwReserved1;
|
||||
|
|
@ -357,7 +357,7 @@ begin
|
|||
end;
|
||||
|
||||
function TWFXModule.WfxSetTime(RemoteName: UTF8String; pCreationTime,
|
||||
pLastAccessTime, pLastWriteTime: PWinFileTime): Boolean;
|
||||
pLastAccessTime, pLastWriteTime: PWfxFileTime): Boolean;
|
||||
begin
|
||||
Result:= False;
|
||||
if Assigned(FsSetTimeW) then
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ unit uWFXprototypes;
|
|||
interface
|
||||
|
||||
uses
|
||||
WfxPlugin, uTypes;
|
||||
WfxPlugin;
|
||||
|
||||
type
|
||||
{File system plugins API (version 2.0) for TC}
|
||||
|
|
@ -29,7 +29,7 @@ type
|
|||
{R} TFsGetDefRootName=procedure (DefRootName:pchar;maxlen:integer); stdcall;
|
||||
//------------------------------------------------------
|
||||
{U} TFsSetAttr=function (RemoteName:pchar;NewAttr:integer):boolean; stdcall;
|
||||
{U} TFsSetTime=Function(RemoteName:pchar;CreationTime,LastAccessTime,LastWriteTime:PWinFileTime):boolean; stdcall;
|
||||
{U} TFsSetTime=Function(RemoteName:pchar;CreationTime,LastAccessTime,LastWriteTime:PWfxFileTime):boolean; stdcall;
|
||||
{U} TFsExtractCustomIcon=function(RemoteName:pchar;ExtractFlags:integer;var TheIcon:hicon):integer; stdcall;
|
||||
{U} TFsRenMovFile= function(OldName,NewName:pchar; Move, OverWrite:boolean; ri:pRemoteInfo):Integer; stdcall;
|
||||
{U} TFsDisconnect = function (DisconnectRoot:pchar):boolean; stdcall;
|
||||
|
|
@ -62,7 +62,7 @@ type
|
|||
TFsRemoveDirW = function(RemoteName:pwidechar):bool; stdcall;
|
||||
TFsDisconnectW = function(DisconnectRoot:pwidechar):bool; stdcall;
|
||||
TFsSetAttrW = function(RemoteName:pwidechar;NewAttr:integer):bool; stdcall;
|
||||
TFsSetTimeW = function(RemoteName:pwidechar;CreationTime,LastAccessTime, LastWriteTime:PWinFileTime):bool; stdcall;
|
||||
TFsSetTimeW = function(RemoteName:pwidechar;CreationTime,LastAccessTime, LastWriteTime:PWfxFileTime):bool; stdcall;
|
||||
TFsStatusInfoW = procedure(RemoteDir:pwidechar;InfoStartEnd,InfoOperation:integer); stdcall;
|
||||
TFsExtractCustomIconW = function(RemoteName:pwidechar;ExtractFlags:integer; var TheIcon:hicon):integer; stdcall;
|
||||
TFsGetPreviewBitmapW = function(RemoteName:pwidechar;width,height:integer; var ReturnedBitmap:hbitmap):integer; stdcall;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue