From 752ba6763552663d1ec40819da83cb1198dff9d4 Mon Sep 17 00:00:00 2001 From: michael Date: Fri, 2 Sep 2005 09:57:43 +0000 Subject: [PATCH] + Added Windows-Compatible GetTempFileName to sysutils git-svn-id: trunk@1031 - --- rtl/objpas/sysutils/osutil.inc | 21 +++++++++++++++++++++ rtl/objpas/sysutils/osutilsh.inc | 2 ++ rtl/win32/sysutils.pp | 10 ++++++++++ 3 files changed, 33 insertions(+) diff --git a/rtl/objpas/sysutils/osutil.inc b/rtl/objpas/sysutils/osutil.inc index 039da0b0ca..0762491e5d 100644 --- a/rtl/objpas/sysutils/osutil.inc +++ b/rtl/objpas/sysutils/osutil.inc @@ -204,3 +204,24 @@ begin Result:=GetTempFileName('',''); end; +{$ifndef win32} +Function GetTempFileName(Dir,Prefix: PChar; uUnique: DWORD; TempFileName: PChar):DWORD; + +Var + P,Buf : String; + L : Integer; + +begin + P:=StrPas(Prefix); + if (uUnique<>0) then + P:=P+format('%.4x',[uUnique]); + Buf:=GetTempFileName(StrPas(Dir),P); + L:=Length(Buf); + If (L>0) then + Move(Buf[1],TempFileName^,L+1); + if (uUnique<>0) then + result:=uUnique + else + result:=1; +end; +{$endif} diff --git a/rtl/objpas/sysutils/osutilsh.inc b/rtl/objpas/sysutils/osutilsh.inc index e62a67999e..639ab51469 100644 --- a/rtl/objpas/sysutils/osutilsh.inc +++ b/rtl/objpas/sysutils/osutilsh.inc @@ -32,6 +32,8 @@ Function GetTempDir(Global : Boolean) : String; Function GetTempDir : String; Function GetTempFileName(Const Dir,Prefix : String) : String; Function GetTempFileName : String; +{ For windows compatibility } +function GetTempFileName(Dir,Prefix: PChar; uUnique: DWORD; TempFileName: PChar):DWORD; Function GetAppConfigDir(Global : Boolean) : String; Function GetAppConfigFile(Global : Boolean) : String; Function GetAppConfigFile(Global : Boolean; SubDir : Boolean) : String; diff --git a/rtl/win32/sysutils.pp b/rtl/win32/sysutils.pp index d60bd1fc2c..1744292bfb 100644 --- a/rtl/win32/sysutils.pp +++ b/rtl/win32/sysutils.pp @@ -60,6 +60,16 @@ implementation { Include platform independent implementation part } {$i sysutils.inc} +Function SysGetTempFileName(lpPathName:LPCSTR; lpPrefixString:LPCSTR; uUnique:UINT; lpTempFileName:LPSTR):UINT; external 'kernel32' name 'GetTempFileNameA'; + +function GetTempFileName(Dir,Prefix: PChar; uUnique: DWORD; TempFileName: PChar):DWORD; + +begin + Result:=SysGetTempFileName(Dir,Prefix,uUnique,TempFileName); +end; + + + { UUID generation. } function CoCreateGuid(out guid: TGUID): HResult; stdcall; external 'ole32.dll' name 'CoCreateGuid';