aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/trackchange/trackchange.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/General/trackchange/trackchange.cpp')
-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));