X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fcliparser.cpp;h=a34af80af41701db135876a7b016d3e3c41ace46;hp=3b0064e7b5f6c136d7699e26c8ade025b80e18c3;hb=b2efa6809ee09b70be19c0f66e0fcd6e57bf64bc;hpb=6d6d0fcad8a01c5d232890416ad797b2fcb28c48 diff --git a/src/common/cliparser.cpp b/src/common/cliparser.cpp index 3b0064e7..a34af80a 100644 --- a/src/common/cliparser.cpp +++ b/src/common/cliparser.cpp @@ -19,19 +19,11 @@ ***************************************************************************/ #include "cliparser.h" +#include #include #include #include -CliParser::CliParser(QStringList arguments) -{ - argsRaw = arguments; -// remove Qt internal debugging arguments - argsRaw.removeOne("-sync"); - argsRaw.removeOne("-nograb"); - argsRaw.removeOne("-dograb"); -} - void CliParser::addArgument(const QString &longName, const CliParserArg &arg) { if(argsHash.contains(longName)) qWarning() << "Warning: Multiple definition of argument" << longName; if(arg.shortName != 0 && !lnameOfShortArg(arg.shortName).isNull()) @@ -42,7 +34,7 @@ void CliParser::addArgument(const QString &longName, const CliParserArg &arg) { bool CliParser::addLongArg(const CliParserArg::CliArgType type, const QString &name, const QString &value) { if(argsHash.contains(name)){ if(type == CliParserArg::CliArgOption && argsHash.value(name).type == type) { - argsHash[name].value = value; + argsHash[name].value = escapedValue(value); return true; } else if (type == CliParserArg::CliArgSwitch && argsHash.value(name).type == type) { @@ -58,7 +50,7 @@ bool CliParser::addShortArg(const CliParserArg::CliArgType type, const char shor QString longName = lnameOfShortArg(shortName); if(!longName.isNull()) { if(type == CliParserArg::CliArgOption && argsHash.value(longName).type == type) { - argsHash[longName].value = value; + argsHash[longName].value = escapedValue(value); return true; } else if (type == CliParserArg::CliArgSwitch) { @@ -77,7 +69,16 @@ bool CliParser::addShortArg(const CliParserArg::CliArgType type, const char shor return false; } -bool CliParser::parse() { +QString CliParser::escapedValue(const QString &value) { + QString escapedValue = value; + if(escapedValue.startsWith("~")) + escapedValue.replace(0, 1, QDir::homePath()); + + return escapedValue; +} + +bool CliParser::parse(const QStringList &args) { + argsRaw = args; QStringList::const_iterator currentArg; for (currentArg = argsRaw.constBegin(); currentArg != argsRaw.constEnd(); ++currentArg) { if(currentArg->startsWith("--")) { @@ -142,7 +143,7 @@ bool CliParser::parse() { void CliParser::usage() { qWarning() << "Usage:" << QFileInfo(argsRaw.at(0)).completeBaseName() << "[arguments]"; - + // get size of longName field QStringList keys = argsHash.keys(); uint lnameFieldSize = 0; @@ -156,12 +157,12 @@ void CliParser::usage() { size += 8; if(size > lnameFieldSize) lnameFieldSize = size; } - + QHash::const_iterator arg; for(arg = argsHash.constBegin(); arg != argsHash.constEnd(); ++arg) { QString output; QString lnameField; - + if(arg.value().shortName) { output.append(" -").append(arg.value().shortName).append(","); }