diff options
| author | Karel Klic <kklic@redhat.com> | 2010-01-20 18:51:28 +0100 |
|---|---|---|
| committer | Karel Klic <kklic@redhat.com> | 2010-01-20 18:51:28 +0100 |
| commit | bbb210c836aaa6487e643176548b8b3feb11c347 (patch) | |
| tree | 4a12b2a9672c639ddf9042a8d6bb06b14821d983 /src/Daemon | |
| parent | d8ea20ec8a17f387ea75f4a19cadfbd33699d1d9 (diff) | |
| parent | 932c4d77abddb62ca4df1aca6d6c7d4e634a9e8d (diff) | |
| download | abrt-bbb210c836aaa6487e643176548b8b3feb11c347.tar.gz abrt-bbb210c836aaa6487e643176548b8b3feb11c347.tar.xz abrt-bbb210c836aaa6487e643176548b8b3feb11c347.zip | |
Merge branch 'master' of ssh://git.fedorahosted.org/git/abrt
Diffstat (limited to 'src/Daemon')
| -rw-r--r-- | src/Daemon/CommLayerServerDBus.cpp | 17 | ||||
| -rw-r--r-- | src/Daemon/CommLayerServerSocket.cpp | 16 | ||||
| -rw-r--r-- | src/Daemon/CommLayerServerSocket.h | 4 | ||||
| -rw-r--r-- | src/Daemon/CrashWatcher.cpp | 13 | ||||
| -rw-r--r-- | src/Daemon/CrashWatcher.h | 4 | ||||
| -rw-r--r-- | src/Daemon/Daemon.cpp | 14 | ||||
| -rw-r--r-- | src/Daemon/MiddleWare.cpp | 183 | ||||
| -rw-r--r-- | src/Daemon/MiddleWare.h | 18 | ||||
| -rw-r--r-- | src/Daemon/Settings.cpp | 2 |
9 files changed, 139 insertions, 132 deletions
diff --git a/src/Daemon/CommLayerServerDBus.cpp b/src/Daemon/CommLayerServerDBus.cpp index 182aa6c..ddfbba4 100644 --- a/src/Daemon/CommLayerServerDBus.cpp +++ b/src/Daemon/CommLayerServerDBus.cpp @@ -133,7 +133,7 @@ static long get_remote_uid(DBusMessage* call, const char** ppSender = NULL) static int handle_GetCrashInfos(DBusMessage* call, DBusMessage* reply) { long unix_uid = get_remote_uid(call); - vector_crash_infos_t argout1 = GetCrashInfos(to_string(unix_uid).c_str()); + vector_map_crash_data_t argout1 = GetCrashInfos(to_string(unix_uid).c_str()); DBusMessageIter out_iter; dbus_message_iter_init_append(reply, &out_iter); @@ -190,7 +190,7 @@ static int handle_CreateReport(DBusMessage* call, DBusMessage* reply) } long unix_uid = get_remote_uid(call); - map_crash_report_t report = CreateReport(pUUID, to_string(unix_uid).c_str(), /*force:*/ 0); + map_crash_data_t report = CreateReport(pUUID, to_string(unix_uid).c_str(), /*force:*/ 0); DBusMessageIter out_iter; dbus_message_iter_init_append(reply, &out_iter); @@ -206,7 +206,7 @@ static int handle_Report(DBusMessage* call, DBusMessage* reply) DBusMessageIter in_iter; dbus_message_iter_init(call, &in_iter); - map_crash_report_t argin1; + map_crash_data_t argin1; r = load_val(&in_iter, argin1); if (r == ABRT_DBUS_ERROR) { @@ -214,9 +214,9 @@ static int handle_Report(DBusMessage* call, DBusMessage* reply) return -1; } - map_crash_report_t::const_iterator it_comment = argin1.find(CD_COMMENT); - map_crash_report_t::const_iterator it_reproduce = argin1.find(CD_REPRODUCE); + map_crash_data_t::const_iterator it_comment = argin1.find(CD_COMMENT); const char* comment = (it_comment != argin1.end()) ? it_comment->second[CD_CONTENT].c_str() : ""; + map_crash_data_t::const_iterator it_reproduce = argin1.find(CD_REPRODUCE); const char* reproduce = (it_reproduce != argin1.end()) ? it_reproduce->second[CD_CONTENT].c_str() : ""; const char* errmsg = NULL; if (strlen(comment) > LIMIT_MESSAGE) @@ -249,15 +249,14 @@ static int handle_Report(DBusMessage* call, DBusMessage* reply) } } +#if 0 //const char * sender = dbus_message_get_sender(call); if (!user_conf_data.empty()) { - std::string PluginName; map_map_string_t::const_iterator it_user_conf_data = user_conf_data.begin(); for (; it_user_conf_data != user_conf_data.end(); it_user_conf_data++) { - PluginName = it_user_conf_data->first; -#if DEBUG + std::string PluginName = it_user_conf_data->first; std::cout << "plugin name: " << it_user_conf_data->first; map_string_t::const_iterator it_plugin_config; for (it_plugin_config = it_user_conf_data->second.begin(); @@ -266,11 +265,11 @@ static int handle_Report(DBusMessage* call, DBusMessage* reply) { std::cout << " key: " << it_plugin_config->first << " value: " << it_plugin_config->second << std::endl; } -#endif // this would overwrite the default settings //g_pPluginManager->SetPluginSettings(PluginName, sender, plugin_settings); } } +#endif long unix_uid = get_remote_uid(call); report_status_t argout1; diff --git a/src/Daemon/CommLayerServerSocket.cpp b/src/Daemon/CommLayerServerSocket.cpp index 0c5f2e3..b54f9a6 100644 --- a/src/Daemon/CommLayerServerSocket.cpp +++ b/src/Daemon/CommLayerServerSocket.cpp @@ -130,14 +130,14 @@ void CCommLayerServerSocket::ProcessMessage(const std::string& pMessage, GIOChan if (!strncmp(pMessage.c_str(), MESSAGE_GET_CRASH_INFOS, sizeof(MESSAGE_GET_CRASH_INFOS) - 1)) { - vector_crash_infos_t crashInfos = GetCrashInfos(UID); + vector_map_crash_data_t crashInfos = GetCrashInfos(UID); std::string message = MESSAGE_GET_CRASH_INFOS + crash_infos_to_string(crashInfos); Send(message, pSource); } else if (!strncmp(pMessage.c_str(), MESSAGE_REPORT, sizeof(MESSAGE_REPORT) - 1)) { std::string message = pMessage.substr(sizeof(MESSAGE_REPORT) - 1); - map_crash_report_t report = string_to_crash_report(message); + map_crash_data_t report = string_to_crash_report(message); map_plugin_settings_t plugin_settings; //FIXME: another hack to make this compile // Report(report, plugin_settings, UID); @@ -145,7 +145,7 @@ void CCommLayerServerSocket::ProcessMessage(const std::string& pMessage, GIOChan else if (!strncmp(pMessage.c_str(), MESSAGE_CREATE_REPORT, sizeof(MESSAGE_CREATE_REPORT) - 1)) { // std::string UUID = pMessage.substr(sizeof(MESSAGE_CREATE_REPORT) - 1); -// map_crash_report_t crashReport = CreateReport(UUID, UID); +// map_crash_data_t crashReport = CreateReport(UUID, UID); //use CreateReportThread instead of CreateReport? // std::string message = MESSAGE_CREATE_REPORT + crash_report_to_string(crashReport); // Send(message, pSource); @@ -211,22 +211,22 @@ CCommLayerServerSocket::~CCommLayerServerSocket() close(m_nSocket); } -vector_crash_infos_t CCommLayerServerSocket::GetCrashInfos(const std::string &pSender) +vector_map_crash_data_t CCommLayerServerSocket::GetCrashInfos(const std::string &pSender) { - vector_crash_infos_t crashInfos; + vector_map_crash_data_t crashInfos; crashInfos = ::GetCrashInfos(pSender); return crashInfos; } //reimplement as CreateReportThread(...)? -//map_crash_report_t CCommLayerServerSocket::CreateReport(const std::string &pUUID, const std::string &pSender) +//map_crash_data_t CCommLayerServerSocket::CreateReport(const std::string &pUUID, const std::string &pSender) //{ -// map_crash_report_t crashReport; +// map_crash_data_t crashReport; // crashReport = ::CreateReport(pUUID, pSender); // return crashReport; //} -report_status_t CCommLayerServerSocket::Report(const map_crash_report_t& pReport, const std::string& pSender) +report_status_t CCommLayerServerSocket::Report(const map_crash_data_t& pReport, const std::string& pSender) { report_status_t rs; //FIXME: a hack to make this compile, but we don't use sockets anyway diff --git a/src/Daemon/CommLayerServerSocket.h b/src/Daemon/CommLayerServerSocket.h index 753b67a..c511954 100644 --- a/src/Daemon/CommLayerServerSocket.h +++ b/src/Daemon/CommLayerServerSocket.h @@ -26,8 +26,8 @@ class CCommLayerServerSocket : public CCommLayerServer CCommLayerServerSocket(); virtual ~CCommLayerServerSocket(); - virtual vector_crash_infos_t GetCrashInfos(const char *pSender); - virtual report_status_t Report(const map_crash_report_t& pReport, const char *pSender); + virtual vector_map_crash_data_t GetCrashInfos(const char *pSender); + virtual report_status_t Report(const map_crash_data_t& pReport, const char *pSender); virtual void DeleteDebugDump(const char *pUUID, const char *pSender); virtual void Crash(const char *arg1); diff --git a/src/Daemon/CrashWatcher.cpp b/src/Daemon/CrashWatcher.cpp index 59f9e65..80d8cd4 100644 --- a/src/Daemon/CrashWatcher.cpp +++ b/src/Daemon/CrashWatcher.cpp @@ -45,9 +45,9 @@ CCrashWatcher::~CCrashWatcher() { } -vector_crash_infos_t GetCrashInfos(const char *pUID) +vector_map_crash_data_t GetCrashInfos(const char *pUID) { - vector_crash_infos_t retval; + vector_map_crash_data_t retval; log("Getting crash infos..."); try { @@ -58,7 +58,7 @@ vector_crash_infos_t GetCrashInfos(const char *pUID) for (ii = 0; ii < UUIDsUIDs.size(); ii++) { mw_result_t res; - map_crash_info_t info; + map_crash_data_t info; const char *uuid = UUIDsUIDs[ii].first.c_str(); const char *uid = UUIDsUIDs[ii].second.c_str(); @@ -96,15 +96,14 @@ vector_crash_infos_t GetCrashInfos(const char *pUID) * StartJob dbus call already did all the processing, and we just retrieve * the result from dump directory, which is fast. */ -map_crash_report_t CreateReport(const char* pUUID, const char* pUID, int force) +map_crash_data_t CreateReport(const char* pUUID, const char* pUID, int force) { - map_crash_info_t crashReport; - /* 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()); * which is unsafe wrt concurrent updates to g_pPluginManager state. */ + map_crash_data_t crashReport; mw_result_t res = CreateCrashReport(pUUID, pUID, force, crashReport); switch (res) { @@ -141,7 +140,7 @@ static void* create_report(void* arg) try { log("Creating report..."); - map_crash_info_t crashReport = CreateReport(thread_data->UUID, thread_data->UID, thread_data->force); + map_crash_data_t crashReport = CreateReport(thread_data->UUID, thread_data->UID, thread_data->force); g_pCommLayer->JobDone(thread_data->peer, thread_data->UUID); } catch (CABRTException& e) diff --git a/src/Daemon/CrashWatcher.h b/src/Daemon/CrashWatcher.h index 8d56c4e..1e672b9 100644 --- a/src/Daemon/CrashWatcher.h +++ b/src/Daemon/CrashWatcher.h @@ -48,9 +48,9 @@ class CCrashWatcher virtual void Warning(const char *pMessage, const char* peer, uint64_t pJobID); }; -vector_crash_infos_t GetCrashInfos(const char *pUID); +vector_map_crash_data_t GetCrashInfos(const char *pUID); int CreateReportThread(const char* pUUID, const char* pUID, int force, const char* pSender); -map_crash_report_t CreateReport(const char* pUUID, const char* pUID, int force); +map_crash_data_t CreateReport(const char* pUUID, const char* pUID, int force); int DeleteDebugDump(const char *pUUID, const char *pUID); void DeleteDebugDump_by_dir(const char *dump_dir); diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp index dc547af..c7acffc 100644 --- a/src/Daemon/Daemon.cpp +++ b/src/Daemon/Daemon.cpp @@ -51,15 +51,15 @@ * - signal: we got SIGTERM or SIGINT * * DBus methods we have: - * - GetCrashInfos(): returns a vector_crash_infos_t (vector_map_vector_string_t) + * - GetCrashInfos(): returns a vector_map_crash_data_t (vector_map_vector_string_t) * of crashes for given uid * v[N]["executable"/"uid"/"kernel"/"backtrace"][N] = "contents" * - StartJob(UUID,force): starts creating a report for /var/cache/abrt/DIR with this UUID. * Returns job id (uint64). * After thread returns, when report creation thread has finished, * JobDone(client_dbus_ID,UUID) dbus signal is emitted. - * - CreateReport(UUID): returns map_crash_report_t (map_vector_string_t) - * - Report(map_crash_report_t (map_vector_string_t[, map_map_string_t])): + * - CreateReport(UUID): returns map_crash_data_t (map_vector_string_t) + * - Report(map_crash_data_t (map_vector_string_t[, map_map_string_t])): * "Please report this crash": calls Report() of all registered reporter plugins. * Returns report_status_t (map_vector_string_t) - the status of each call. * 2nd parameter is the contents of user's abrt.conf. @@ -320,9 +320,9 @@ static void FindNewDumps(const char* pPath) vector_string_t::iterator itt = dirs.begin(); for (; itt != dirs.end(); ++itt) { - map_crash_info_t crashinfo; try { + map_crash_data_t crashinfo; mw_result_t res = SaveDebugDump(itt->c_str(), crashinfo); switch (res) { @@ -476,11 +476,11 @@ static gboolean handle_inotify_cb(GIOChannel *gio, GIOCondition condition, gpoin worst_dir = ""; } - map_crash_info_t crashinfo; try { std::string fullname = concat_path_file(DEBUG_DUMPS_DIR, name); - + map_crash_data_t crashinfo; +//todo: rename SaveDebugDump to ???? it does not save crashinfo, it FETCHES crashinfo mw_result_t res = SaveDebugDump(fullname.c_str(), crashinfo); switch (res) { @@ -501,7 +501,7 @@ static gboolean handle_inotify_cb(GIOChannel *gio, GIOCondition condition, gpoin if (analyzer_has_AutoReportUIDs(analyzer, uid_str)) { VERB1 log("Reporting the crash automatically"); - map_crash_report_t crash_report; + map_crash_data_t crash_report; mw_result_t crash_result = CreateCrashReport( crashinfo[CD_UUID][CD_CONTENT].c_str(), uid_str, /*force:*/ 0, crash_report diff --git a/src/Daemon/MiddleWare.cpp b/src/Daemon/MiddleWare.cpp index c2a122a..a2b20e6 100644 --- a/src/Daemon/MiddleWare.cpp +++ b/src/Daemon/MiddleWare.cpp @@ -85,8 +85,8 @@ static char* is_text_file(const char *name, ssize_t *sz) } /* Some files in our dump directories are known to always be textual */ - if (strcmp(name, "backtrace") == 0 - || strcmp(name, "cmdline") == 0 + if (strcmp(name, FILENAME_BACKTRACE) == 0 + || strcmp(name, FILENAME_CMDLINE) == 0 ) { return buf; } @@ -120,29 +120,11 @@ static char* is_text_file(const char *name, ssize_t *sz) return NULL; /* it's binary */ } -/** - * Transforms a debugdump direcortry to inner crash - * report form. This form is used for later reporting. - * @param pDebugDumpDir A debugdump dir containing all necessary data. - * @param pCrashReport A created crash report. - */ -static void DebugDumpToCrashReport(const char *pDebugDumpDir, map_crash_report_t& pCrashReport) +static void load_crash_data_from_debug_dump(CDebugDump& dd, map_crash_data_t& data) { - CDebugDump dd; - dd.Open(pDebugDumpDir); - if (!dd.Exist(FILENAME_ARCHITECTURE) - || !dd.Exist(FILENAME_KERNEL) - || !dd.Exist(FILENAME_PACKAGE) - || !dd.Exist(FILENAME_COMPONENT) - || !dd.Exist(FILENAME_RELEASE) - || !dd.Exist(FILENAME_EXECUTABLE) - ) { - throw CABRTException(EXCEP_ERROR, "DebugDumpToCrashReport(): One or more of important file(s) are missing"); - } - std::string short_name; std::string full_name; - pCrashReport.clear(); + dd.InitGetNextFile(); while (dd.GetNextFile(&short_name, &full_name)) { @@ -150,11 +132,11 @@ static void DebugDumpToCrashReport(const char *pDebugDumpDir, map_crash_report_t char *text = is_text_file(full_name.c_str(), &sz); if (!text) { - add_crash_data_to_crash_report(pCrashReport, - short_name, - CD_BIN, - CD_ISNOTEDITABLE, - full_name + add_to_crash_data_ext(data, + short_name.c_str(), + CD_BIN, + CD_ISNOTEDITABLE, + full_name.c_str() ); continue; } @@ -173,7 +155,12 @@ static void DebugDumpToCrashReport(const char *pDebugDumpDir, map_crash_report_t || short_name == FILENAME_RELEASE || short_name == FILENAME_EXECUTABLE ) { - add_crash_data_to_crash_report(pCrashReport, short_name, CD_TXT, CD_ISNOTEDITABLE, content); + add_to_crash_data_ext(data, + short_name.c_str(), + CD_TXT, + CD_ISNOTEDITABLE, + content.c_str() + ); continue; } @@ -184,18 +171,41 @@ static void DebugDumpToCrashReport(const char *pDebugDumpDir, map_crash_report_t && short_name != FILENAME_REPRODUCE && short_name != FILENAME_COMMENT ) { - add_crash_data_to_crash_report( - pCrashReport, - short_name, + add_to_crash_data_ext( + data, + short_name.c_str(), CD_TXT, CD_ISEDITABLE, - content + content.c_str() ); } } } /** + * Transforms a debugdump directory to inner crash + * report form. This form is used for later reporting. + * @param pDebugDumpDir A debugdump dir containing all necessary data. + * @param pCrashData A created crash report. + */ +static void DebugDumpToCrashReport(const char *pDebugDumpDir, map_crash_data_t& pCrashData) +{ + CDebugDump dd; + dd.Open(pDebugDumpDir); + if (!dd.Exist(FILENAME_ARCHITECTURE) + || !dd.Exist(FILENAME_KERNEL) + || !dd.Exist(FILENAME_PACKAGE) + || !dd.Exist(FILENAME_COMPONENT) + || !dd.Exist(FILENAME_RELEASE) + || !dd.Exist(FILENAME_EXECUTABLE) + ) { + throw CABRTException(EXCEP_ERROR, "DebugDumpToCrashReport(): One or more of important file(s) are missing"); + } + + load_crash_data_from_debug_dump(dd, pCrashData); +} + +/** * Get a local UUID from particular analyzer plugin. * @param pAnalyzer A name of an analyzer plugin. * @param pDebugDumpDir A debugdump dir containing all necessary data. @@ -250,7 +260,7 @@ static void CreateReport(const char *pAnalyzer, mw_result_t CreateCrashReport(const char *pUUID, const char *pUID, int force, - map_crash_report_t& pCrashReport) + map_crash_data_t& pCrashData) { VERB2 log("CreateCrashReport('%s','%s',result)", pUUID, pUID); @@ -272,7 +282,6 @@ mw_result_t CreateCrashReport(const char *pUUID, { CDebugDump dd; std::string analyzer; - std::string gUUID; std::string comment; std::string reproduce = "1.\n2.\n3.\n"; @@ -292,20 +301,20 @@ mw_result_t CreateCrashReport(const char *pUUID, VERB3 log(" CreateReport('%s')", analyzer.c_str()); CreateReport(analyzer.c_str(), row.m_sDebugDumpDir.c_str(), force); - gUUID = GetGlobalUUID(analyzer.c_str(), row.m_sDebugDumpDir.c_str()); + std::string gUUID = GetGlobalUUID(analyzer.c_str(), row.m_sDebugDumpDir.c_str()); VERB3 log(" GetGlobalUUID:'%s'", gUUID.c_str()); - VERB3 log(" RunAnalyzerActions"); + VERB3 log(" RunAnalyzerActions('%s','%s')", analyzer.c_str(), row.m_sDebugDumpDir.c_str()); RunAnalyzerActions(analyzer.c_str(), row.m_sDebugDumpDir.c_str()); VERB3 log(" DebugDumpToCrashReport"); - DebugDumpToCrashReport(row.m_sDebugDumpDir.c_str(), pCrashReport); + DebugDumpToCrashReport(row.m_sDebugDumpDir.c_str(), pCrashData); - add_crash_data_to_crash_report(pCrashReport, CD_UUID, CD_TXT, CD_ISNOTEDITABLE, gUUID); - add_crash_data_to_crash_report(pCrashReport, CD_MWANALYZER, CD_SYS, CD_ISNOTEDITABLE, analyzer); - add_crash_data_to_crash_report(pCrashReport, CD_MWUID, CD_SYS, CD_ISNOTEDITABLE, pUID); - add_crash_data_to_crash_report(pCrashReport, CD_MWUUID, CD_SYS, CD_ISNOTEDITABLE, pUUID); - add_crash_data_to_crash_report(pCrashReport, CD_COMMENT, CD_TXT, CD_ISEDITABLE, comment); - add_crash_data_to_crash_report(pCrashReport, CD_REPRODUCE, CD_TXT, CD_ISEDITABLE, reproduce); + add_to_crash_data_ext(pCrashData, CD_UUID , CD_TXT, CD_ISNOTEDITABLE, gUUID.c_str() ); + add_to_crash_data_ext(pCrashData, CD_MWANALYZER, CD_SYS, CD_ISNOTEDITABLE, analyzer.c_str() ); + add_to_crash_data_ext(pCrashData, CD_MWUID , CD_SYS, CD_ISNOTEDITABLE, pUID ); + add_to_crash_data_ext(pCrashData, CD_MWUUID , CD_SYS, CD_ISNOTEDITABLE, pUUID ); + add_to_crash_data_ext(pCrashData, CD_COMMENT , CD_TXT, CD_ISEDITABLE , comment.c_str() ); + add_to_crash_data_ext(pCrashData, CD_REPRODUCE , CD_TXT, CD_ISEDITABLE , reproduce.c_str()); } catch (CABRTException& e) { @@ -362,7 +371,7 @@ void RunActionsAndReporters(const char *pDebugDumpDir) if (tp == REPORTER) { CReporter* reporter = g_pPluginManager->GetReporter(plugin_name); /* can't be NULL */ - map_crash_report_t crashReport; + map_crash_data_t crashReport; DebugDumpToCrashReport(pDebugDumpDir, crashReport); VERB2 log("%s.Report(...)", plugin_name); reporter->Report(crashReport, plugin_settings, it_ar->second.c_str()); @@ -382,20 +391,20 @@ void RunActionsAndReporters(const char *pDebugDumpDir) } -static bool CheckReport(const map_crash_report_t& pCrashReport) +static bool CheckReport(const map_crash_data_t& pCrashData) { - map_crash_report_t::const_iterator it_analyzer = pCrashReport.find(CD_MWANALYZER); - map_crash_report_t::const_iterator it_mwuid = pCrashReport.find(CD_MWUID); - map_crash_report_t::const_iterator it_mwuuid = pCrashReport.find(CD_MWUUID); + map_crash_data_t::const_iterator it_analyzer = pCrashData.find(CD_MWANALYZER); + map_crash_data_t::const_iterator it_mwuid = pCrashData.find(CD_MWUID); + map_crash_data_t::const_iterator it_mwuuid = pCrashData.find(CD_MWUUID); - map_crash_report_t::const_iterator it_package = pCrashReport.find(FILENAME_PACKAGE); - map_crash_report_t::const_iterator it_architecture = pCrashReport.find(FILENAME_ARCHITECTURE); - map_crash_report_t::const_iterator it_kernel = pCrashReport.find(FILENAME_KERNEL); - map_crash_report_t::const_iterator it_component = pCrashReport.find(FILENAME_COMPONENT); - map_crash_report_t::const_iterator it_release = pCrashReport.find(FILENAME_RELEASE); - map_crash_report_t::const_iterator it_executable = pCrashReport.find(FILENAME_EXECUTABLE); + map_crash_data_t::const_iterator it_package = pCrashData.find(FILENAME_PACKAGE); + map_crash_data_t::const_iterator it_architecture = pCrashData.find(FILENAME_ARCHITECTURE); + map_crash_data_t::const_iterator it_kernel = pCrashData.find(FILENAME_KERNEL); + map_crash_data_t::const_iterator it_component = pCrashData.find(FILENAME_COMPONENT); + map_crash_data_t::const_iterator it_release = pCrashData.find(FILENAME_RELEASE); + map_crash_data_t::const_iterator it_executable = pCrashData.find(FILENAME_EXECUTABLE); - map_crash_report_t::const_iterator end = pCrashReport.end(); + map_crash_data_t::const_iterator end = pCrashData.end(); if (it_package == end) { @@ -427,38 +436,38 @@ static bool CheckReport(const map_crash_report_t& pCrashReport) return true; } -report_status_t Report(const map_crash_report_t& pCrashReport, +report_status_t Report(const map_crash_data_t& pCrashData, map_map_string_t& pSettings, const char *pUID) { report_status_t ret; - /* dbus handler passes pCrashReport from user without checking it */ + /* dbus handler passes pCrashData from user without checking it */ - if (!CheckReport(pCrashReport)) + if (!CheckReport(pCrashData)) { throw CABRTException(EXCEP_ERROR, "Report(): Some of mandatory report data are missing."); } - std::string analyzer = pCrashReport.find(CD_MWANALYZER)->second[CD_CONTENT]; - std::string UID = pCrashReport.find(CD_MWUID)->second[CD_CONTENT]; - std::string UUID = pCrashReport.find(CD_MWUUID)->second[CD_CONTENT]; - std::string packageNVR = pCrashReport.find(FILENAME_PACKAGE)->second[CD_CONTENT]; + const std::string& analyzer = get_crash_data_item_content(pCrashData, CD_MWANALYZER); + const std::string& UID = get_crash_data_item_content(pCrashData, CD_MWUID); + const std::string& UUID = get_crash_data_item_content(pCrashData, CD_MWUUID); + const std::string& packageNVR = get_crash_data_item_content(pCrashData, FILENAME_PACKAGE); std::string packageName = packageNVR.substr(0, packageNVR.rfind("-", packageNVR.rfind("-") - 1)); // Save comment and "how to reproduce" - map_crash_report_t::const_iterator it_comment = pCrashReport.find(CD_COMMENT); - map_crash_report_t::const_iterator it_reproduce = pCrashReport.find(CD_REPRODUCE); - if (it_comment != pCrashReport.end() || it_reproduce != pCrashReport.end()) + map_crash_data_t::const_iterator it_comment = pCrashData.find(CD_COMMENT); + map_crash_data_t::const_iterator it_reproduce = pCrashData.find(CD_REPRODUCE); + if (it_comment != pCrashData.end() || it_reproduce != pCrashData.end()) { std::string pDumpDir = getDebugDumpDir(UUID.c_str(), UID.c_str()); CDebugDump dd; dd.Open(pDumpDir.c_str()); - if (it_comment != pCrashReport.end()) + if (it_comment != pCrashData.end()) { dd.SaveText(FILENAME_COMMENT, it_comment->second[CD_CONTENT].c_str()); } - if (it_reproduce != pCrashReport.end()) + if (it_reproduce != pCrashData.end()) { dd.SaveText(FILENAME_REPRODUCE, it_reproduce->second[CD_CONTENT].c_str()); } @@ -509,7 +518,7 @@ report_status_t Report(const map_crash_report_t& pCrashReport, } #endif map_plugin_settings_t plugin_settings = pSettings[plugin_name]; - std::string res = reporter->Report(pCrashReport, plugin_settings, it_r->second.c_str()); + std::string res = reporter->Report(pCrashData, plugin_settings, it_r->second.c_str()); #if 0 /* Using ~user/.abrt/ is bad wrt security */ if (home != "") @@ -767,7 +776,7 @@ bool analyzer_has_AutoReportUIDs(const char *analyzer_name, const char* uid) return false; } -void autoreport(const pair_string_string_t& reporter_options, const map_crash_report_t& crash_report) +void autoreport(const pair_string_string_t& reporter_options, const map_crash_data_t& crash_report) { CReporter* reporter = g_pPluginManager->GetReporter(reporter_options.first.c_str()); if (!reporter) @@ -821,14 +830,14 @@ static void RunAnalyzerActions(const char *pAnalyzer, const char *pDebugDumpDir) * @param pUID An UID of an user. * @param pTime Time when a crash occurs. * @param pDebugDumpPath A debugdump path. - * @param pCrashInfo A filled crash info. + * @param pCrashData A filled crash info. * @return It return results of operation. See mw_result_t. */ static mw_result_t SaveDebugDumpToDatabase(const char *pUUID, const char *pUID, const char *pTime, const char *pDebugDumpDir, - map_crash_info_t& pCrashInfo) + map_crash_data_t& pCrashData) { CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); database->Connect(); @@ -837,7 +846,7 @@ static mw_result_t SaveDebugDumpToDatabase(const char *pUUID, database_row_t row = database->GetRow(pUUID, pUID); database->DisConnect(); - mw_result_t res = FillCrashInfo(pUUID, pUID, pCrashInfo); + mw_result_t res = FillCrashInfo(pUUID, pUID, pCrashData); if (res == MW_OK) { if (row.m_sReported == "1") @@ -865,7 +874,7 @@ std::string getDebugDumpDir(const char *pUUID, } mw_result_t SaveDebugDump(const char *pDebugDumpDir, - map_crash_info_t& pCrashInfo) + map_crash_data_t& pCrashData) { std::string UID; std::string time; @@ -907,12 +916,12 @@ mw_result_t SaveDebugDump(const char *pDebugDumpDir, const char *uid_str = analyzer_has_InformAllUsers(analyzer.c_str()) ? "-1" : UID.c_str(); - return SaveDebugDumpToDatabase(lUUID.c_str(), uid_str, time.c_str(), pDebugDumpDir, pCrashInfo); + return SaveDebugDumpToDatabase(lUUID.c_str(), uid_str, time.c_str(), pDebugDumpDir, pCrashData); } mw_result_t FillCrashInfo(const char *pUUID, const char *pUID, - map_crash_info_t& pCrashInfo) + map_crash_data_t& pCrashData) { CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); database->Connect(); @@ -938,18 +947,18 @@ mw_result_t FillCrashInfo(const char *pUUID, return MW_ERROR; } - pCrashInfo.clear(); - add_crash_data_to_crash_info(pCrashInfo, CD_EXECUTABLE, executable); - add_crash_data_to_crash_info(pCrashInfo, CD_PACKAGE, package); - add_crash_data_to_crash_info(pCrashInfo, CD_DESCRIPTION, description); - add_crash_data_to_crash_info(pCrashInfo, CD_UUID, row.m_sUUID); - add_crash_data_to_crash_info(pCrashInfo, CD_UID, row.m_sUID); - add_crash_data_to_crash_info(pCrashInfo, CD_COUNT, row.m_sCount); - add_crash_data_to_crash_info(pCrashInfo, CD_TIME, row.m_sTime); - add_crash_data_to_crash_info(pCrashInfo, CD_REPORTED, row.m_sReported); - add_crash_data_to_crash_info(pCrashInfo, CD_MESSAGE, row.m_sMessage); - add_crash_data_to_crash_info(pCrashInfo, CD_MWDDD, row.m_sDebugDumpDir); - add_crash_data_to_crash_info(pCrashInfo, CD_MWANALYZER, analyzer); + pCrashData.clear(); + add_to_crash_data(pCrashData, CD_EXECUTABLE , executable.c_str() ); + add_to_crash_data(pCrashData, CD_PACKAGE , package.c_str() ); + add_to_crash_data(pCrashData, CD_DESCRIPTION, description.c_str() ); + add_to_crash_data(pCrashData, CD_UUID , row.m_sUUID.c_str() ); + add_to_crash_data(pCrashData, CD_UID , row.m_sUID.c_str() ); + add_to_crash_data(pCrashData, CD_COUNT , row.m_sCount.c_str() ); + add_to_crash_data(pCrashData, CD_TIME , row.m_sTime.c_str() ); + add_to_crash_data(pCrashData, CD_REPORTED , row.m_sReported.c_str() ); + add_to_crash_data(pCrashData, CD_MESSAGE , row.m_sMessage.c_str() ); + add_to_crash_data(pCrashData, CD_MWDDD , row.m_sDebugDumpDir.c_str()); + add_to_crash_data(pCrashData, CD_MWANALYZER , analyzer.c_str() ); return MW_OK; } diff --git a/src/Daemon/MiddleWare.h b/src/Daemon/MiddleWare.h index b2b58dc..5fab84d 100644 --- a/src/Daemon/MiddleWare.h +++ b/src/Daemon/MiddleWare.h @@ -60,13 +60,13 @@ void LoadOpenGPGPublicKey(const char* key); * is successful, then a crash report is filled. * @param pAnalyzer A name of an analyzer plugin. * @param pDebugDumpPath A debugdump dir containing all necessary data. - * @param pCrashReport A filled crash report. + * @param pCrashData A filled crash report. * @return It return results of operation. See mw_result_t. */ mw_result_t CreateCrashReport(const char *pUUID, const char *pUID, int force, - map_crash_report_t& pCrashReport); + map_crash_data_t& pCrashData); /** * Activates particular action plugin. * @param pActionDir A directory, which is passed as working to a action plugin. @@ -88,11 +88,11 @@ void RunActionsAndReporters(const char *pDebugDumpDir); * fails, then default config is used. If pUID is emply string, default * config is used. * ...). - * @param pCrashReport A crash report. + * @param pCrashData A crash report. * @param pUID An user uid * @return A report status, which reporters ends successfuly with messages. */ -report_status_t Report(const map_crash_report_t& pCrashReport, +report_status_t Report(const map_crash_data_t& pCrashData, map_map_string_t& pSettings, const char *pUID); /** @@ -108,22 +108,22 @@ std::string getDebugDumpDir( const char *pUUID, * Saves debugdump into database. If saving is successful, * it fills crash info. * @param pDebugDumpDir A debugdump directory. - * @param pCrashInfo A crash info. + * @param pCrashData A crash info. * @return It return results of operation. See mw_result_t. */ mw_result_t SaveDebugDump(const char *pDebugDumpDir, - map_crash_info_t& pCrashInfo); + map_crash_data_t& pCrashData); /** * Get one crash info. If getting is successful, * then crash info is filled. * @param pUUID A local UUID of a crash. * @param pUID An UID of an user. - * @param pCrashInfo A crash info. + * @param pCrashData A crash info. * @return It return results of operation. See mw_result_t. */ mw_result_t FillCrashInfo(const char *pUUID, const char *pUID, - map_crash_info_t& pCrashInfo); + map_crash_data_t& pCrashData); /** * Gets all local UUIDs and UIDs of crashes. These crashes * occurred when a particular user was logged in. @@ -154,5 +154,5 @@ bool analyzer_has_InformAllUsers(const char *analyzer_name); bool analyzer_has_AutoReportUIDs(const char *analyzer_name, const char* uid); -void autoreport(const pair_string_string_t& reporter_options, const map_crash_report_t& crash_report); +void autoreport(const pair_string_string_t& reporter_options, const map_crash_data_t& crash_report); #endif /*MIDDLEWARE_H_*/ diff --git a/src/Daemon/Settings.cpp b/src/Daemon/Settings.cpp index 48658e2..73736f1 100644 --- a/src/Daemon/Settings.cpp +++ b/src/Daemon/Settings.cpp @@ -146,8 +146,8 @@ static vector_pair_string_string_t ParseListWithArgs(const char *pValue) static void ParseCommon() { - map_string_t::const_iterator it = s_mapSectionCommon.find("OpenGPGCheck"); map_string_t::const_iterator end = s_mapSectionCommon.end(); + map_string_t::const_iterator it = s_mapSectionCommon.find("OpenGPGCheck"); if (it != end) { g_settings_bOpenGPGCheck = string_to_bool(it->second.c_str()); |
