aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/trackchange
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-11-28 20:16:02 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-11-28 20:16:02 +0000
commita6c9576834e363228923633cbd54099d1f408650 (patch)
tree694bbaa23820b17fc86f1b1058095bd288078b19 /src/plugins/General/trackchange
parente0d060ae41c3b6cffa934566cb4a419d2d9186ee (diff)
downloadqmmp-a6c9576834e363228923633cbd54099d1f408650.tar.gz
qmmp-a6c9576834e363228923633cbd54099d1f408650.tar.bz2
qmmp-a6c9576834e363228923633cbd54099d1f408650.zip
track change: escape single and double quotes (#992)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9114 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/trackchange')
-rw-r--r--src/plugins/General/trackchange/trackchange.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/plugins/General/trackchange/trackchange.cpp b/src/plugins/General/trackchange/trackchange.cpp
index 259a4d474..3a95a62ff 100644
--- a/src/plugins/General/trackchange/trackchange.cpp
+++ b/src/plugins/General/trackchange/trackchange.cpp
@@ -27,6 +27,7 @@
#include <QDir>
#include <QProcess>
#include <QMap>
+#include <QtDebug>
#include <qmmp/soundcore.h>
#include <qmmpui/uihelper.h>
#include <qmmpui/playlistmodel.h>
@@ -105,12 +106,23 @@ void TrackChange::onFinised()
bool TrackChange::executeCommand(const TrackInfo &info, const QString &format)
{
+ TrackInfo tmp = info;
+ QMap<Qmmp::MetaData, QString> metaData = tmp.metaData();
+ QMap<Qmmp::MetaData, QString>::iterator it = metaData.begin();
+ while(it != metaData.end())
+ {
+ it.value() = it.value().replace("u", "'\\''");
+ it.value() = it.value().replace("O", "\"");
+ it++;
+ }
+ tmp.setValues(metaData);
MetaDataFormatter formatter(format);
- QString command = formatter.format(info);
+ QString command = formatter.format(tmp);
#ifdef Q_OS_WIN
bool ok = QProcess::startDetached(QString("cmd.exe \"%1\"").arg(command));
#else
- bool ok = QProcess::startDetached(QString("sh -c \"%1\"").arg(command));
+ QStringList args = { "-c", command };
+ bool ok = QProcess::startDetached("sh", args);
#endif
if(!ok)
qWarning("TrackChange: unable to start command '%s'", qPrintable(command));