aboutsummaryrefslogtreecommitdiffstats
path: root/src/kvilib/file/KviFileUtils.cpp
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2011-02-02 01:12:36 +0000
committerGravatar Szymon Tomasz Stefanek2011-02-02 01:12:36 +0000
commit7d53115a98a4e87fab5012c00b8f0f31a2641485 (patch)
tree71ed38dff44fc4f479930d701230e77056bf914f /src/kvilib/file/KviFileUtils.cpp
parentupdated turkish translation (diff)
downloadKVIrc-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.cpp38
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)