aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-10-12 17:21:53 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-10-12 17:21:53 +0000
commit506ceaa02734363f68827c0df227dcb0774e8852 (patch)
treeb1e41486f0489df0419d0c95671ecceb518e9d5c /src
parentf53cb0c53b8f8d34c6d7d4fb33d79cb0a70f59bb (diff)
downloadqmmp-506ceaa02734363f68827c0df227dcb0774e8852.tar.gz
qmmp-506ceaa02734363f68827c0df227dcb0774e8852.tar.bz2
qmmp-506ceaa02734363f68827c0df227dcb0774e8852.zip
improved command line parser (#814)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5672 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/app/builtincommandlineoption.cpp13
-rw-r--r--src/app/qmmpstarter.cpp10
2 files changed, 14 insertions, 9 deletions
diff --git a/src/app/builtincommandlineoption.cpp b/src/app/builtincommandlineoption.cpp
index da8cc8680..5bb4da76a 100644
--- a/src/app/builtincommandlineoption.cpp
+++ b/src/app/builtincommandlineoption.cpp
@@ -224,12 +224,17 @@ void BuiltinCommandLineOption::executeCommand(const QString &option_string,
QHash <QString, QStringList> BuiltinCommandLineOption::splitArgs(const QStringList &args) const
{
QHash <QString, QStringList> commands;
+ QString lastCmd;
foreach(QString arg, args)
{
- if(arg.startsWith("-") || arg.startsWith("--"))
- commands.insert(arg, QStringList());
- else if(!commands.isEmpty())
- commands[commands.keys().last()] << arg;
+ QString cmd = arg.trimmed();
+ if(cmd.startsWith("-") || cmd.startsWith("--"))
+ {
+ commands.insert(cmd, QStringList());
+ lastCmd = cmd;
+ }
+ else if(!commands.isEmpty() && !lastCmd.isEmpty())
+ commands[lastCmd] << arg;
}
return commands;
}
diff --git a/src/app/qmmpstarter.cpp b/src/app/qmmpstarter.cpp
index 0b9a51b8d..048d22ebd 100644
--- a/src/app/qmmpstarter.cpp
+++ b/src/app/qmmpstarter.cpp
@@ -64,9 +64,9 @@ QMMPStarter::QMMPStarter(int argc,char **argv, QObject* parent) : QObject(parent
m_option_manager = new BuiltinCommandLineOption(this);
QStringList tmp;
for (int i = 1;i < argc;i++)
- tmp << QString::fromLocal8Bit(argv[i]).trimmed();
+ tmp << QString::fromLocal8Bit(argv[i]);
- argString = tmp.join("\n");
+ argString = tmp.join("|||");
QHash <QString, QStringList> commands = m_option_manager->splitArgs(tmp);
if(commands.keys().contains("--help"))
@@ -165,7 +165,7 @@ QMMPStarter::~QMMPStarter()
void QMMPStarter::startPlayer()
{
connect(m_server, SIGNAL(newConnection()), SLOT(readCommand()));
- QStringList args = argString.split("\n", QString::SkipEmptyParts);
+ QStringList args = argString.split("|||", QString::SkipEmptyParts);
#ifdef Q_OS_WIN
QIcon::setThemeSearchPaths(QStringList() << qApp->applicationDirPath() + "/themes/");
@@ -228,7 +228,7 @@ void QMMPStarter::savePosition()
void QMMPStarter::writeCommand()
{
- QString workingDir = QDir::currentPath() + "\n";
+ QString workingDir = QDir::currentPath() + "|||";
QByteArray barray;
barray.append(workingDir.toUtf8 ());
barray.append(argString.isEmpty() ? "--show-mw" : argString.toUtf8 ());
@@ -260,7 +260,7 @@ void QMMPStarter::readCommand()
socket->deleteLater();
return;
}
- QStringList slist = QString::fromUtf8(inputArray.data()).split("\n",QString::SkipEmptyParts);
+ QStringList slist = QString::fromUtf8(inputArray.data()).split("|||",QString::SkipEmptyParts);
QString cwd = slist.takeAt(0);
QString out = processCommandArgs(slist, cwd);
if(!out.isEmpty())