Internal stuff only.
[quassel.git] / src / common / cliparser.cpp
index 9fbcacf..c4ca9b8 100644 (file)
@@ -19,6 +19,7 @@
  ***************************************************************************/
 #include "cliparser.h"
 
+#include <QDir>
 #include <QString>
 #include <QFileInfo>
 #include <QDebug>
 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) {
@@ -42,7 +39,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) {
@@ -50,6 +47,7 @@ bool CliParser::addLongArg(const CliParserArg::CliArgType type, const QString &n
       return true;
     }
   }
+  qWarning() << "Warning: Unrecognized argument:" << name;
   return false;
 }
 
@@ -57,7 +55,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) {
@@ -72,9 +70,18 @@ bool CliParser::addShortArg(const CliParserArg::CliArgType type, const char shor
       }
     }
   }
+  qWarning().nospace() << "Warning: Unrecognized argument: '" << shortName << "'";
   return false;
 }
 
+QString CliParser::escapedValue(const QString &value) {
+  QString escapedValue = value;
+  if(escapedValue.startsWith("~"))
+    escapedValue.replace(0, 1, QDir::homePath());
+
+  return escapedValue;
+}
+
 bool CliParser::parse() {
   QStringList::const_iterator currentArg;
   for (currentArg = argsRaw.constBegin(); currentArg != argsRaw.constEnd(); ++currentArg) {