diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/kconf_update/README.kconf_update | 4 | ||||
| -rw-r--r-- | src/kconf_update/kconf_update.cpp | 19 | 
2 files changed, 22 insertions, 1 deletions
| diff --git a/src/kconf_update/README.kconf_update b/src/kconf_update/README.kconf_update index 281fb9e5..72509286 100644 --- a/src/kconf_update/README.kconf_update +++ b/src/kconf_update/README.kconf_update @@ -51,6 +51,9 @@ Commas (,) are used to seperate fields and may not occur as part  of any field and all of the keywords are case-sensitive, i.e. you  cannot say "key" instead of "Key" for example. +Starting from KDE Frameworks 5 make sure to put Version=5 before the first "Id=" otherwise the upd file +will be skipped and the config file will not be updated. +  For the rest the file is parsed and executed sequentially from top to bottom.  Each line can contain one entry. The following entries are recognized: @@ -161,6 +164,7 @@ Example update file  ===================  # This is comment +Version=5  Id=kde2.2  File=kioslaverc,kio_httprc  Group=Proxy Settings diff --git a/src/kconf_update/kconf_update.cpp b/src/kconf_update/kconf_update.cpp index 255a382e..309bc3c2 100644 --- a/src/kconf_update/kconf_update.cpp +++ b/src/kconf_update/kconf_update.cpp @@ -29,6 +29,7 @@  #include <QCoreApplication>  #include <QtCore/QDir>  #include <QProcess> +#include <QDebug>  #include <kconfig.h>  #include <kconfiggroup.h> @@ -239,13 +240,21 @@ bool KonfUpdate::checkFile(const QString &filename)      int lineCount = 0;      resetOptions();      QString id; +    bool foundVersion = false;      while (!ts.atEnd()) {          const QString line = ts.readLine().trimmed(); -        lineCount++; +        if (line.startsWith("Version=5")) { +            foundVersion = true; +        } +        ++lineCount;          if (line.isEmpty() || (line[0] == '#')) {              continue;          }          if (line.startsWith("Id=")) { +            if (!foundVersion) { +                qDebug() << QStringLiteral("Missing \"Version=5\", file \'%1\' will be skipped.").arg(filename); +                return true; +            }              id = m_currentFilename + ':' + line.mid(3);          } else if (line.startsWith("File=")) {              checkGotFile(line.mid(5), id); @@ -315,13 +324,21 @@ bool KonfUpdate::updateFile(const QString &filename)      ts.setCodec(QTextCodec::codecForName("ISO-8859-1"));      m_lineCount = 0;      resetOptions(); +    bool foundVersion = false;      while (!ts.atEnd()) {          m_line = ts.readLine().trimmed(); +        if (m_line.startsWith("Version=5")) { +            foundVersion = true; +        }          m_lineCount++;          if (m_line.isEmpty() || (m_line[0] == QLatin1Char('#'))) {              continue;          }          if (m_line.startsWith(QLatin1String("Id="))) { +            if (!foundVersion) { +                qDebug() << QStringLiteral("Missing \"Version=5\", file \'%1\' will be skipped.").arg(filename); +                break; +            }              gotId(m_line.mid(3));          } else if (m_skip) {              continue; | 
