+ DWORD attr = GetFileAttributes(path.c_str());
+ bool is_directory = (attr != INVALID_FILE_ATTRIBUTES &&
+ (attr & FILE_ATTRIBUTE_DIRECTORY));
+ if(!is_directory)
+ {
+ infostream<<"RecursiveDelete: Deleting file "<<path<<std::endl;
+ //bool did = DeleteFile(path.c_str());
+ bool did = true;
+ if(!did){
+ errorstream<<"RecursiveDelete: Failed to delete file "
+ <<path<<std::endl;
+ return false;
+ }
+ }
+ else
+ {
+ infostream<<"RecursiveDelete: Deleting content of directory "
+ <<path<<std::endl;
+ std::vector<DirListNode> content = GetDirListing(path);
+ for(int i=0; i<content.size(); i++){
+ const DirListNode &n = content[i];
+ std::string fullpath = path + DIR_DELIM + n.name;
+ bool did = RecursiveDelete(fullpath);
+ if(!did){
+ errorstream<<"RecursiveDelete: Failed to recurse to "
+ <<fullpath<<std::endl;
+ return false;
+ }
+ }
+ infostream<<"RecursiveDelete: Deleting directory "<<path<<std::endl;
+ //bool did = RemoveDirectory(path.c_str();
+ bool did = true;
+ if(!did){
+ errorstream<<"Failed to recursively delete directory "
+ <<path<<std::endl;
+ return false;
+ }
+ }