Esempio n. 1
0
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;
}