KConfig::addConfigSources is broken

Andreas Pakulat apaku at gmx.de
Sun Nov 18 18:57:24 GMT 2007


On 18.11.07 12:08:59, Thomas Braxton wrote:
> On 11/18/07, Andreas Pakulat <apaku at gmx.de> wrote:
> > On 18.11.07 11:30:33, Thomas Braxton wrote:
> > > On 11/18/07, Andreas Pakulat <apaku at gmx.de> wrote:
> > > > Hi,
> > > >
> > > > seems like KConfig::addConfigSources is broken, wrt. writing to the
> > > > configuration.
> > > >
> > > > When creating a KSharedConfig instance with:
> > > >
> > > > d->m_cfg = KSharedConfig::openConfig( d->projectTempFile );
> > > > d->m_cfg->addConfigSources( QStringList() << d->developerTempFile );
> > > try changing it to
> > > d->m_cfg = KSharedConfig::openConfig( d->developerTempFile );
> > > d->m_cfg = addConfigSources( QStringList() << d->projectTempFile );
> > > since the developer file is imho the most specific file, the file name
> > > passed to KConfig is considered the most specific file.
> >
> > Thats
> >
> > a) the opposite of what the API docs say
> > b) a behavioural change thats undocumented
> >
> > So either fix the api docs and add mentioning of this to
> > KDE4PORTING.html or revert to the old behaviour of "last in, first out".
> >
> so the name passed to KConfig doesn't matter, the last file passed in
> is considered to be the most specific file?

I guess you mean filename, if so the answer is no. The code I posted
creates a cascading KConfig object, i.e. entries that are in
projectTempFile are visible when reading them only if they're not in
developerTempFile. So for instance for:

projectTempFile:
[Project]
Name=Foo
VcsPlugin=Bar

developerTempFile:
[Project]
VcsPlugin=Foobar

I get "Foo" when reading "Name" from the resulting KConfigGroup object
and "Foobar" when reading "VcsPlugin". And when writing
"ManagerPlugin=Baz" it writes to developerTempFile and not
projectTempFile. Thats the behaviour KConfig had until the first merge
of the kconfig branch in October (IIR).

Andreas

-- 
Stay the curse.




More information about the kde-core-devel mailing list