int main(int argc, char **argv) { KAboutData aboutData("kwriteconfig", I18N_NOOP("KWriteConfig"), "1.0.0", I18N_NOOP("Write KConfig entries - for use in shell scripts"), KAboutData::License_GPL, "(c) 2001 Red Hat, Inc. & Luís Pedro Coelho"); aboutData.addAuthor("Luís Pedro Coelho", 0, "*****@*****.**"); aboutData.addAuthor("Bernhard Rosenkraenzer", "Wrote kreadconfig on which this is based", "*****@*****.**"); KCmdLineArgs::init(argc, argv, &aboutData); KCmdLineArgs::addCmdLineOptions(options); KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); QString group = QString::fromLocal8Bit(args->getOption("group")); QString key = QString::fromLocal8Bit(args->getOption("key")); QString file = QString::fromLocal8Bit(args->getOption("file")); QCString type = args->getOption("type").lower(); if(key.isNull() || !args->count()) { KCmdLineArgs::usage(); return 1; } QCString value = args->arg(0); KInstance inst(&aboutData); KConfig *konfig; if(file.isEmpty()) konfig = new KConfig(QString::fromLatin1("kdeglobals"), false, false); else konfig = new KConfig(file, false, false); konfig->setGroup(group); if(konfig->getConfigState() != KConfig::ReadWrite || konfig->entryIsImmutable(key)) return 2; if(type == "bool") { // For symmetry with kreadconfig we accept a wider range of values as true than Qt bool boolvalue = (value == "true" || value == "on" || value == "yes" || value == "1"); konfig->writeEntry(key, boolvalue); } else if(type == "path") { konfig->writePathEntry(key, QString::fromLocal8Bit(value)); } else { konfig->writeEntry(key, QString::fromLocal8Bit(value)); } konfig->sync(); delete konfig; return 0; }