Deleting folders and contents issue

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 06/07/2007 at 14:05, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   R8.2-R10 
Platform:   Windows  ; Mac  ;  Mac OSX  ; 
Language(s) :     C++  ;

---------
A user of my plugin notes that when a file 'thumbs.db' exists in a folder, he can't delete the folder completely from within my plugin. I can only think that either the file is being protected from deletion or that it is not being listed by the BrowseFiles interface.

Here is the general code being used to delete a folder and all contents (files and subfolders, recursively) :

// v1.1.7  
// Delete Folder from Runtime Library  
//*---------------------------------------------------------------------------*  
Bool IPPDialog::DeleteFolder()  
//*---------------------------------------------------------------------------*  
{  
     // Valid Selection?  
     RuntimeItem*     folder =     root.GetSelectedFolder();  
     if (!folder)     return TRUE;  
     RuntimeItem*     parent =     folder->GetParent();  
     // Only delete below library and sub folders  
     if (folder->IsTypeOf(ITEMTYPE_RUNTIME))     return TRUE;  
     if (parent == folder->GetRuntime())          return TRUE;  
     // Are you sure?  
     if (!QuestionDialog(GeLoadString(IPPS_REMPOSE_YESNO)+"\n\""+folder->GetName()+"\""))     return TRUE;  
     Filename     folderFile =     folder->GetFilename();  
     if (!GeFKill(folderFile, TRUE))  
     {  
          // Are you REALLY sure? (folder is not empty)  
          if (!QuestionDialog(GeLoadString(IPPS_DELFOLDER_REALLY)))     return TRUE;  
          // Backward-Recursively delete subfolders and files in this folder  
          if (!DeleteFolderContents(folderFile))     return FALSE;  
          GeFKill(folderFile, TRUE);  
     }  
     // Update Display  
     root.SetSelected(NULL, SELECTION_NEW);  
     root.Fold(parent, FALSE);  
     root.Fold(parent, TRUE);  
     root.SetSelected(parent, SELECTION_NEW);  
     return TRUE;  
}  
// v1.1.7  
// Delete Folder contents from Runtime Library - recursive  
//*---------------------------------------------------------------------------*  
Bool IPPDialog::DeleteFolderContents(const Filename& folder)  
//*---------------------------------------------------------------------------*  
{  
     AutoAlloc<BrowseFiles>     browse;  
     if (!browse)     return FALSE;  
     Filename          file;  
     BOOL               isdir;  
#ifdef     C4D_R10  
     browse->Init(folder, BROWSEFILES_SUPPRESSCACHING);  
#else  
     browse->Init(folder, FALSE);  
#endif  
     while (browse->GetNext())  
     {  
          file =     folder+browse->GetFilename();  
          isdir =     browse->IsDir();  
          // Delete Folder's contents  
          if (isdir)  
          {  
               if (!DeleteFolderContents(file))     return FALSE;  
          }  
          // Delete Folder or File  
          if (!GeFKill(file, isdir))          return FALSE;  
     }  
     return TRUE;  
}  

Any information on why this occurs and how to work around it is much appreciated!

Thank you very much,
Robert