From: Manuel Nickschas Date: Sat, 17 Jan 2009 00:37:08 +0000 (+0100) Subject: Get rid of the old path finding methods in util.cpp X-Git-Tag: 0.4.0~194 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=cd37744f0a2cd8ffe027892ddce5c7d6f4848ab0 Get rid of the old path finding methods in util.cpp Use the stuff in Quassel:: now. And use --configdir to specify the config dir on the cli, rather than the now deprecated --datadir. --- diff --git a/src/common/network.cpp b/src/common/network.cpp index 9a4994f0..c71b5c2c 100644 --- a/src/common/network.cpp +++ b/src/common/network.cpp @@ -17,12 +17,12 @@ * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#include "network.h" - -#include #include #include +#include "network.h" +#include "quassel.h" + QTextCodec *Network::_defaultCodecForServer = 0; QTextCodec *Network::_defaultCodecForEncoding = 0; QTextCodec *Network::_defaultCodecForDecoding = 0; @@ -403,7 +403,7 @@ QByteArray Network::encodeServerString(const QString &string) const { QStringList Network::presetNetworks(bool onlyDefault) { // lazily find the file, make sure to not call one of the other preset functions first (they'll fail else) if(_networksIniPath.isNull()) { - _networksIniPath = findDataFilePath("networks.ini"); + _networksIniPath = Quassel::findDataFilePath("networks.ini"); if(_networksIniPath.isNull()) { _networksIniPath = ""; // now we won't check again, as it's not null anymore return QStringList(); diff --git a/src/common/quassel.cpp b/src/common/quassel.cpp index 849920d8..bd31929a 100644 --- a/src/common/quassel.cpp +++ b/src/common/quassel.cpp @@ -249,6 +249,9 @@ QString Quassel::configDirPath() { #endif } + if(!_configDirPath.endsWith('/')) + _configDirPath += '/'; + QDir qDir(_configDirPath); if(!qDir.exists(_configDirPath)) { if(!qDir.mkpath(_configDirPath)) { diff --git a/src/common/quassel.h b/src/common/quassel.h index cb29f3f1..9492ec6b 100644 --- a/src/common/quassel.h +++ b/src/common/quassel.h @@ -64,7 +64,21 @@ public: static inline RunMode runMode(); static QString configDirPath(); + + //! Returns a list of data directory paths + /** There are several locations for applications to install their data files in. On Unix, + * a common location is /usr/share; others include $PREFIX/share and additional directories + * specified in the env variable XDG_DATA_DIRS. + * \return A list of directory paths to look for data files in + */ static QStringList dataDirPaths(); + + //! Searches for a data file in the possible data directories + /** Data files can reside in $DATA_DIR/apps/quassel, where $DATA_DIR is one of the directories + * returned by \sa dataDirPaths(). + * \Note With KDE integration enabled, files are searched (only) in KDE's appdata dirs. + * \return The full path to the data file if found; a null QString else + */ static QString findDataFilePath(const QString &filename); static inline void setCliParser(AbstractCliParser *cliParser); diff --git a/src/common/util.cpp b/src/common/util.cpp index a8a38875..4698b30d 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -92,31 +92,6 @@ QString decodeString(const QByteArray &input, QTextCodec *codec) { return codec->toUnicode(input); } -/* not needed anymore -void writeDataToDevice(QIODevice *dev, const QVariant &item) { - QByteArray block; - QDataStream out(&block, QIODevice::WriteOnly); - out.setVersion(QDataStream::Qt_4_2); - out << (quint32)0 << item; - out.device()->seek(0); - out << (quint32)(block.size() - sizeof(quint32)); - dev->write(block); -} - -bool readDataFromDevice(QIODevice *dev, quint32 &blockSize, QVariant &item) { - QDataStream in(dev); - in.setVersion(QDataStream::Qt_4_2); - - if(blockSize == 0) { - if(dev->bytesAvailable() < (int)sizeof(quint32)) return false; - in >> blockSize; - } - if(dev->bytesAvailable() < blockSize) return false; - in >> item; - return true; -} -*/ - uint editingDistance(const QString &s1, const QString &s2) { uint n = s1.size()+1; uint m = s2.size()+1; @@ -151,59 +126,6 @@ uint editingDistance(const QString &s1, const QString &s2) { return matrix[n-1][m-1]; } -QDir quasselDir() { - QString quasselDir; - if(Quassel::isOptionSet("datadir")) { - quasselDir = Quassel::optionValue("datadir"); - } else { - // FIXME use QDesktopServices -#ifdef Q_OS_WIN32 - quasselDir = qgetenv("APPDATA") + "/quassel/"; -#elif defined Q_WS_MAC - quasselDir = QDir::homePath() + "/Library/Application Support/Quassel/"; -#else - quasselDir = QDir::homePath() + "/.quassel/"; -#endif - } - - QDir qDir(quasselDir); - if(!qDir.exists(quasselDir)) { - if(!qDir.mkpath(quasselDir)) { - qCritical() << "Unable to create Quassel data directory:" << qPrintable(qDir.absolutePath()); - } - } - - return qDir; -} - -QStringList dataDirPaths() { - QStringList dataDirNames = QString(qgetenv("XDG_DATA_DIRS")).split(':', QString::SkipEmptyParts); - - // Provide a fallback -# ifdef Q_OS_UNIX - if(dataDirNames.isEmpty()) dataDirNames.append("/usr/share"); - // on UNIX, we always check our install prefix - QString appDir = QCoreApplication::applicationDirPath(); - int binpos = appDir.lastIndexOf("/bin"); - if(binpos >= 0) { - appDir.replace(binpos, 4, "/share"); - if(!dataDirNames.contains(appDir)) dataDirNames.append(appDir); - } -# endif - - return dataDirNames; -} - -QString findDataFilePath(const QString &fileName) { - QStringList dataDirs = dataDirPaths(); - foreach(QString dataDir, dataDirs) { - QString path = dataDir + "/apps/quassel/" + fileName; - if(QFile::exists(path)) - return path; - } - return QString(); -} - void loadTranslation(const QLocale &locale) { QTranslator *qtTranslator = QCoreApplication::instance()->findChild("QtTr"); QTranslator *quasselTranslator = QCoreApplication::instance()->findChild("QuasselTr"); diff --git a/src/common/util.h b/src/common/util.h index 28639ba9..66a36e2b 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -50,23 +50,6 @@ QString decodeString(const QByteArray &input, QTextCodec *codec = 0); uint editingDistance(const QString &s1, const QString &s2); -QDir quasselDir(); - -//! Returns a list of data directory paths -/** There are several locations for applications to install their data files in. On Unix, - * a common location is /usr/share; others include $PREFIX/share and additional directories - * specified in the env variable XDG_DATA_DIRS. - * \return A list of directory paths to look for data files in - */ -QStringList dataDirPaths(); - -//! Searches for a data file in the possible data directories -/** Data files can reside in $DATA_DIR/apps/quassel, where $DATA_DIR is one of the directories - * returned by \sa dataDirPaths(). - * \return The full path to the data file if found; a null QString else - */ -QString findDataFilePath(const QString &fileName); - void loadTranslation(const QLocale &locale); template diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 974740df..e1994093 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -22,10 +22,9 @@ #include -#include "network.h" - -#include "util.h" #include "logger.h" +#include "network.h" +#include "quassel.h" int SqliteStorage::_maxRetryCount = 150; // yes this is a large number... only other way to "handle" this is bailing out... @@ -969,7 +968,7 @@ QList SqliteStorage::requestAllMsgs(UserId user, MsgId first, MsgId las } QString SqliteStorage::backlogFile() { - return quasselDir().absolutePath() + "/quassel-storage.sqlite"; + return Quassel::configDirPath() + "quassel-storage.sqlite"; } bool SqliteStorage::safeExec(QSqlQuery &query, int retryCount) { diff --git a/src/core/sslserver.cpp b/src/core/sslserver.cpp index f256923b..aa5be2c2 100644 --- a/src/core/sslserver.cpp +++ b/src/core/sslserver.cpp @@ -27,7 +27,7 @@ #include #include "logger.h" -#include "util.h" +#include "quassel.h" #ifdef HAVE_SSL @@ -36,7 +36,7 @@ SslServer::SslServer(QObject *parent) _isCertValid(false) { static bool sslWarningShown = false; - if(!setCertificate(quasselDir().absolutePath() + "/quasselCert.pem")) { + if(!setCertificate(Quassel::configDirPath() + "quasselCert.pem")) { if(!sslWarningShown) { quWarning() << "SslServer: Unable to set certificate file\n"