From a6c9576834e363228923633cbd54099d1f408650 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Thu, 28 Nov 2019 20:16:02 +0000 Subject: 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 --- src/plugins/General/trackchange/trackchange.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/plugins') 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 #include #include +#include #include #include #include @@ -105,12 +106,23 @@ void TrackChange::onFinised() bool TrackChange::executeCommand(const TrackInfo &info, const QString &format) { + TrackInfo tmp = info; + QMap metaData = tmp.metaData(); + QMap::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)); -- cgit v1.2.3-13-gbd6f