mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-23 03:29:18 +02:00
* fix for Mantis #35906: use more accurate modified time from the FindData on Windows for the Timestamp
git-svn-id: trunk@42559 -
This commit is contained in:
parent
7809930b08
commit
3d585db43d
@ -592,31 +592,51 @@ begin
|
||||
InternalFindClose(f.FindHandle{$ifdef SEARCHREC_USEFINDDATA},f.FindData{$endif});
|
||||
end;
|
||||
|
||||
{$if defined(windows) and not defined(win16)}
|
||||
function FindDataTimeToDateTime(constref aFileTime: FILETIME; out aResult: TDateTime): Boolean;
|
||||
var
|
||||
st, lt: TSystemTime;
|
||||
begin
|
||||
Result := FileTimeToSystemTime(aFileTime, st);
|
||||
if Result then begin
|
||||
{$ifndef wince}
|
||||
if SystemTimeToTzSpecificLocalTime(Nil, st, lt) then
|
||||
aResult := SystemTimeToDateTime(lt)
|
||||
else
|
||||
{$endif}
|
||||
aResult := SystemTimeToDateTime(st);
|
||||
end;
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
{ TUnicodeSearchRec }
|
||||
|
||||
function TUnicodeSearchRec.GetTimeStamp: TDateTime;
|
||||
begin
|
||||
{$if declared(FindDataTimeToDateTime)}
|
||||
if not FindDataTimeToDateTime(FindData.ftLastWriteTime, Result) then
|
||||
{$else}
|
||||
Result := FileDateToDateTime(Time);
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
{ TRawbyteSearchRec }
|
||||
|
||||
function TRawbyteSearchRec.GetTimeStamp: TDateTime;
|
||||
begin
|
||||
{$if declared(FindDataTimeToDateTime)}
|
||||
if not FindDataTimeToDateTime(FindData.ftLastWriteTime, Result) then
|
||||
{$else}
|
||||
Result := FileDateToDateTime(Time);
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
{ TUnicodeSymLinkRec }
|
||||
|
||||
function TUnicodeSymLinkRec.GetTimeStamp: TDateTime;
|
||||
{$if defined(win32) or defined(win64) or defined(wince)}
|
||||
var
|
||||
st: TSystemTime;
|
||||
{$endif}
|
||||
begin
|
||||
{$if defined(win32) or defined(win64) or defined(wince)}
|
||||
FileTimeToSystemTime(FindData.ftLastWriteTime, st);
|
||||
Result := SystemTimeToDateTime(st);
|
||||
{$if declared(FindDataTimeToDateTime)}
|
||||
if not FindDataTimeToDateTime(FindData.ftLastWriteTime, Result) then
|
||||
{$else}
|
||||
Result := 0;
|
||||
{$endif}
|
||||
@ -625,14 +645,9 @@ end;
|
||||
{ TRawbyteSymLinkRec }
|
||||
|
||||
function TRawbyteSymLinkRec.GetTimeStamp: TDateTime;
|
||||
{$if defined(win32) or defined(win64) or defined(wince)}
|
||||
var
|
||||
st: TSystemTime;
|
||||
{$endif}
|
||||
begin
|
||||
{$if defined(win32) or defined(win64) or defined(wince)}
|
||||
FileTimeToSystemTime(FindData.ftLastWriteTime, st);
|
||||
Result := SystemTimeToDateTime(st);
|
||||
{$if declared(FindDataTimeToDateTime)}
|
||||
if not FindDataTimeToDateTime(FindData.ftLastWriteTime, Result) then
|
||||
{$else}
|
||||
Result := 0;
|
||||
{$endif}
|
||||
|
Loading…
Reference in New Issue
Block a user