diff --git a/src/Base/FileInfo.cpp b/src/Base/FileInfo.cpp index 11a69c1cb9..2c41117a2a 100644 --- a/src/Base/FileInfo.cpp +++ b/src/Base/FileInfo.cpp @@ -526,7 +526,7 @@ bool FileInfo::deleteDirectory(void) const #elif defined (FC_OS_LINUX) || defined(FC_OS_CYGWIN) || defined(FC_OS_MACOSX) || defined(FC_OS_BSD) return rmdir(FileName.c_str()) == 0; #else -# error "FileInfo::createDirectory() not implemented for this platform!" +# error "FileInfo::rmdir() not implemented for this platform!" #endif } @@ -537,7 +537,12 @@ bool FileInfo::deleteDirectoryRecursive(void) const for (std::vector::iterator It = List.begin();It!=List.end();++It) { if (It->isDir()) { - It->setPermissions(FileInfo::ReadWrite); + // At least on Linux, directory needs execute permission to be + // deleted. We don't really need to set permission for directory + // anyway, since FC code does not touch directory permission. + // + // It->setPermissions(FileInfo::ReadWrite); + It->deleteDirectoryRecursive(); } else if (It->isFile()) {