|
@@ -432,11 +432,46 @@ end;
|
|
|
|
|
|
|
|
|
|
procedure TCompilerOptions.InitCompilerDefaults;
|
|
procedure TCompilerOptions.InitCompilerDefaults;
|
|
|
|
+
|
|
|
|
+ // Same as SysUtils.FileSearch but without searching in the current directory
|
|
|
|
+ Function FileSearchPath (Const Name, DirList : String) : String;
|
|
|
|
+ Var
|
|
|
|
+ I : longint;
|
|
|
|
+ Temp : String;
|
|
|
|
+
|
|
|
|
+ begin
|
|
|
|
+ Result:=Name;
|
|
|
|
+ temp:=SetDirSeparators(DirList);
|
|
|
|
+ while True do begin
|
|
|
|
+ If Temp = '' then
|
|
|
|
+ Break; // No more directories to search - fail
|
|
|
|
+ I:=pos(PathSeparator,Temp);
|
|
|
|
+ If I<>0 then
|
|
|
|
+ begin
|
|
|
|
+ Result:=Copy (Temp,1,i-1);
|
|
|
|
+ system.Delete(Temp,1,I);
|
|
|
|
+ end
|
|
|
|
+ else
|
|
|
|
+ begin
|
|
|
|
+ Result:=Temp;
|
|
|
|
+ Temp:='';
|
|
|
|
+ end;
|
|
|
|
+ If Result<>'' then
|
|
|
|
+ Result:=IncludeTrailingPathDelimiter(Result)+name;
|
|
|
|
+ If (Result <> '') and FileExists(Result) Then
|
|
|
|
+ exit;
|
|
|
|
+ end;
|
|
|
|
+ result:='';
|
|
|
|
+ end;
|
|
|
|
+
|
|
var
|
|
var
|
|
infoSL : TStringList;
|
|
infoSL : TStringList;
|
|
begin
|
|
begin
|
|
FConfigVersion:=CurrentConfigVersion;
|
|
FConfigVersion:=CurrentConfigVersion;
|
|
- FCompiler:=FileSearch('fpc'+ExeExt,GetEnvironmentVariable('PATH'));
|
|
|
|
|
|
+ // Sysutils.FileSearch cannot be used since it also searches in the current
|
|
|
|
+ // directory. Which could lead to a security-problem when some unknown
|
|
|
|
+ // 'fpc' executable is lying around.
|
|
|
|
+ FCompiler:=FileSearchPath('fpc'+ExeExt,GetEnvironmentVariable('PATH'));
|
|
if FCompiler='' then
|
|
if FCompiler='' then
|
|
Raise EPackagerError.Create(SErrMissingFPC);
|
|
Raise EPackagerError.Create(SErrMissingFPC);
|
|
// Detect compiler version/target from -i option
|
|
// Detect compiler version/target from -i option
|