diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/daemon/CrashWatcher.cpp | 6 | ||||
-rw-r--r-- | src/daemon/MiddleWare.cpp | 15 | ||||
-rw-r--r-- | src/daemon/Settings.cpp | 12 | ||||
-rw-r--r-- | src/daemon/Settings.h | 2 |
4 files changed, 20 insertions, 15 deletions
diff --git a/src/daemon/CrashWatcher.cpp b/src/daemon/CrashWatcher.cpp index 416d5f41..95899265 100644 --- a/src/daemon/CrashWatcher.cpp +++ b/src/daemon/CrashWatcher.cpp @@ -94,7 +94,7 @@ void CreateReport(const char* crash_id, long caller_uid, int force, map_crash_da { /* FIXME: starting from here, any shared data must be protected with a mutex. * For example, CreateCrashReport does: - * g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); + * g_pPluginManager->GetDatabase(g_settings_sDatabase); * which is unsafe wrt concurrent updates to g_pPluginManager state. */ mw_result_t res = CreateCrashReport(crash_id, caller_uid, force, crashReport); @@ -186,7 +186,7 @@ int DeleteDebugDump(const char *crash_id, long caller_uid) { try { - CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); + CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase); database->Connect(); struct db_row *row = database->GetRow(crash_id); if (!row) @@ -227,7 +227,7 @@ void DeleteDebugDump_by_dir(const char *dump_dir) { try { - CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); + CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase); database->Connect(); database->DeleteRows_by_dir(dump_dir); database->DisConnect(); diff --git a/src/daemon/MiddleWare.cpp b/src/daemon/MiddleWare.cpp index 4ff83570..ae25180f 100644 --- a/src/daemon/MiddleWare.cpp +++ b/src/daemon/MiddleWare.cpp @@ -274,7 +274,7 @@ mw_result_t CreateCrashReport(const char *crash_id, { VERB2 log("CreateCrashReport('%s',%ld,result)", crash_id, caller_uid); - CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); + CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase); database->Connect(); struct db_row *row = database->GetRow(crash_id); @@ -573,7 +573,7 @@ report_status_t Report(const map_crash_data_t& client_report, if (at_least_one_reporter_succeeded) { - CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); + CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase); database->Connect(); report_status_t::iterator ret_it = ret.begin(); while (ret_it != ret.end()) @@ -609,10 +609,7 @@ report_status_t Report(const map_crash_data_t& client_report, */ static bool is_debug_dump_saved(long uid, const char *debug_dump_dir) { - if (g_settings_sDatabase.empty()) - error_msg_and_die(_("Database plugin not specified. Please check abrtd settings.")); - - CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); + CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase); database->Connect(); GList *table = database->GetUIDData(uid); database->DisConnect(); @@ -792,7 +789,7 @@ static mw_result_t SaveDebugDumpToDatabase(const char *crash_id, const char *pDebugDumpDir, map_crash_data_t& pCrashData) { - CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); + CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase); database->Connect(); /* note: if [UUID,UID] record exists, pDebugDumpDir is not updated in the record */ database->Insert_or_Update(crash_id, inform_all_users, pDebugDumpDir, pTime); @@ -888,7 +885,7 @@ error: mw_result_t FillCrashInfo(const char *crash_id, map_crash_data_t& pCrashData) { - CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); + CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase); database->Connect(); struct db_row *row = database->GetRow(crash_id); database->DisConnect(); @@ -922,7 +919,7 @@ mw_result_t FillCrashInfo(const char *crash_id, void GetUUIDsOfCrash(long caller_uid, vector_string_t &result) { - CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); + CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase); database->Connect(); GList *rows = database->GetUIDData(caller_uid); database->DisConnect(); diff --git a/src/daemon/Settings.cpp b/src/daemon/Settings.cpp index 81b66613..e0d13ef8 100644 --- a/src/daemon/Settings.cpp +++ b/src/daemon/Settings.cpp @@ -53,9 +53,9 @@ bool g_settings_bOpenGPGCheck = false; /* one line: "OpenGPGPublicKeys = value1,value2" */ GList *g_settings_setOpenGPGPublicKeys = NULL; GList *g_settings_setBlackListedPkgs = NULL; -std::string g_settings_sDatabase; GList *g_settings_setBlackListedPaths = NULL; std::string g_settings_sWatchCrashdumpArchiveDir; +char *g_settings_sDatabase = NULL; unsigned int g_settings_nMaxCrashReportsSize = 1000; bool g_settings_bProcessUnpackaged = false; @@ -212,8 +212,14 @@ static int ParseCommon() it = s_mapSectionCommon.find("Database"); if (it != end) { - g_settings_sDatabase = it->second; + if (it->second.empty()) + error_msg_and_die(_("Database plugin not specified. Please check abrtd settings.")); + + g_settings_sDatabase = xstrdup(it->second.c_str()); } + else + error_msg_and_die(_("Database plugin not specified. Please check abrtd settings.")); + it = s_mapSectionCommon.find("WatchCrashdumpArchiveDir"); if (it != end) { @@ -575,4 +581,6 @@ void settings_free() free((char*)li->data); g_list_free(g_settings_setBlackListedPaths); + + free(g_settings_sDatabase); } diff --git a/src/daemon/Settings.h b/src/daemon/Settings.h index 621c11af..e7151d78 100644 --- a/src/daemon/Settings.h +++ b/src/daemon/Settings.h @@ -32,8 +32,8 @@ extern GList *g_settings_setBlackListedPaths; extern unsigned int g_settings_nMaxCrashReportsSize; extern bool g_settings_bOpenGPGCheck; extern bool g_settings_bProcessUnpackaged; -extern std::string g_settings_sDatabase; extern std::string g_settings_sWatchCrashdumpArchiveDir; +extern char *g_settings_sDatabase; extern map_cron_t g_settings_mapCron; extern vector_pair_string_string_t g_settings_vectorActionsAndReporters; extern map_analyzer_actions_and_reporters_t g_settings_mapAnalyzerActionsAndReporters; |