From 11178af1008fd95b02ec9624fe4d394c477ac2bc Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Wed, 21 Jan 2009 09:04:54 +0100 Subject: [PATCH 1/1] Improve data directory search --- src/common/quassel.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/common/quassel.cpp b/src/common/quassel.cpp index bf0cbee3..52be52b8 100644 --- a/src/common/quassel.cpp +++ b/src/common/quassel.cpp @@ -253,7 +253,7 @@ QString Quassel::configDirPath() { _configDirPath = fileInfo.dir().absolutePath(); } - if(!_configDirPath.endsWith(QDir::separator())) + if(!_configDirPath.endsWith(QDir::separator()) && !_configDirPath.endsWith('/')) _configDirPath += QDir::separator(); QDir qDir(_configDirPath); @@ -281,7 +281,7 @@ QStringList Quassel::findDataDirPaths() const { // Provide a fallback // FIXME fix this for win and mac! #ifdef Q_OS_WIN32 - dataDirNames << qgetenv("APPDATA") + "/quassel/" + dataDirNames << qgetenv("APPDATA") + QCoreApplication::organizationDomain(); << QCoreApplication::applicationDirPath(); #elif defined Q_WS_MAC dataDirNames << QDir::homePath() + "/Library/Application Support/Quassel/" @@ -301,8 +301,22 @@ QStringList Quassel::findDataDirPaths() const { #endif } - // add resource path just in case - dataDirNames << ":/data/"; + // add resource path and workdir just in case + dataDirNames << ":/data/" + << QCoreApplication::applicationDirPath() + "/data/" + << QCoreApplication::applicationDirPath(); + + // append trailing '/' and check for existence + QStringList::Iterator iter = dataDirNames.begin(); + while(iter != dataDirNames.end()) { + if(!iter->endsWith(QDir::separator()) && !iter->endsWith('/')) + iter->append(QDir::separator()); + if(!QFile::exists(*iter)) + iter = dataDirNames.erase(iter); + else + ++iter; + } + return dataDirNames; } -- 2.20.1