[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kdecore/config
From: Oswald Buddenhagen <ossi () kde ! org>
Date: 2009-03-28 22:30:22
Message-ID: 1238279422.286601.5947.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 946232 by ossi:
refresh the config file list on each reparse
both we (trivial) or others (non-trivial) could have added new files.
this fixes a regression for local files from the last commit and makes
it work for global files in the first place.
M +35 -31 kconfig.cpp
M +2 -2 kconfig_p.h
--- trunk/KDE/kdelibs/kdecore/config/kconfig.cpp #946231:946232
@@ -60,29 +60,24 @@
componentData(componentData_), configState(KConfigBase::NoAccess)
{
sGlobalFileName = componentData.dirs()->saveLocation("config") + \
QLatin1String("kdeglobals");
- const KStandardDirs *const dirs = componentData.dirs();
- foreach (const QString& dir1, dirs->findAllResources("config", \
QLatin1String("kdeglobals")))
- globalFiles.push_front(dir1);
- foreach (const QString& dir2, dirs->findAllResources("config", \
QLatin1String("system.kdeglobals")))
- globalFiles.push_front(dir2);
- const QString etc_kderc =
+
+ etc_kderc =
#ifdef Q_WS_WIN
QFile::decodeName( qgetenv("WINDIR") + "/kde4rc" );
#else
QLatin1String("/etc/kde4rc");
#endif
+ if (!KStandardDirs::checkAccess(etc_kderc, R_OK)) {
+ etc_kderc.clear();
+ }
+
KEntryMap tmp;
- // first entry is always /etc/kderc or empty if cannot read
- if (KStandardDirs::checkAccess(etc_kderc, R_OK)) {
- if (!globalFiles.contains(etc_kderc))
- globalFiles.push_front(etc_kderc);
-
+ if (!etc_kderc.isEmpty()) {
if (!mappingsRegistered) {
KSharedPtr<KConfigBackend> backend = \
KConfigBackend::create(componentData, etc_kderc, \
QLatin1String("INI"));
backend->parseConfig( "en_US", tmp, KConfigBackend::ParseDefaults);
}
} else {
- globalFiles.push_front(QString());
mappingsRegistered = true;
}
@@ -423,23 +418,7 @@
return;
}
- localFiles.clear();
- if (file == sGlobalFileName) {
- bSuppressGlobal = true;
- if (wantDefaults()) {
- localFiles = globalFiles;
- } else {
- localFiles << file;
- }
- } else {
- bSuppressGlobal = false;
- if (wantDefaults()) {
- foreach (const QString& f, \
componentData.dirs()->findAllResources(resourceType, fileName))
- localFiles.prepend(f);
- } else {
- localFiles << file;
- }
- }
+ bSuppressGlobal = (file == sGlobalFileName);
if (bDynamicBackend || !mBackend) // allow dynamic changing of backend
mBackend = KConfigBackend::create(componentData, file);
@@ -467,8 +446,23 @@
d->parseConfigFiles();
}
+
+QStringList KConfigPrivate::getGlobalFiles() const
+{
+ const KStandardDirs *const dirs = componentData.dirs();
+ QStringList globalFiles;
+ foreach (const QString& dir1, dirs->findAllResources("config", \
QLatin1String("kdeglobals"))) + globalFiles.push_front(dir1);
+ foreach (const QString& dir2, dirs->findAllResources("config", \
QLatin1String("system.kdeglobals"))) + globalFiles.push_front(dir2);
+ if (!etc_kderc.isEmpty())
+ globalFiles.push_front(etc_kderc);
+ return globalFiles;
+}
+
void KConfigPrivate::parseGlobalFiles()
{
+ QStringList globalFiles = getGlobalFiles();
// qDebug() << "parsing global files" << globalFiles;
// TODO: can we cache the values in etc_kderc / other global files
@@ -493,9 +487,19 @@
bFileImmutable = false;
QList<QString> files;
+ if (wantDefaults()) {
+ if (bSuppressGlobal) {
+ files = getGlobalFiles();
+ } else {
+ foreach (const QString& f, componentData.dirs()->findAllResources(
+ resourceType, \
mBackend->filePath())) + files.prepend(f);
+ }
+ } else {
+ files << mBackend->filePath();
+ }
if (!isSimple())
- files = extraFiles.toList();
- files += localFiles;
+ files = extraFiles.toList() + files;
// qDebug() << "parsing local files" << files;
--- trunk/KDE/kdelibs/kdecore/config/kconfig_p.h #946231:946232
@@ -87,12 +87,11 @@
KEntryMap entryMap;
QString backendType;
- QStringList globalFiles;
- QStringList localFiles;
QStack<QString> extraFiles;
QString locale;
QString fileName;
+ QString etc_kderc;
KComponentData componentData;
KConfigBase::AccessMode configState;
@@ -102,6 +101,7 @@
bool isReadOnly() const { return configState == KConfig::ReadOnly; }
bool setLocale(const QString& aLocale);
+ QStringList getGlobalFiles() const;
void parseGlobalFiles();
void parseConfigFiles();
void initCustomized(KConfig*);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic