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