diff options
| author | 2011-02-02 01:12:36 +0000 | |
|---|---|---|
| committer | 2011-02-02 01:12:36 +0000 | |
| commit | 7d53115a98a4e87fab5012c00b8f0f31a2641485 (patch) | |
| tree | 71ed38dff44fc4f479930d701230e77056bf914f /src/kvilib/file/KviFileUtils.cpp | |
| parent | updated turkish translation (diff) | |
| download | KVIrc-7d53115a98a4e87fab5012c00b8f0f31a2641485.tar.gz KVIrc-7d53115a98a4e87fab5012c00b8f0f31a2641485.tar.bz2 KVIrc-7d53115a98a4e87fab5012c00b8f0f31a2641485.zip | |
Some addon-related fixes
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5409 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/kvilib/file/KviFileUtils.cpp')
| -rw-r--r-- | src/kvilib/file/KviFileUtils.cpp | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/src/kvilib/file/KviFileUtils.cpp b/src/kvilib/file/KviFileUtils.cpp index fdc1a23f0..dcefe0561 100644 --- a/src/kvilib/file/KviFileUtils.cpp +++ b/src/kvilib/file/KviFileUtils.cpp @@ -252,32 +252,36 @@ namespace KviFileUtils bool deleteDir(const QString & szPath) { QDir d(szPath); - QStringList sl = d.entryList(QDir::Dirs); - QStringList::Iterator it; - for(it = sl.begin(); it != sl.end(); it++) + + QFileInfoList lFileInfo = d.entryInfoList(QDir::Files | QDir::Dirs | QDir::Hidden | QDir::System | QDir::NoDotAndDotDot); + + foreach(QFileInfo inf,lFileInfo) { - QString szSubdir = *it; - if(!(KviQString::equalCS(szSubdir,"..") || KviQString::equalCS(szSubdir,"."))) + // just to be sure check that we're not deleting .. + if(KviQString::equalCS(inf.fileName(),"..") || KviQString::equalCS(inf.fileName(),".")) + continue; + + if(inf.isDir()) { - QString szSubPath = szPath; - KviQString::ensureLastCharIs(szSubPath,QChar(KVI_PATH_SEPARATOR_CHAR)); - szSubPath += szSubdir; - if(!KviFileUtils::deleteDir(szSubPath)) + if(!deleteDir(inf.absoluteFilePath())) return false; + continue; + } + + if(!KviFileUtils::removeFile(inf.absoluteFilePath())) + { + qDebug("Failed to remove file %s",inf.absoluteFilePath().toUtf8().data()); + return false; } } - sl = d.entryList(QDir::Files); - for(it = sl.begin(); it != sl.end(); it++) + if(!KviFileUtils::removeDir(szPath)) { - QString szFilePath = szPath; - KviQString::ensureLastCharIs(szFilePath,QChar(KVI_PATH_SEPARATOR_CHAR)); - szFilePath += *it; - if(!KviFileUtils::removeFile(szFilePath)) - return false; + qDebug("Failed to remove directory %s",szPath.toUtf8().data()); + return false; } - return KviFileUtils::removeDir(szPath); + return true; } bool writeFile(const QString & szPath, const QString & szData, bool bAppend) |
