From b210943b0af4262eca8bda82bac8dfd3b86546c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <thorbjorn.lindeijer@nokia.com> Date: Mon, 29 Jun 2009 18:42:59 +0200 Subject: [PATCH] Fixed a problem with adding files when final newline is missing When there was no final newline in the .files file, the name of the first new file would get appended to the name of the last file. This patch fixes that by simply rewriting the whole file. Also switched to writing out native line endings. --- .../genericprojectmanager/genericproject.cpp | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 86d3fbd6955..7a0a2c41cb1 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -170,18 +170,22 @@ static QStringList readLines(const QString &absoluteFileName) bool GenericProject::addFiles(const QStringList &filePaths) { + // Make sure we can open the file for writing QFile file(filesFileName()); - if (file.open(QFile::Append)) { - QTextStream stream(&file); - QDir baseDir(QFileInfo(m_fileName).dir()); - foreach (const QString &filePath, filePaths) { - stream << baseDir.relativeFilePath(filePath) << "\n"; - } - file.close(); - refresh(GenericProject::Files); - return true; - } - return false; + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) + return false; + + QStringList newFileList = m_files; + newFileList.append(filePaths); + + QTextStream stream(&file); + QDir baseDir(QFileInfo(m_fileName).dir()); + foreach (const QString &filePath, newFileList) + stream << baseDir.relativeFilePath(filePath) << QLatin1Char('\n'); + + file.close(); + refresh(GenericProject::Files); + return true; } void GenericProject::parseProject(RefreshOptions options) -- GitLab