IDE: open project: added check if lpi file is symlink, fixing bug #10855

git-svn-id: trunk@14197 -
This commit is contained in:
mattias 2008-02-20 00:28:11 +00:00
parent 6632151a96
commit 12979678e5
3 changed files with 35 additions and 1 deletions

View File

@ -87,6 +87,7 @@ function CheckCreatingFile(const AFilename: string;
): TModalResult;
function CheckFileIsWritable(const Filename: string;
ErrorButtons: TMsgDlgButtons): TModalResult;
function ChooseSymlink(var Filename: string): TModalResult;
function ForceDirectoryInteractive(Directory: string;
ErrorButtons: TMsgDlgButtons): TModalResult;
function DeleteFileInteractive(const Filename: string;
@ -467,6 +468,35 @@ begin
end;
end;
function ChooseSymlink(var Filename: string): TModalResult;
var
TargetFilename: String;
begin
Result:=mrCancel;
try
TargetFilename:=ReadAllLinks(Filename,true);
DebugLn(['ChooseSymlink ',Filename,' ',TargetFilename]);
if TargetFilename<>Filename then begin
case QuestionDlg('File is symlink',
'The file "'+Filename+'" is a symlink.'#13
+#13
+'Open "'+TargetFilename+'" instead?',
mtConfirmation,[mbYes,'Open target',mbNo,'Open symlink',mbCancel],0)
of
mrYes: Filename:=TargetFilename;
mrNo: ;
else exit;
end;
end;
Result:=mrOk;
except
on E: Exception do begin
MessageDlg('File link error',
E.Message,mtError,[mbCancel],0);
end;
end;
end;
function ForceDirectoryInteractive(Directory: string;
ErrorButtons: TMsgDlgButtons): TModalResult;
var i: integer;

View File

@ -7748,6 +7748,10 @@ begin
Result:=MessageDlg(ACaption, AText, mtError, [mbAbort], 0);
exit;
end;
// check symbolic link
Result:=ChooseSymlink(AFilename);
if Result<>mrOk then exit;
// if there is a project info file, load that instead
if (Ext<>'.lpi') and (FileExists(ChangeFileExt(AFileName,'.lpi'))) then begin

View File

@ -699,7 +699,7 @@ begin
Result:='';
exit;
end;
raise Exception.Create(AText);
raise EFOpenError.Create(AText);
end else begin
if not FilenameIsAbsolute(LinkFilename) then
Result:=ExpandFilename(ExtractFilePath(Result)+LinkFilename)