From ca645afdc4f51a4002d715ae02c4c38520257774 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 15 Jul 2013 16:45:44 +0200 Subject: de-duplicate writeout of config files Change-Id: Iaad06f170cf2be3d3fca533a735b69316347ed5b Reviewed-by: Joerg Bornemann --- tools/configure/configureapp.cpp | 169 ++++++++++++++++++--------------------- tools/configure/configureapp.h | 10 +++ 2 files changed, 90 insertions(+), 89 deletions(-) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index abc1ba4407..50b31bbb95 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -2806,21 +2806,19 @@ void Configure::generateOutputVars() void Configure::generateCachefile() { // Generate .qmake.cache - QFile cacheFile(buildPath + "/.qmake.cache"); - if (cacheFile.open(QFile::WriteOnly | QFile::Text)) { // Truncates any existing file. - QTextStream cacheStream(&cacheFile); + { + FileWriter cacheStream(buildPath + "/.qmake.cache"); cacheStream << "QT_SOURCE_TREE = " << formatPath(dictionary["QT_SOURCE_TREE"]) << endl; cacheStream << "QT_BUILD_TREE = " << formatPath(dictionary["QT_BUILD_TREE"]) << endl; - cacheStream.flush(); - cacheFile.close(); + if (!cacheStream.flush()) + dictionary[ "DONE" ] = "error"; } // Generate qmodule.pri - QFile moduleFile(dictionary[ "QT_BUILD_TREE" ] + "/mkspecs/qmodule.pri"); - if (moduleFile.open(QFile::WriteOnly | QFile::Text)) { // Truncates any existing file. - QTextStream moduleStream(&moduleFile); + { + FileWriter moduleStream(dictionary[ "QT_BUILD_TREE" ] + "/mkspecs/qmodule.pri"); moduleStream << "QT_BUILD_PARTS += " << buildParts.join(' ') << endl; if (!skipModules.isEmpty()) @@ -2882,8 +2880,8 @@ void Configure::generateCachefile() for (QStringList::Iterator var = qmakeVars.begin(); var != qmakeVars.end(); ++var) moduleStream << (*var) << endl; - moduleStream.flush(); - moduleFile.close(); + if (!moduleStream.flush()) + dictionary[ "DONE" ] = "error"; } } @@ -3079,9 +3077,8 @@ bool Configure::compilerSupportsFlag(const QString &compilerAndArgs) void Configure::generateQConfigPri() { // Generate qconfig.pri - QFile configFile(dictionary[ "QT_BUILD_TREE" ] + "/mkspecs/qconfig.pri"); - if (configFile.open(QFile::WriteOnly | QFile::Text)) { // Truncates any existing file. - QTextStream configStream(&configFile); + { + FileWriter configStream(dictionary[ "QT_BUILD_TREE" ] + "/mkspecs/qconfig.pri"); configStream << "CONFIG+= "; configStream << dictionary[ "BUILD" ]; @@ -3151,8 +3148,8 @@ void Configure::generateQConfigPri() if (dictionary[ "SHARED" ] == "no") configStream << "QT_DEFAULT_QPA_PLUGIN = q" << qpaPlatformName() << endl; - configStream.flush(); - configFile.close(); + if (!configStream.flush()) + dictionary[ "DONE" ] = "error"; } } @@ -3190,13 +3187,8 @@ QString Configure::addDefine(QString def) void Configure::generateConfigfiles() { - QDir(buildPath).mkpath("src/corelib/global"); - QString outName(buildPath + "/src/corelib/global/qconfig.h"); - QTemporaryFile tmpFile; - QTextStream tmpStream; - - if (tmpFile.open()) { - tmpStream.setDevice(&tmpFile); + { + FileWriter tmpStream(buildPath + "/src/corelib/global/qconfig.h"); if (dictionary[ "QCONFIG" ] == "full") { tmpStream << "/* Everything */" << endl; @@ -3206,8 +3198,7 @@ void Configure::generateConfigfiles() tmpStream << "#ifndef QT_BOOTSTRAPPED" << endl; QFile inFile(sourcePath + "/src/corelib/global/" + configName); if (inFile.open(QFile::ReadOnly)) { - QByteArray buffer = inFile.readAll(); - tmpFile.write(buffer.constData(), buffer.size()); + tmpStream << QTextStream(&inFile).readAll(); inFile.close(); } tmpStream << "#endif // QT_BOOTSTRAPPED" << endl; @@ -3338,68 +3329,40 @@ void Configure::generateConfigfiles() tmpStream<<"#define QT_QPA_DEFAULT_PLATFORM_NAME \"" << qpaPlatformName() << "\""< #include #include +#include #include #include @@ -191,5 +192,14 @@ public: Configure::ProjectType qmakeTemplate; }; +class FileWriter : public QTextStream +{ +public: + FileWriter(const QString &name); + bool flush(); +private: + QString m_name; + QBuffer m_buffer; +}; QT_END_NAMESPACE -- cgit v1.2.3