From 6a3242c27db9f12e0a6e4091f2a1f1d3b208157d Mon Sep 17 00:00:00 2001 From: sekelsenmat Date: Wed, 27 Jun 2012 07:06:57 +0000 Subject: [PATCH] Patch from bug #21984: Improves FileSetDataUTF8 git-svn-id: trunk@37794 - --- components/lazutils/fileutil.inc | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/components/lazutils/fileutil.inc b/components/lazutils/fileutil.inc index 9032ef6fa5..77c59269ba 100644 --- a/components/lazutils/fileutil.inc +++ b/components/lazutils/fileutil.inc @@ -95,9 +95,36 @@ begin end; function FileSetDateUTF8(const FileName: String; Age: Longint): Longint; +{$IFDEF Windows} + {$ifdef WindowsUnicodeSupport} + Function ADosTimeToWinTime (DosTime:longint;Var Wintime : TFileTime):longbool; + var + lft : TFileTime; + begin + ADosTimeToWinTime:=DosDateTimeToFileTime(longrec(DosTime).hi,longrec(DosTime).lo,@lft) and + LocalFileTimeToFileTime(lft,Wintime); + end; +var + FT:TFileTime; + {$endif} +{$ENDIF} begin + {$IFDEF WINDOWS} + {$ifdef WindowsUnicodeSupport} + if (ADosTimeToWinTime(Age,FT) and + SetFileTime(CreateFileW(PWideChar(UTF8ToUTF16(FileName)), + FILE_WRITE_ATTRIBUTES, + 0, nil, OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, 0), + nil, nil, @FT)) then Exit; + Result := GetLastError; + {$else} + Result:=SysUtils.FileSetDate(UTF8ToSys(Filename),Age); + {$endif} + {$ELSE} Result:=SysUtils.FileSetDate(UTF8ToSys(Filename),Age); -end; + {$ENDIF} +end; function ParamStrUTF8(Param: Integer): string; begin