mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-03 09:40:45 +02:00
IDE: FindProgram: resolve leading ~ under Unix
git-svn-id: trunk@48132 -
This commit is contained in:
parent
a819e545f5
commit
f93f158c57
@ -4189,6 +4189,7 @@ function TCompilationToolOptions.Execute(const WorkingDir, ToolTitle,
|
|||||||
var
|
var
|
||||||
ExtTool: TAbstractExternalTool;
|
ExtTool: TAbstractExternalTool;
|
||||||
begin
|
begin
|
||||||
|
if Command='' then exit(mrOk);
|
||||||
if SourceEditorManagerIntf<>nil then
|
if SourceEditorManagerIntf<>nil then
|
||||||
SourceEditorManagerIntf.ClearErrorLines;
|
SourceEditorManagerIntf.ClearErrorLines;
|
||||||
|
|
||||||
@ -4217,11 +4218,14 @@ var
|
|||||||
Filename: String;
|
Filename: String;
|
||||||
begin
|
begin
|
||||||
CurCommand:=GetParsedCommand;
|
CurCommand:=GetParsedCommand;
|
||||||
|
//debugln(['TCompilationToolOptions.CreateExtTool CurCommand=[',CurCommand,']']);
|
||||||
if CurCommand='' then
|
if CurCommand='' then
|
||||||
exit(nil);
|
exit(nil);
|
||||||
SplitCmdLine(CurCommand,ProgramFilename,Params);
|
SplitCmdLine(CurCommand,ProgramFilename,Params);
|
||||||
|
//debugln(['TCompilationToolOptions.CreateExtTool Prg=[',ProgramFilename,'] Params=[',Params,']']);
|
||||||
if not FilenameIsAbsolute(ProgramFilename) then begin
|
if not FilenameIsAbsolute(ProgramFilename) then begin
|
||||||
Filename:=FindProgram(ProgramFilename,WorkingDir,true);
|
Filename:=FindProgram(ProgramFilename,WorkingDir,true);
|
||||||
|
//debugln(['TCompilationToolOptions.CreateExtTool Found=[',Filename,']']);
|
||||||
if Filename<>'' then ProgramFilename:=Filename;
|
if Filename<>'' then ProgramFilename:=Filename;
|
||||||
end;
|
end;
|
||||||
Result:=ExternalToolList.Add(ToolTitle);
|
Result:=ExternalToolList.Add(ToolTitle);
|
||||||
|
@ -118,7 +118,7 @@ function FindShortFileNameOnDisk(const Filename: string): string;
|
|||||||
function CreateNonExistingFilename(const BaseFilename: string): string;
|
function CreateNonExistingFilename(const BaseFilename: string): string;
|
||||||
function FindFPCTool(const Executable, CompilerFilename: string): string;
|
function FindFPCTool(const Executable, CompilerFilename: string): string;
|
||||||
procedure ResolveLinksInFileList(List: TStrings; RemoveDanglingLinks: Boolean);
|
procedure ResolveLinksInFileList(List: TStrings; RemoveDanglingLinks: Boolean);
|
||||||
function FindProgram(const Programname, BaseDirectory: string;
|
function FindProgram(ProgramName, BaseDirectory: string;
|
||||||
WithBaseDirectory: boolean): string;
|
WithBaseDirectory: boolean): string;
|
||||||
|
|
||||||
// search paths
|
// search paths
|
||||||
@ -1501,14 +1501,23 @@ begin
|
|||||||
Result:=true;
|
Result:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function FindProgram(const Programname, BaseDirectory: string;
|
function FindProgram(ProgramName, BaseDirectory: string;
|
||||||
WithBaseDirectory: boolean): string;
|
WithBaseDirectory: boolean): string;
|
||||||
var
|
var
|
||||||
Flags: TSearchFileInPathFlags;
|
Flags: TSearchFileInPathFlags;
|
||||||
begin
|
begin
|
||||||
if FilenameIsAbsolute(Programname) then begin
|
Result:='';
|
||||||
if FileExistsUTF8(Programname) then
|
if ProgramName='' then exit;
|
||||||
Result:=Programname
|
{$IFDEF Unix}
|
||||||
|
if ProgramName[1]='~' then begin
|
||||||
|
Delete(ProgramName,1,1);
|
||||||
|
ProgramName:=GetEnvironmentVariableUTF8('HOME')+ProgramName;
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
ProgramName:=ResolveDots(ProgramName);
|
||||||
|
if FilenameIsAbsolute(ProgramName) then begin
|
||||||
|
if FileExistsCached(ProgramName) then
|
||||||
|
Result:=ProgramName
|
||||||
else
|
else
|
||||||
Result:='';
|
Result:='';
|
||||||
exit;
|
exit;
|
||||||
@ -1516,7 +1525,7 @@ begin
|
|||||||
Flags:=[];
|
Flags:=[];
|
||||||
if not WithBaseDirectory then
|
if not WithBaseDirectory then
|
||||||
Include(Flags,sffDontSearchInBasePath);
|
Include(Flags,sffDontSearchInBasePath);
|
||||||
Result:=FileUtil.SearchFileInPath(Programname,BaseDirectory,
|
Result:=FileUtil.SearchFileInPath(ProgramName,BaseDirectory,
|
||||||
GetProgramSearchPath,PathSep,Flags);
|
GetProgramSearchPath,PathSep,Flags);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user