diff --git a/src/kreadconfig/kreadconfig.cpp b/src/kreadconfig/kreadconfig.cpp --- a/src/kreadconfig/kreadconfig.cpp +++ b/src/kreadconfig/kreadconfig.cpp @@ -58,6 +58,9 @@ parser.addOption(QCommandLineOption(QStringLiteral("key"), QCoreApplication::translate("main", "Key to look for"), QStringLiteral("key"))); parser.addOption(QCommandLineOption(QStringLiteral("default"), QCoreApplication::translate("main", "Default value"), QStringLiteral("value"))); parser.addOption(QCommandLineOption(QStringLiteral("type"), QCoreApplication::translate("main", "Type of variable"), QStringLiteral("type"))); + parser.addOption(QCommandLineOption(QStringLiteral("ignore-globals"), QCoreApplication::translate("main", "Ignore global files"))); + parser.addOption(QCommandLineOption(QStringLiteral("ignore-cascading"), QCoreApplication::translate("main", "Ignore configuration file cascading"))); + parser.addHelpOption(); parser.process(app); @@ -71,42 +74,31 @@ parser.showHelp(1); } - KSharedConfig::openConfig(); + KConfig::OpenFlags flags = KConfig::FullConfig; + if (parser.isSet(QLatin1String("ignore-globals"))) + flags &= ~KConfig::IncludeGlobals; + if (parser.isSet(QLatin1String("ignore-cascading"))) + flags &= ~KConfig::CascadeConfig; + + KSharedConfig::Ptr konfig = KSharedConfig::openConfig(file, flags); - KConfig *konfig; - bool configMustDeleted = false; - if (file.isEmpty()) - konfig = KSharedConfig::openConfig().data(); - else - { - konfig = new KConfig( file, KConfig::NoGlobals ); - configMustDeleted=true; - } KConfigGroup cfgGroup = konfig->group(QString()); foreach (const QString &grp, groups) cfgGroup = cfgGroup.group(grp); if(type==QStringLiteral("bool")) { dflt=dflt.toLower(); bool def=(dflt==QStringLiteral("true") || dflt==QStringLiteral("on") || dflt==QStringLiteral("yes") || dflt==QStringLiteral("1")); bool retValue = !cfgGroup.readEntry(key, def); - if ( configMustDeleted ) - delete konfig; return retValue; } else if((type==QStringLiteral("num")) || (type==QStringLiteral("int"))) { int retValue = cfgGroup.readEntry(key, dflt.toInt()); - if ( configMustDeleted ) - delete konfig; return retValue; } else if (type==QStringLiteral("path")){ fprintf(stdout, "%s\n", cfgGroup.readPathEntry(key, dflt).toLocal8Bit().data()); - if ( configMustDeleted ) - delete konfig; return 0; } else { /* Assume it's a string... */ fprintf(stdout, "%s\n", cfgGroup.readEntry(key, dflt).toLocal8Bit().data()); - if ( configMustDeleted ) - delete konfig; return 0; } }