diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/kreadconfig/kreadconfig.cpp | 19 | 
1 files changed, 15 insertions, 4 deletions
diff --git a/src/kreadconfig/kreadconfig.cpp b/src/kreadconfig/kreadconfig.cpp index c1a6d069..dcd5ed18 100644 --- a/src/kreadconfig/kreadconfig.cpp +++ b/src/kreadconfig/kreadconfig.cpp @@ -67,21 +67,32 @@ int main(int argc, char **argv)  	KInstance inst(&aboutData);  	KConfig *konfig; +        bool configMustDeleted = false;  	if (file.isEmpty())  	   konfig = KGlobal::config();  	else +        {  	   konfig = new KConfig(file, true, false); - +           configMustDeleted=true; +        }  	konfig->setGroup(group);  	if(type=="bool") {  		dflt=dflt.lower();  		bool def=(dflt=="true" || dflt=="on" || dflt=="yes" || dflt=="1"); -		return !konfig->readBoolEntry(key, def); +                bool retValue = !konfig->readBoolEntry(key, def); +                if ( configMustDeleted ) +                    delete konfig; +		return retValue;  	} else if(type=="num") { -		return konfig->readLongNumEntry(key, dflt.toLong()); +            long retValue = konfig->readLongNumEntry(key, dflt.toLong()); +            if ( configMustDeleted ) +                delete konfig; +            return retValue;  	} else { -		/* Assume it's a string... */ +            /* Assume it's a string... */                  fprintf(stdout, "%s\n", konfig->readEntry(key, dflt).local8Bit().data()); +                if ( configMustDeleted ) +                    delete konfig;  		return 0;  	}  }  | 
