1
0
mirror of https://github.com/winscp/winscp.git synced 2026-10-24 02:28:55 +03:00

Updating JCL code for WinSCP

As it is not official release, adding commit number to About dialog

Source commit: 05ed0c991e14b740e0da19f69747a24a17f4456a
This commit is contained in:
Martin Prikryl
2024-05-22 11:22:08 +00:00
parent 5722ac5991
commit dfdffc985f
10 changed files with 75 additions and 54 deletions

View File

@@ -97,6 +97,9 @@
<CppCompile Include="Jcl.cpp">
<BuildOrder>0</BuildOrder>
</CppCompile>
<DelphiCompile Include="packages\jcl\JclAnsiStrings.pas">
<BuildOrder>14</BuildOrder>
</DelphiCompile>
<DelphiCompile Include="packages\jcl\JclBase.pas">
<BuildOrder>3</BuildOrder>
</DelphiCompile>
@@ -130,6 +133,9 @@
<DelphiCompile Include="packages\jcl\JclSysUtils.pas">
<BuildOrder>12</BuildOrder>
</DelphiCompile>
<DelphiCompile Include="packages\jcl\JclTD32.pas">
<BuildOrder>15</BuildOrder>
</DelphiCompile>
<DelphiCompile Include="packages\jcl\JclWin32.pas">
<BuildOrder>13</BuildOrder>
</DelphiCompile>

View File

@@ -283,7 +283,7 @@ void __fastcall TAboutDialog::DoLoadThirdParty()
#endif
UnicodeString JclVersion =
FormatVersion(JclVersionMajor, JclVersionMinor, JclVersionRelease);
FormatVersion(JclVersionMajor, JclVersionMinor, JclVersionRelease) + L" " + JclCommit;
AddPara(ThirdParty,
FMTLOAD(ABOUT_JCL, (JclVersion)) + Br +
CreateLink(LoadStr(ABOUT_JCL_URL)));

View File

@@ -527,7 +527,9 @@ function StrIdent(const S: AnsiString; var Index: SizeInt; out Ident: AnsiString
function StrIdent(var S: PAnsiChar; out Ident: AnsiString): Boolean; overload;
function StrToFloatSafe(const S: AnsiString): Float;
function StrToIntSafe(const S: AnsiString): Integer;
{$IFNDEF WINSCP}
procedure StrNormIndex(const StrLen: SizeInt; var Index: SizeInt; var Count: SizeInt); overload;
{$ENDIF}
function ArrayOf(List: TJclAnsiStrings): TDynStringArray; overload;
@@ -606,7 +608,7 @@ uses
{$ENDIF}
{$ENDIF HAS_UNIT_RTLCONSTS}
{$ENDIF SUPPORTS_UNICODE}
JclLogic, JclResources, JclStreams, JclSynch, JclSysUtils;
{$IFNDEF WINSCP}JclLogic,{$ENDIF WINSCP} JclResources, JclStreams, JclSynch, JclSysUtils;
//=== Internal ===============================================================
@@ -4007,11 +4009,13 @@ begin
Result := Trunc(StrToFloatSafe(S));
end;
{$IFNDEF WINSCP}
procedure StrNormIndex(const StrLen: SizeInt; var Index: SizeInt; var Count: SizeInt); overload;
begin
Index := Max(1, Min(Index, StrLen + 1));
Count := Max(0, Min(Count, StrLen + 1 - Index));
end;
{$ENDIF WINSCP}
function ArrayOf(List: TJclAnsiStrings): TDynStringArray;
var

View File

@@ -64,6 +64,7 @@ const
JclVersionMinor = 8; // Fifth minor release since JCL 1.90
JclVersionRelease = 0; // 0: pre-release|beta/ 1: release
JclVersionBuild = 5677; // build number, days since march 1, 2000
JclCommit = '6380ce72';
JclVersion = (JclVersionMajor shl 24) or (JclVersionMinor shl 16) or
(JclVersionRelease shl 15) or (JclVersionBuild shl 0);

View File

@@ -1131,25 +1131,9 @@ uses
System.AnsiStrings,
{$ENDIF ~WINSCP}
{$ENDIF MSWINDOWS}
JclHookExcept, {$IFNDEF WINSCP}JclAnsiStrings,{$ENDIF ~WINSCP} JclStrings, JclSysInfo, JclSysUtils, JclWin32,
JclHookExcept, JclAnsiStrings, JclStrings, JclSysInfo, JclSysUtils, JclWin32,
{$IFNDEF WINSCP}JclStringConversions,{$ENDIF ~WINSCP} JclResources;
{$IFDEF WINSCP}
// from JclAnsiStrings.pas
function StrLICompA(const Str1, Str2: PAnsiChar; MaxLen: Cardinal): Integer;
begin
Result := {$IFDEF DEPRECATED_SYSUTILS_ANSISTRINGS}System.AnsiStrings.{$ENDIF}StrIComp(Str1, Str2);
end;
function StrPLCopyA(Dest: PAnsiChar; const Source: AnsiString; MaxLen: Cardinal): PAnsiChar;
begin
Result := {$IFDEF DEPRECATED_SYSUTILS_ANSISTRINGS}System.AnsiStrings.{$ENDIF}StrPLCopy(Dest, Source, MaxLen);
end;
{$ENDIF}
//=== Helper assembler routines ==============================================
const
@@ -4440,13 +4424,13 @@ begin
end;
end;
{$ENDIF ~WINSCP}
procedure TJclDebugInfoTD32.GenerateUnmangledNames;
begin
FImage.TD32Scanner.GenerateUnmangledNames;
end;
{$ENDIF ~WINSCP}
{$ENDIF BORLAND}
//=== { TJclDebugInfoSymbols } ===============================================

View File

@@ -307,7 +307,9 @@ function GetSizeOfFile(const FileName: string): Int64; overload;
function GetSizeOfFile(const FileInfo: TSearchRec): Int64; overload;
{$IFDEF MSWINDOWS}
function GetSizeOfFile(Handle: THandle): Int64; overload;
{$IFNDEF WINSCP}
function GetStandardFileInfo(const FileName: string): TWin32FileAttributeData;
{$ENDIF}
{$ENDIF MSWINDOWS}
function IsDirectory(const FileName: string {$IFDEF UNIX}; ResolveSymLinks: Boolean = True {$ENDIF}): Boolean;
function IsRootDirectory(const CanonicFileName: string): Boolean;
@@ -4395,6 +4397,7 @@ function GetFileAttributesEx(lpFileName: PChar;
external kernel32 name 'GetFileAttributesExA';
{$ENDIF FPC}
{$IFNDEF WINSCP}
function GetStandardFileInfo(const FileName: string): TWin32FileAttributeData;
var
Handle: THandle;
@@ -4428,6 +4431,7 @@ begin
raise EJclFileUtilsError.CreateResFmt(@RsFileUtilsAttrUnavailable, [FileName]);
end;
end;
{$ENDIF}
{$ENDIF MSWINDOWS}

View File

@@ -1129,7 +1129,7 @@ uses
Character,
{$ENDIF HAS_UNIT_CHARACTER}
{$ENDIF ~HAS_UNITSCOPE}
{$IFNDEF WINSCP}JclLogic,{$ELSE}Math, System.AnsiStrings, {$ENDIF ~WINSCP} JclResources, JclSysUtils, {$IFNDEF WINSCP}JclAnsiStrings,{$ENDIF ~WINSCP} JclStrings{$IFNDEF WINSCP}, JclStringConversions{$ENDIF ~WINSCP}, JclTD32;
{$IFNDEF WINSCP}JclLogic,{$ELSE}Math, System.AnsiStrings, {$ENDIF ~WINSCP} JclResources, JclSysUtils, JclAnsiStrings, JclStrings{$IFNDEF WINSCP}, JclStringConversions{$ENDIF ~WINSCP}, JclTD32;
const
MANIFESTExtension = '.manifest';
@@ -1166,28 +1166,6 @@ end;
const
UnixTimeStart = UnixDateDelta;
// from JclAnsiStrings.pas
function StrLCompA(const Str1, Str2: PAnsiChar; MaxLen: Cardinal): Integer;
begin
Result := {$IFDEF DEPRECATED_SYSUTILS_ANSISTRINGS}System.AnsiStrings.{$ENDIF}StrLComp(Str1, Str2, MaxLen);
end;
function StrPLCopyA(Dest: PAnsiChar; const Source: AnsiString; MaxLen: Cardinal): PAnsiChar;
begin
Result := {$IFDEF DEPRECATED_SYSUTILS_ANSISTRINGS}System.AnsiStrings.{$ENDIF}StrPLCopy(Dest, Source, MaxLen);
end;
function StrICompA(const Str1, Str2: PAnsiChar): Integer;
begin
Result := {$IFDEF DEPRECATED_SYSUTILS_ANSISTRINGS}System.AnsiStrings.{$ENDIF}StrIComp(Str1, Str2);
end;
function StrLenA(S: PAnsiChar): Integer;
begin
Result := {$IFDEF DEPRECATED_SYSUTILS_ANSISTRINGS}System.AnsiStrings.{$ENDIF}StrLen(S);
end;
{$ENDIF}
// Helper routines

View File

@@ -83,8 +83,8 @@ uses
{$ENDIF UNICODE_RTL_DATABASE}
Classes, SysUtils,
{$ENDIF ~HAS_UNITSCOPE}
{$IFNDEF WINSCP}
JclAnsiStrings,
{$IFNDEF WINSCP}
JclWideStrings,
{$ENDIF ~WINSCP}
JclBase;

View File

@@ -113,11 +113,15 @@ procedure SetGlobalEnvironmentVariable(VariableName, VariableContent: string);
// Common Folder Locations
{$IFDEF MSWINDOWS}
{$IFNDEF WINSCP}
function GetCommonFilesFolder: string;
{$ENDIF WINSCP}
{$ENDIF MSWINDOWS}
function GetCurrentFolder: string;
{$IFDEF MSWINDOWS}
{$IFNDEF WINSCP}
function GetProgramFilesFolder: string;
{$ENDIF WINSCP}
function GetWindowsFolder: string;
function GetWindowsSystemFolder: string;
function GetWindowsTempFolder: string;
@@ -211,9 +215,11 @@ function GetWorkGroupName: WideString;
{$ENDIF MSWINDOWS}
function GetDomainName: string;
{$IFDEF MSWINDOWS}
{$IFNDEF WINSCP}
function GetRegisteredCompany: string;
function GetRegisteredOwner: string;
function GetWindowsProductId: string;
{$ENDIF WINSCP}
function GetBIOSName: string;
function GetBIOSCopyright: string;
function GetBIOSExtendedInfo: string;
@@ -226,7 +232,9 @@ function GetBIOSDate: TDateTime;
type
TJclTerminateAppResult = (taError, taClean, taKill);
{$IFNDEF WINSCP}
function RunningProcessesList(const List: TStrings; FullPath: Boolean = True): Boolean;
{$ENDIF WINSCP}
{$IFDEF MSWINDOWS}
function LoadedModulesList(const List: TStrings; ProcessID: DWORD; HandlesOnly: Boolean = False): Boolean;
@@ -250,17 +258,21 @@ function TerminateApp(ProcessID: DWORD; Timeout: Integer): TJclTerminateAppResul
{$IFDEF MSWINDOWS}
{.$IFNDEF FPC}
{$IFNDEF WINSCP}
function GetPidFromProcessName(const ProcessName: string): THandle;
function GetProcessNameFromWnd(Wnd: THandle): string;
function GetProcessNameFromPid(PID: DWORD): string;
{$ENDIF WINSCP}
function GetMainAppWndFromPid(PID: DWORD): THandle;
function GetWndFromPid(PID: DWORD; const WindowClassName: string): HWND;
{.$ENDIF ~FPC}
{$IFNDEF WINSCP}
function GetShellProcessName: string;
{.$IFNDEF FPC}
function GetShellProcessHandle: THandle;
{.$ENDIF ~FPC}
{$ENDIF WINSCP}
// Version Information
type
@@ -292,12 +304,15 @@ type
var
{ in case of additions, don't forget to update initialization section! }
{$IFNDEF WINSCP}
IsWin95: Boolean = False;
IsWin95OSR2: Boolean = False;
IsWin98: Boolean = False;
IsWin98SE: Boolean = False;
IsWinME: Boolean = False;
{$ENDIF}
IsWinNT: Boolean = False;
{$IFNDEF WINSCP}
IsWinNT3: Boolean = False;
IsWinNT31: Boolean = False;
IsWinNT35: Boolean = False;
@@ -324,6 +339,7 @@ var
IsWinServer2022: Boolean = False;
IsWinServer: Boolean = False;
IsWin11: Boolean = False;
{$ENDIF}
const
PROCESSOR_ARCHITECTURE_INTEL = 0;
@@ -338,6 +354,7 @@ const
const
Windows11InitialBuildNumber = 22000;
{$IFNDEF WINSCP}
function GetWindowsVersion: TWindowsVersion;
function GetWindowsEdition: TWindowsEdition;
function NtProductType: TNtProductType;
@@ -347,11 +364,13 @@ function GetWindowsProductString: string;
function GetWindowsProductName: string;
function NtProductTypeString: string;
function GetWindowsBuildNumber: Integer;
{$ENDIF WINSCP}
function GetWindowsMajorVersionNumber: Integer;
function GetWindowsMinorVersionNumber: Integer;
function GetWindowsVersionNumber: string;
function GetWindowsServicePackVersion: Integer;
function GetWindowsServicePackVersionString: string;
{$IFNDEF WINSCP}
function GetWindowsDisplayVersion: string;
function GetWindowsReleaseId: Integer;
function GetWindowsReleaseName: String;
@@ -366,7 +385,6 @@ function GetWindows10ReleaseVersion: String; {$IFDEF SUPPORTS_DEPRECATED}depreca
function GetWindowsServerDisplayVersion: string; {$IFDEF SUPPORTS_DEPRECATED}deprecated {$IFDEF SUPPORTS_DEPRECATED_DETAILS}'Use GetWindowsDisplayVersion'{$ENDIF};{$ENDIF}
function GetWindowsServerReleaseId: Integer; {$IFDEF SUPPORTS_DEPRECATED}deprecated {$IFDEF SUPPORTS_DEPRECATED_DETAILS}'Use GetWindowsReleaseId'{$ENDIF};{$ENDIF}
function GetWindowsServerReleaseVersion: String; {$IFDEF SUPPORTS_DEPRECATED}deprecated {$IFDEF SUPPORTS_DEPRECATED_DETAILS}'Use GetWindowsReleaseVersion'{$ENDIF};{$ENDIF}
{$IFNDEF WINSCP}
function GetOpenGLVersion(const Win: THandle; out Version, Vendor: AnsiString): Boolean;
{$ENDIF ~WINSCP}
function GetNativeSystemInfo(var SystemInfo: TSystemInfo): Boolean;
@@ -375,7 +393,9 @@ function IsWindows64: Boolean;
function JclCheckWinVersion(Major, Minor: Integer): Boolean;
{$ENDIF MSWINDOWS}
{$IFNDEF WINSCP}
function GetOSVersionString: string;
{$ENDIF}
// Hardware
{$IFDEF MSWINDOWS}
@@ -1492,7 +1512,7 @@ uses
{$ENDIF MSWINDOWS}
{$ENDIF ~HAS_UNITSCOPE}
{$IFNDEF WINSCP}Jcl8087, JclIniFiles,{$ENDIF ~WINSCP}
JclSysUtils, JclFileUtils, {$IFNDEF WINSCP}JclAnsiStrings,{$ENDIF ~WINSCP} JclStrings;
JclSysUtils, JclFileUtils, JclAnsiStrings, JclStrings;
{$IFDEF WINSCP}
@@ -1559,6 +1579,8 @@ end;
{$ENDIF MSWINDOWS}
{.$ENDIF FPC}
{$IFNDEF WINSCP}
//=== Registry helpers =======================================================
const
@@ -1619,6 +1641,8 @@ begin
Result := RegReadHklmKeyIntegerValue(HKLM_CURRENT_VERSION_NT, Name, Def, ForceNative);
end;
{$ENDIF WINSCP}
//=== Environment ============================================================
function DelEnvironmentVar(const Name: string): Boolean;
@@ -1966,7 +1990,6 @@ begin
end;
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, LPARAM(PChar(cEnvironment)));
end;
{$ENDIF ~WINSCP}
//=== Common Folders =========================================================
@@ -1979,6 +2002,8 @@ begin
'CommonFilesDir', '');
end;
{$ENDIF ~WINSCP}
{$ENDIF MSWINDOWS}
function GetCurrentFolder: string;
@@ -2023,6 +2048,7 @@ end;
{$ENDIF MSWINDOWS}
{$IFDEF MSWINDOWS}
{$IFNDEF WINSCP}
{ TODO : Check for documented solution }
function GetProgramFilesFolder: string;
begin
@@ -2030,6 +2056,7 @@ begin
// as we want the platform (x86/x64) specific common folder.
Result := RegReadStringDef(HKEY_LOCAL_MACHINE, HKLM_CURRENT_VERSION_WINDOWS, 'ProgramFilesDir', '');
end;
{$ENDIF WINSCP}
{ TODO : Check for documented solution }
function GetWindowsFolder: string;
@@ -2516,6 +2543,7 @@ end;
{$ENDIF MSWINDOWS}
{$IFDEF MSWINDOWS}
{$IFNDEF WINSCP}
function GetRegisteredCompany: string;
begin
{ TODO : check for MSDN documentation }
@@ -2542,6 +2570,7 @@ begin
else
Result := ReadWindowsCurrentVersionStringValue('ProductId', '', True);
end;
{$ENDIF WINSCP}
{ TODO: Check supported platforms, maybe complete rewrite }
@@ -2823,6 +2852,7 @@ end;
{$IFDEF MSWINDOWS}
{$IFNDEF WINSCP}
function RunningProcessesList(const List: TStrings; FullPath: Boolean): Boolean;
// This function always returns an empty string on Win9x
@@ -2954,6 +2984,7 @@ begin
List.EndUpdate;
end;
end;
{$ENDIF WINSCP}
{ TODO Windows 9x ? }
@@ -3397,6 +3428,7 @@ begin
Result := taError;
end;
{$IFNDEF WINSCP}
function GetProcessNameFromWnd(Wnd: THandle): string;
var
List: TStringList;
@@ -3464,6 +3496,7 @@ begin
List.Free;
end;
end;
{$ENDIF}
type
PSearch = ^TSearch;
@@ -3538,6 +3571,7 @@ begin
Result := EnumWndStruct.ResultWnd;
end;
{$IFNDEF WINSCP}
function GetShellProcessName: string;
const
cShellKey = HKLM_CURRENT_VERSION_NT + '\WinLogon';
@@ -3548,9 +3582,8 @@ const
begin
if IsWinNT then
Result := RegReadStringDef(HKEY_LOCAL_MACHINE, cShellKey, cShellValue, '')
{$IFNDEF WINSCP}
else
Result := IniReadString(PathAddSeparator(GetWindowsFolder) + cShellSystemIniFileName, cShellBootSection, cShellValue){$ENDIF ~WINSCP};
Result := IniReadString(PathAddSeparator(GetWindowsFolder) + cShellSystemIniFileName, cShellBootSection, cShellValue);
if Result = '' then
Result := cShellDefault;
end;
@@ -4234,10 +4267,13 @@ begin
else
Result := Win32BuildNumber;
end;
{$ENDIF WINSCP}
function GetWindowsMajorVersionNumber: Integer;
{$IFNDEF WINSCP}
var
Ver: string;
{$ENDIF WINSCP}
begin
{$IFNDEF WINSCP}
// WINSCP: We have the manifest
@@ -4256,13 +4292,15 @@ begin
end;
end
else
{$ENDIF}
{$ENDIF WINSCP}
Result := Win32MajorVersion;
end;
function GetWindowsMinorVersionNumber: Integer;
{$IFNDEF WINSCP}
var
Ver: string;
{$ENDIF WINSCP}
begin
{$IFNDEF WINSCP}
// WINSCP: We have the manifest
@@ -4281,7 +4319,7 @@ begin
end;
end
else
{$ENDIF}
{$ENDIF WINSCP}
Result := Win32MinorVersion;
end;
@@ -4328,6 +4366,7 @@ begin
Result := '';
end;
{$IFNDEF WINSCP}
function GetWindowsDisplayVersion: string;
begin
// Starting with Windows 10 20H2, the DisplayVersion registry entry is being populated ("20H2")
@@ -4562,7 +4601,6 @@ begin
Result := '';
end;
{$IFNDEF WINSCP}
// Imports copied from OpenGL unit. Direct using of OpenGL unit might cause unexpected problems due
// setting 8087CW in the intialization section
{
@@ -4832,6 +4870,7 @@ end;
{$ENDIF MSWINDOWS}
{$IFNDEF WINSCP}
function GetOSVersionString: string;
{$IFDEF UNIX}
var
@@ -4846,6 +4885,7 @@ begin
Result := Format('%s %s', [GetWindowsVersionString, GetWindowsServicePackVersionString]);
end;
{$ENDIF MSWINDOWS}
{$ENDIF}
//=== Hardware ===============================================================
@@ -6603,8 +6643,10 @@ end;
procedure InitSysInfo;
var
SystemInfo: TSystemInfo;
{$IFNDEF WINSCP}
Kernel32FileName: string;
VerFixedFileInfo: TVSFixedFileInfo;
{$ENDIF}
begin
{ processor information related initialization }
@@ -6618,6 +6660,7 @@ begin
IsWinNT := Win32Platform = VER_PLATFORM_WIN32_NT;
{$IFNDEF WINSCP}
Kernel32FileName := GetModulePath(GetModuleHandle(kernel32));
VerFixedFileInfo.dwFileDateLS := 0;
if (not IsWinNT) and VersionFixedFileInfo(Kernel32FileName, VerFixedFileInfo) then
@@ -6699,6 +6742,7 @@ begin
wvWin11:
IsWin11 := True;
end;
{$ENDIF}
end;
procedure FinalizeSysInfo;

View File

@@ -877,7 +877,7 @@ const
implementation
uses
JclResources, JclSysUtils, JclStringConversions;
JclResources, JclSysUtils{$IFNDEF WINSCP}, JclStringConversions{$ENDIF};
{$IFDEF BORLAND}
const