properly C-quote the manifest file name in the rc file
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>
Fri, 14 Sep 2012 15:29:13 +0000 (17:29 +0200)
committerQt by Nokia <qt-info@nokia.com>
Mon, 17 Sep 2012 22:59:08 +0000 (00:59 +0200)
Change-Id: I8c8eb85d412becc8c4029c2aa393abf6f8e949b6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
qmake/generators/win32/msvc_nmake.cpp

index bd5ead6..ba490a9 100644 (file)
@@ -355,6 +355,16 @@ void NmakeMakefileGenerator::writeImplicitRulesPart(QTextStream &t)
 
 }
 
+static QString cQuoted(const QString &str)
+{
+    QString ret = str;
+    ret.replace(QLatin1Char('"'), QStringLiteral("\\\""));
+    ret.replace(QLatin1Char('\\'), QStringLiteral("\\\\"));
+    ret.prepend(QLatin1Char('"'));
+    ret.append(QLatin1Char('"'));
+    return ret;
+}
+
 void NmakeMakefileGenerator::writeBuildRulesPart(QTextStream &t)
 {
     const ProString templateName = project->first("TEMPLATE");
@@ -396,7 +406,7 @@ void NmakeMakefileGenerator::writeBuildRulesPart(QTextStream &t)
                 project->values("QMAKE_CLEAN") << manifest_rc << manifest_res;
 
                 t << "\n\techo 1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID */ 24 /* RT_MANIFEST */ "
-                  << '"' << QFileInfo(unescapeFilePath(manifest)).fileName() << "\">" << manifest_rc;
+                  << cQuoted(QFileInfo(unescapeFilePath(manifest)).fileName()) << ">" << manifest_rc;
 
                 if (generateManifest) {
                     t << "\n\tif not exist $(DESTDIR_TARGET) del " << manifest << ">NUL 2>&1";