浏览代码

Replacing redundant DeleteDirectory with RecursiveDeleteFile

Source commit: 2fd7838172df272fa63429fdaf0d5ce3157c98d5
Martin Prikryl 2 年之前
父节点
当前提交
4eaf58404c

+ 19 - 25
source/core/Common.cpp

@@ -2543,11 +2543,11 @@ static bool __fastcall DoRecursiveDeleteFile(
 
   if (!ToRecycleBin)
   {
-    TSearchRecChecked SearchRec;
-    Result = FileSearchRec(FileName, SearchRec);
+    TSearchRecChecked InitialSearchRec;
+    Result = FileSearchRec(FileName, InitialSearchRec);
     if (Result)
     {
-      if (!SearchRec.IsDirectory())
+      if (!InitialSearchRec.IsDirectory())
       {
         Result = DeleteFile(ApiPath(FileName));
         if (Result)
@@ -2557,41 +2557,35 @@ static bool __fastcall DoRecursiveDeleteFile(
       }
       else
       {
+        TSearchRecOwned SearchRec;
         Result = (FindFirstUnchecked(FileName + L"\\*", faAnyFile, SearchRec) == 0);
 
         if (Result)
         {
-          try
+          do
           {
-            do
+            UnicodeString FileName2 = SearchRec.GetFilePath();
+            if (SearchRec.IsDirectory())
             {
-              UnicodeString FileName2 = SearchRec.GetFilePath();
-              if (SearchRec.IsDirectory())
+              if (SearchRec.IsRealFile())
               {
-                if (SearchRec.IsRealFile())
-                {
-                  Result = DoRecursiveDeleteFile(FileName2, DebugAlwaysFalse(ToRecycleBin), AErrorPath, Deleted);
-                }
+                Result = DoRecursiveDeleteFile(FileName2, DebugAlwaysFalse(ToRecycleBin), AErrorPath, Deleted);
+              }
+            }
+            else
+            {
+              Result = DeleteFile(ApiPath(FileName2));
+              if (!Result)
+              {
+                AErrorPath = FileName2;
               }
               else
               {
-                Result = DeleteFile(ApiPath(FileName2));
-                if (!Result)
-                {
-                  AErrorPath = FileName2;
-                }
-                else
-                {
-                  Deleted++;
-                }
+                Deleted++;
               }
             }
-            while (Result && (FindNextUnchecked(SearchRec) == 0));
-          }
-          __finally
-          {
-            FindClose(SearchRec);
           }
+          while (Result && (FindNextUnchecked(SearchRec) == 0));
 
           if (Result)
           {

+ 1 - 1
source/core/Common.h

@@ -124,7 +124,7 @@ UnicodeString __fastcall EncodeUrlString(UnicodeString S);
 UnicodeString __fastcall EncodeUrlPath(UnicodeString S);
 UnicodeString __fastcall AppendUrlParams(UnicodeString URL, UnicodeString Params);
 UnicodeString __fastcall ExtractFileNameFromUrl(const UnicodeString & Url);
-bool __fastcall RecursiveDeleteFile(const UnicodeString & FileName, bool ToRecycleBin);
+bool __fastcall RecursiveDeleteFile(const UnicodeString & FileName, bool ToRecycleBin = false);
 int __fastcall RecursiveDeleteFileChecked(const UnicodeString & FileName, bool ToRecycleBin);
 void __fastcall DeleteFileChecked(const UnicodeString & FileName);
 unsigned int __fastcall CancelAnswer(unsigned int Answers);

+ 1 - 1
source/core/Terminal.cpp

@@ -8890,7 +8890,7 @@ UnicodeString TTerminal::UploadPublicKey(const UnicodeString & FileName)
     ExceptionOnFail = PrevExceptionOnFail;
     if (!TemporaryDir.IsEmpty())
     {
-      RecursiveDeleteFile(ExcludeTrailingBackslash(TemporaryDir), false);
+      RecursiveDeleteFile(ExcludeTrailingBackslash(TemporaryDir));
     }
   }
   return Result;

+ 6 - 6
source/forms/CustomScpExplorer.cpp

@@ -2388,7 +2388,7 @@ void __fastcall TCustomScpExplorerForm::LocalCustomCommandPure(
       FAutoOperation = false;
       if (!RootTempDir.IsEmpty() && DebugAlwaysTrue(!RemoteFiles))
       {
-        RecursiveDeleteFile(ExcludeTrailingBackslash(RootTempDir), false);
+        RecursiveDeleteFile(ExcludeTrailingBackslash(RootTempDir));
       }
     }
   }
@@ -3330,7 +3330,7 @@ void __fastcall TCustomScpExplorerForm::EditNew(TOperationSide Side)
           {
             if (!RootTempDir.IsEmpty())
             {
-              RecursiveDeleteFile(ExcludeTrailingBackslash(RootTempDir), false);
+              RecursiveDeleteFile(ExcludeTrailingBackslash(RootTempDir));
             }
             throw Exception(FMTLOAD(CREATE_FILE_ERROR, (LocalFileName)));
           }
@@ -3416,7 +3416,7 @@ void __fastcall TCustomScpExplorerForm::CustomExecuteFile(TOperationSide Side,
       {
         if (!LocalRootDirectory.IsEmpty())
         {
-          RecursiveDeleteFile(ExcludeTrailingBackslash(LocalRootDirectory), false);
+          RecursiveDeleteFile(ExcludeTrailingBackslash(LocalRootDirectory));
         }
         throw;
       }
@@ -3621,7 +3621,7 @@ void __fastcall TCustomScpExplorerForm::TemporarilyDownloadFiles(
     {
       if (!RootTempDir.IsEmpty())
       {
-        RecursiveDeleteFile(ExcludeTrailingBackslash(RootTempDir), false);
+        RecursiveDeleteFile(ExcludeTrailingBackslash(RootTempDir));
       }
       throw;
     }
@@ -4592,7 +4592,7 @@ bool __fastcall TCustomScpExplorerForm::RemoteTransferFiles(
         FAutoOperation = false;
         if (!RootTempDir.IsEmpty())
         {
-          RecursiveDeleteFile(ExcludeTrailingBackslash(RootTempDir), false);
+          RecursiveDeleteFile(ExcludeTrailingBackslash(RootTempDir));
         }
       }
     }
@@ -8242,7 +8242,7 @@ void __fastcall TCustomScpExplorerForm::DoDelayedDeletion(TObject * Sender)
     if ((N >= Alert) || (Sender == NULL))
     {
       Directory = FDelayedDeletionList->Strings[Index];
-      if (DeleteDirectory(ExcludeTrailingBackslash(Directory)))
+      if (RecursiveDeleteFile(ExcludeTrailingBackslash(Directory)))
       {
         FDelayedDeletionList->Delete(Index);
       }

+ 1 - 1
source/windows/EditorManager.cpp

@@ -477,7 +477,7 @@ bool __fastcall TEditorManager::CloseFile(int Index, bool IgnoreErrors, bool Del
 
     if (Delete && !LocalRootDirectory.IsEmpty())
     {
-      if (!RecursiveDeleteFile(ExcludeTrailingBackslash(LocalRootDirectory), false) &&
+      if (!RecursiveDeleteFile(ExcludeTrailingBackslash(LocalRootDirectory)) &&
           !IgnoreErrors)
       {
         throw Exception(FMTLOAD(DELETE_TEMP_EXECUTE_FILE_ERROR, (LocalRootDirectory)));

+ 0 - 39
source/windows/GUITools.cpp

@@ -689,45 +689,6 @@ UnicodeString __fastcall UniqTempDir(const UnicodeString BaseDir, const UnicodeS
   return TempDir;
 }
 //---------------------------------------------------------------------------
-bool __fastcall DeleteDirectory(const UnicodeString DirName)
-{
-  TSearchRecOwned sr;
-  bool retval = true;
-  if (FindFirstUnchecked(DirName + L"\\*", faAnyFile, sr) == 0) // VCL Function
-  {
-    if (sr.IsDirectory())
-    {
-      if (sr.IsRealFile())
-        retval = DeleteDirectory(DirName + L"\\" + sr.Name);
-    }
-    else
-    {
-      retval = DeleteFile(ApiPath(DirName + L"\\" + sr.Name));
-    }
-
-    if (retval)
-    {
-      while (FindNextChecked(sr) == 0)
-      { // VCL Function
-        if (sr.IsDirectory())
-        {
-          if (sr.IsRealFile())
-            retval = DeleteDirectory(DirName + L"\\" + sr.Name);
-        }
-        else
-        {
-          retval = DeleteFile(ApiPath(DirName + L"\\" + sr.Name));
-        }
-
-        if (!retval) break;
-      }
-    }
-  }
-  sr.Close();
-  if (retval) retval = RemoveDir(ApiPath(DirName)); // VCL function
-  return retval;
-}
-//---------------------------------------------------------------------------
 class TSessionColors : public TComponent
 {
 public:

+ 0 - 1
source/windows/GUITools.h

@@ -29,7 +29,6 @@ void OpenSessionInPutty(TSessionData * SessionData);
 bool __fastcall SpecialFolderLocation(int PathID, UnicodeString & Path);
 UnicodeString __fastcall UniqTempDir(const UnicodeString BaseDir,
   const UnicodeString Identity, bool Mask = false);
-bool __fastcall DeleteDirectory(const UnicodeString DirName);
 int __fastcall GetSessionColorImage(TCustomImageList * ImageList, TColor Color, int MaskIndex);
 void __fastcall RegenerateSessionColorsImageList(TCustomImageList * ImageList, int MaskIndex);
 void __fastcall SetSubmenu(TTBXCustomItem * Item, bool Enable);

+ 1 - 1
source/windows/WinConfiguration.cpp

@@ -2625,7 +2625,7 @@ void __fastcall TWinConfiguration::CleanupTemporaryFolders(TStrings * Folders)
   UnicodeString ErrorList;
   for (int i = 0; i < Folders->Count; i++)
   {
-    if (!DeleteDirectory(Folders->Strings[i]))
+    if (!RecursiveDeleteFile(Folders->Strings[i]))
     {
       if (!ErrorList.IsEmpty())
       {