From a2144dfb032bd7ccd3c89b1bea19183938f7bd95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Van=20Canneyt?= Date: Sat, 4 Feb 2023 10:42:32 +0100 Subject: [PATCH] * Attempt to fix FileGetDateTimeInfo (cherry picked from commit 4f029720be5ac7c4cc66cc2c0ae221656c34ca10) --- rtl/wince/sysutils.pp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/rtl/wince/sysutils.pp b/rtl/wince/sysutils.pp index 80e1e05181..7a6df222aa 100644 --- a/rtl/wince/sysutils.pp +++ b/rtl/wince/sysutils.pp @@ -33,6 +33,7 @@ uses {$DEFINE HAS_OSCONFIG} {$DEFINE HAS_TEMPDIR} {$DEFINE HAS_LOCALTIMEZONEOFFSET} +{$DEFINE HAS_FILEGETDATETIMEINFO} { used OS file system APIs use ansistring } {$define SYSUTILS_HAS_UNICODESTR_FILEUTIL_IMPL} @@ -270,6 +271,33 @@ begin Result := -1; end; +function FileGetDateTimeInfo(const FileName: string; + out DateTime: TDateTimeInfoRec; FollowLink: Boolean = True): Boolean; +var + Data: TWin32FindDataW; + FN: unicodestring; +begin + Result := False; + SetLastError(ERROR_SUCCESS); + FN:=FileName; + if Not GetFileAttributesExW(PWideChar(FileName), GetFileExInfoStandard, @Data) then + exit; + if ((Data.dwFileAttributes and faSymlink)=faSymlink) then + begin + if FollowLink then + begin + FN:=FollowSymlink(FileName); + if FN='' then + exit; + if not GetFileAttributesExW(PWideChar(FN), GetFileExInfoStandard, @Data) then + exit; + end; + end; + DateTime.Data:=Data; + Result:=True; +end; + + function FileGetSymLinkTarget(const FileName: UnicodeString; out SymLinkRec: TUnicodeSymLinkRec): Boolean; begin