void KrashConfig :: readConfig() { KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); m_signalnum = args->getOption( "signal" ).toInt(); m_pid = args->getOption( "pid" ).toInt(); m_startedByKdeinit = args->isSet("kdeinit"); m_safeMode = args->isSet("safer"); m_execname = args->getOption( "appname" ); if ( !args->getOption( "apppath" ).isEmpty() ) m_execname.prepend( args->getOption( "apppath" ) + '/' ); QCString programname = args->getOption("programname"); if (programname.isEmpty()) programname.setStr(I18N_NOOP("unknown")); // leak some memory... Well. It's only done once anyway :-) const char * progname = qstrdup(programname); m_aboutData = new KAboutData(args->getOption("appname"), progname, args->getOption("appversion"), 0, 0, 0, 0, 0, args->getOption("bugaddress")); QCString startup_id( args->getOption( "startupid" )); if (!startup_id.isEmpty()) { // stop startup notification KStartupInfoId id; id.initId( startup_id ); KStartupInfo::sendFinish( id ); } KConfig *config = KGlobal::config(); config->setGroup("drkonqi"); // maybe we should check if it's relative? QString configname = config->readEntry("ConfigName", QString::fromLatin1("enduser")); QString debuggername = config->readEntry("Debugger", QString::fromLatin1("gdb")); KConfig debuggers(QString::fromLatin1("debuggers/%1rc").arg(debuggername), true, false, "appdata"); debuggers.setGroup("General"); m_debugger = debuggers.readPathEntry("Exec"); m_debuggerBatch = debuggers.readPathEntry("ExecBatch"); m_tryExec = debuggers.readPathEntry("TryExec"); m_backtraceCommand = debuggers.readEntry("BacktraceCommand"); m_removeFromBacktraceRegExp = debuggers.readEntry("RemoveFromBacktraceRegExp"); m_invalidStackFrameRegExp = debuggers.readEntry("InvalidStackFrameRegExp"); m_frameRegExp = debuggers.readEntry("FrameRegExp"); m_neededInValidBacktraceRegExp = debuggers.readEntry("NeededInValidBacktraceRegExp"); m_kcrashRegExp = debuggers.readEntry("KCrashRegExp"); KConfig preset(QString::fromLatin1("presets/%1rc").arg(configname), true, false, "appdata"); preset.setGroup("ErrorDescription"); if (preset.readBoolEntry("Enable"), true) m_errorDescriptionText = preset.readEntry("Name"); preset.setGroup("WhatToDoHint"); if (preset.readBoolEntry("Enable")) m_whatToDoText = preset.readEntry("Name"); preset.setGroup("General"); m_showbugreport = preset.readBoolEntry("ShowBugReportButton", false); m_showdebugger = m_showbacktrace = m_pid != 0; if (m_showbacktrace) { m_showbacktrace = preset.readBoolEntry("ShowBacktraceButton", true); m_showdebugger = preset.readBoolEntry("ShowDebugButton", true); } m_disablechecks = preset.readBoolEntry("DisableChecks", false); bool b = preset.readBoolEntry("SignalDetails", true); QString str = QString::number(m_signalnum); // use group unknown if signal not found if (!preset.hasGroup(str)) str = QString::fromLatin1("unknown"); preset.setGroup(str); m_signalName = preset.readEntry("Name"); if (b) m_signalText = preset.readEntry("Comment"); }