ide: FindClose in try finally

This commit is contained in:
mattias 2024-01-15 15:11:10 +01:00
parent 44a97af383
commit 58fa8cf4d0
7 changed files with 149 additions and 122 deletions

View File

@ -289,26 +289,29 @@ var
begin
Dir:=AppendPathDelim(TrimFilename(Dir));
if FindFirstUTF8(Dir+AllFilesMask,faAnyFile,FileInfo)=0 then begin
repeat
if (FileInfo.Name='') or (FileInfo.Name='.') or (FileInfo.Name='..')
or (FileInfo.Name[1]='.')
then
continue;
Filename:=Dir+FileInfo.Name;
if faDirectory and FileInfo.Attr>0 then
begin
if Recursive then
CleanDir(Filename)
end
else begin
if FilenameExtIn(FileInfo.Name,['.ppu','.o','.rst','.rsj']) then begin
if not DeleteFileUTF8(Filename) then
debugln(['Error : (lazarus) Clean directory: failed to delete file "',Filename,'"']);
try
repeat
if (FileInfo.Name='') or (FileInfo.Name='.') or (FileInfo.Name='..')
or (FileInfo.Name[1]='.')
then
continue;
Filename:=Dir+FileInfo.Name;
if faDirectory and FileInfo.Attr>0 then
begin
if Recursive then
CleanDir(Filename)
end
else begin
if FilenameExtIn(FileInfo.Name,['.ppu','.o','.rst','.rsj']) then begin
if not DeleteFileUTF8(Filename) then
debugln(['Error : (lazarus) Clean directory: failed to delete file "',Filename,'"']);
end;
end;
end;
until FindNextUTF8(FileInfo)<>0;
until FindNextUTF8(FileInfo)<>0;
finally
FindCloseUTF8(FileInfo);
end;
end;
FindCloseUTF8(FileInfo);
end;
procedure TLazarusBuilder.CleanLazarusSrcDir;

View File

@ -1727,49 +1727,52 @@ begin
ADirectory:=AppendPathDelim(ExtractFilePath(Filename));
if FindFirstUTF8(ADirectory+GetAllFilesMask,faAnyFile,FileInfo)=0 then
begin
ShortFilename:=ExtractFileName(Filename);
IsPascalUnit:=FilenameHasPascalExt(ShortFilename);
AUnitName:=ExtractFilenameOnly(ShortFilename);
repeat
if (FileInfo.Name='.') or (FileInfo.Name='..')
or (FileInfo.Name='')
or ((FileInfo.Attr and faDirectory)<>0) then continue;
if CompareFilenames(ShortFilename,FileInfo.Name)=0 then continue;
try
ShortFilename:=ExtractFileName(Filename);
IsPascalUnit:=FilenameHasPascalExt(ShortFilename);
AUnitName:=ExtractFilenameOnly(ShortFilename);
repeat
if (FileInfo.Name='.') or (FileInfo.Name='..')
or (FileInfo.Name='')
or ((FileInfo.Attr and faDirectory)<>0) then continue;
if CompareFilenames(ShortFilename,FileInfo.Name)=0 then continue;
if (SysUtils.CompareText(ShortFilename,FileInfo.Name)=0)
then begin
// same name different case => ambiguous
end else if IsPascalUnit and FilenameHasPascalExt(FileInfo.Name)
and (SysUtils.CompareText(AUnitName,ExtractFilenameOnly(FileInfo.Name))=0)
then begin
// same unit name => ambiguous
end else
continue;
if (SysUtils.CompareText(ShortFilename,FileInfo.Name)=0)
then begin
// same name different case => ambiguous
end else if IsPascalUnit and FilenameHasPascalExt(FileInfo.Name)
and (SysUtils.CompareText(AUnitName,ExtractFilenameOnly(FileInfo.Name))=0)
then begin
// same unit name => ambiguous
end else
continue;
CurFilename:=ADirectory+FileInfo.Name;
if EnvironmentOptions.AmbiguousFileAction=afaAsk then begin
if IDEMessageDialog(lisDeleteAmbiguousFile,
Format(lisAmbiguousFileFoundThisFileCanBeMistakenWithDelete,
[CurFilename, LineEnding, ShortFilename, LineEnding+LineEnding]),
mtConfirmation,[mbYes,mbNo])=mrNo
then continue;
end;
if EnvironmentOptions.AmbiguousFileAction in [afaAutoDelete,afaAsk]
then begin
Result:=DeleteFileInteractive(CurFilename);
if not (Result in [mrOK,mrIgnore]) then exit(mrCancel);
end else if EnvironmentOptions.AmbiguousFileAction=afaAutoRename then
begin
Result:=BackupFileForWrite(CurFilename);
if not (Result in [mrOK,mrIgnore]) then exit(mrCancel);
if FileExistsUTF8(CurFilename) then begin
CurFilename:=ADirectory+FileInfo.Name;
if EnvironmentOptions.AmbiguousFileAction=afaAsk then begin
if IDEMessageDialog(lisDeleteAmbiguousFile,
Format(lisAmbiguousFileFoundThisFileCanBeMistakenWithDelete,
[CurFilename, LineEnding, ShortFilename, LineEnding+LineEnding]),
mtConfirmation,[mbYes,mbNo])=mrNo
then continue;
end;
if EnvironmentOptions.AmbiguousFileAction in [afaAutoDelete,afaAsk]
then begin
Result:=DeleteFileInteractive(CurFilename);
if not (Result in [mrOK,mrIgnore]) then exit(mrCancel);
end else if EnvironmentOptions.AmbiguousFileAction=afaAutoRename then
begin
Result:=BackupFileForWrite(CurFilename);
if not (Result in [mrOK,mrIgnore]) then exit(mrCancel);
if FileExistsUTF8(CurFilename) then begin
Result:=DeleteFileInteractive(CurFilename);
if not (Result in [mrOK,mrIgnore]) then exit(mrCancel);
end;
end;
end;
until FindNextUTF8(FileInfo)<>0;
until FindNextUTF8(FileInfo)<>0;
finally
FindCloseUTF8(FileInfo);
end;
end;
FindCloseUTF8(FileInfo);
end;
Result:=mrOk;
end;

View File

@ -705,19 +705,22 @@ begin
//DebugLn(['TCheckCompilerOptsDlg.CheckFPCUnitPathsContainSources Directory="',Directory,'"']);
if FindFirstUTF8(Directory+GetAllFilesMask,faAnyFile,FileInfo)=0
then begin
repeat
// check if special file
if (FileInfo.Name='.') or (FileInfo.Name='..') or (FileInfo.Name='') then
continue;
// check extension
if FilenameHasPascalExt(FileInfo.Name) then begin
AddWarning(lisCCOFPCUnitPathHasSource+Directory+FileInfo.Name);
WarnedDirectories.Add(Directory);
break;
end;
until FindNextUTF8(FileInfo)<>0;
try
repeat
// check if special file
if (FileInfo.Name='.') or (FileInfo.Name='..') or (FileInfo.Name='') then
continue;
// check extension
if FilenameHasPascalExt(FileInfo.Name) then begin
AddWarning(lisCCOFPCUnitPathHasSource+Directory+FileInfo.Name);
WarnedDirectories.Add(Directory);
break;
end;
until FindNextUTF8(FileInfo)<>0;
finally
FindCloseUTF8(FileInfo);
end;
end;
FindCloseUTF8(FileInfo);
end;
end;
end;

View File

@ -340,24 +340,27 @@ var
if FindFirstUTF8(MainDirectory+GetAllFilesMask,
faAnyFile,FileInfo)=0
then begin
repeat
// check if special file
if (FileInfo.Name='.') or (FileInfo.Name='..') or (FileInfo.Name='')
then continue;
FullFilename:=MainDirectory+FileInfo.Name;
if (FileInfo.Attr and faDirectory)>0 then begin
if SubDirsCheckbox.Checked then begin
// search recursively
if not SearchInDirectory(AppendPathDelim(FullFilename),Lvl+1) then
break;
try
repeat
// check if special file
if (FileInfo.Name='.') or (FileInfo.Name='..') or (FileInfo.Name='')
then continue;
FullFilename:=MainDirectory+FileInfo.Name;
if (FileInfo.Attr and faDirectory)>0 then begin
if SubDirsCheckbox.Checked then begin
// search recursively
if not SearchInDirectory(AppendPathDelim(FullFilename),Lvl+1) then
break;
end;
end else begin
if FileMatches(FullFilename) then
List.Add(FullFilename);
end;
end else begin
if FileMatches(FullFilename) then
List.Add(FullFilename);
end;
until FindNextUTF8(FileInfo)<>0;
until FindNextUTF8(FileInfo)<>0;
finally
FindCloseUTF8(FileInfo);
end;
end;
FindCloseUTF8(FileInfo);
Result:=true;
end;

View File

@ -460,8 +460,8 @@ var
SubFile:='bin/$(TargetCPU)-$(TargetOS)/'+ShortCompFile;
if CheckFile(ADir+SubFile,List) then
exit;
try
if FindFirstUTF8(ADir+AllFilesMask,faAnyFile,FileInfo)=0 then begin
if FindFirstUTF8(ADir+AllFilesMask,faAnyFile,FileInfo)=0 then begin
try
repeat
// check if special file
if (FileInfo.Name='.') or (FileInfo.Name='..') or (FileInfo.Name='') then
@ -470,9 +470,9 @@ var
and CheckFile(ADir+FileInfo.Name+PathDelim+SubFile,List) then
exit;
until FindNextUTF8(FileInfo)<>0;
finally
FindCloseUTF8(FileInfo);
end;
finally
FindCloseUTF8(FileInfo);
end;
Result:=false;
end;

View File

@ -565,11 +565,14 @@ begin
xDir := ExtractFilePath(FFileName);
if FindFirstUTF8(GetRequestPrefix+AllFilesMask, faAnyFile, xRec) = 0 then
begin
repeat
DeleteFile(xDir+xRec.Name);
until FindNextUTF8(xRec) <> 0;
try
repeat
DeleteFile(xDir+xRec.Name);
until FindNextUTF8(xRec) <> 0;
finally
FindCloseUTF8(xRec);
end;
end;
FindCloseUTF8(xRec);
end;
function TIPCServer.DeleteRequest(const aRequestID: Integer): Boolean;
@ -605,17 +608,20 @@ begin
Result := -1;
if FindFirstUTF8(GetRequestPrefix+AllFilesMask, faAnyFile, xRec) = 0 then
begin
repeat
Result := RequestFileNameToID(xRec.Name);
if Result >= 0 then
begin
outFileName := GetRequestFileName(Result);
if not CanReadMessage(outFileName, outStream, outMsgType, outMsgLen) then
Result := -1;
end;
until (Result >= 0) or (FindNextUTF8(xRec) <> 0);
try
repeat
Result := RequestFileNameToID(xRec.Name);
if Result >= 0 then
begin
outFileName := GetRequestFileName(Result);
if not CanReadMessage(outFileName, outStream, outMsgType, outMsgLen) then
Result := -1;
end;
until (Result >= 0) or (FindNextUTF8(xRec) <> 0);
finally
FindCloseUTF8(xRec);
end;
end;
FindCloseUTF8(xRec);
end;
function TIPCServer.FindHighestPendingRequestId: Integer;
@ -626,13 +632,16 @@ begin
Result := -1;
if FindFirstUTF8(GetRequestPrefix+AllFilesMask, faAnyFile, xRec) = 0 then
begin
repeat
xRequestID := RequestFileNameToID(xRec.Name);
if xRequestID > Result then
Result := xRequestID;
until FindNextUTF8(xRec) <> 0;
try
repeat
xRequestID := RequestFileNameToID(xRec.Name);
if xRequestID > Result then
Result := xRequestID;
until FindNextUTF8(xRec) <> 0;
finally
FindCloseUTF8(xRec);
end;
end;
FindCloseUTF8(xRec);
end;
function TIPCServer.GetPendingRequestCount: Integer;
@ -642,12 +651,15 @@ begin
Result := 0;
if FindFirstUTF8(GetRequestPrefix+AllFilesMask, faAnyFile, xRec) = 0 then
begin
repeat
if RequestFileNameToID(xRec.Name) >= 0 then
Inc(Result);
until FindNextUTF8(xRec) <> 0;
try
repeat
if RequestFileNameToID(xRec.Name) >= 0 then
Inc(Result);
until FindNextUTF8(xRec) <> 0;
finally
FindCloseUTF8(xRec);
end;
end;
FindCloseUTF8(xRec);
end;
function TIPCServer.PeekRequest(out outRequestID: Integer; out

View File

@ -133,17 +133,20 @@ begin
if FindFirstUTF8('/proc/*', faDirectory, Rec) = 0 then
begin
repeat
Val(Rec.Name, Pid, Code);
if (Code = 0) then
begin
ProcName := GetProcName;
item := TRunningProcessInfo.Create(Pid, ProcName);
AList.Add(item);
end;
until FindNextUTF8(Rec) <> 0;
try
repeat
Val(Rec.Name, Pid, Code);
if (Code = 0) then
begin
ProcName := GetProcName;
item := TRunningProcessInfo.Create(Pid, ProcName);
AList.Add(item);
end;
until FindNextUTF8(Rec) <> 0;
finally
FindCloseUTF8(Rec);
end;
end;
FindCloseUTF8(Rec);
end;
{$else}
{$ifdef darwin}