diff options
Diffstat (limited to 'lib/Plugins')
-rw-r--r-- | lib/Plugins/CCpp.cpp | 42 | ||||
-rw-r--r-- | lib/Plugins/CCpp.h | 19 | ||||
-rw-r--r-- | lib/Plugins/Kerneloops.cpp | 6 | ||||
-rw-r--r-- | lib/Plugins/Kerneloops.h | 14 | ||||
-rw-r--r-- | lib/Plugins/KerneloopsDmesg.cpp | 4 | ||||
-rw-r--r-- | lib/Plugins/KerneloopsReporter.cpp | 10 | ||||
-rw-r--r-- | lib/Plugins/KerneloopsReporter.h | 18 | ||||
-rw-r--r-- | lib/Plugins/Logger.cpp | 14 | ||||
-rw-r--r-- | lib/Plugins/Logger.h | 8 | ||||
-rw-r--r-- | lib/Plugins/Mailx.cpp | 22 | ||||
-rw-r--r-- | lib/Plugins/Mailx.h | 8 | ||||
-rw-r--r-- | lib/Plugins/Makefile.am | 14 | ||||
-rw-r--r-- | lib/Plugins/SQLite3.cpp | 10 | ||||
-rw-r--r-- | lib/Plugins/SQLite3.h | 7 |
14 files changed, 104 insertions, 92 deletions
diff --git a/lib/Plugins/CCpp.cpp b/lib/Plugins/CCpp.cpp index a6ca00c0..024ed1b9 100644 --- a/lib/Plugins/CCpp.cpp +++ b/lib/Plugins/CCpp.cpp @@ -1,5 +1,5 @@ /* - DebugDump.cpp + CCpp.cpp Copyright (C) 2009 Zdenek Prikryl (zprikryl@redhat.com) Copyright (C) 2009 RedHat inc. @@ -23,6 +23,7 @@ #include <fstream> #include <ctype.h> #include "DebugDump.h" +#include "Settings.h" #include <sstream> #include <iostream> #include <hash_map> @@ -33,11 +34,11 @@ #define DEBUGINFO_COMMAND "debuginfo-install -y " #define GDB_COMMAND "gdb -batch -x " -CLanguageCCpp::CLanguageCCpp() : +CAnalyzerCCpp::CAnalyzerCCpp() : m_bMemoryMap(false) {} -void CLanguageCCpp::InstallDebugInfos(const std::string& pPackage) +void CAnalyzerCCpp::InstallDebugInfos(const std::string& pPackage) { char line[1024]; std::string command = DEBUGINFO_COMMAND + pPackage; @@ -50,7 +51,7 @@ void CLanguageCCpp::InstallDebugInfos(const std::string& pPackage) if (fp == NULL) { - throw std::string("CLanguageCCpp::InstallDebugInfos(): cannot execute " + command) ; + throw std::string("CAnalyzerCCpp::InstallDebugInfos(): cannot execute " + command) ; } while (fgets(line, sizeof(line), fp)) { @@ -65,16 +66,16 @@ void CLanguageCCpp::InstallDebugInfos(const std::string& pPackage) if (text.find(canNotInstall) != std::string::npos) { pclose(fp); - throw std::string("CLanguageCCpp::InstallDebugInfos(): cannot install debuginfos for " + pPackage + " (" + canNotInstall + ")") ; + throw std::string("CAnalyzerCCpp::InstallDebugInfos(): cannot install debuginfos for " + pPackage + " (" + canNotInstall + ")") ; } } if (pclose(fp) != 0) { - throw std::string("CLanguageCCpp::InstallDebugInfos(): cannot install debuginfos for " + pPackage) ; + throw std::string("CAnalyzerCCpp::InstallDebugInfos(): cannot install debuginfos for " + pPackage) ; } } -void CLanguageCCpp::GetBacktrace(const std::string& pDebugDumpDir, std::string& pBacktrace) +void CAnalyzerCCpp::GetBacktrace(const std::string& pDebugDumpDir, std::string& pBacktrace) { std::string tmpFile = "/tmp/" + pDebugDumpDir.substr(pDebugDumpDir.rfind("/")); std::ofstream fTmp; @@ -94,13 +95,13 @@ void CLanguageCCpp::GetBacktrace(const std::string& pDebugDumpDir, std::string& } else { - throw "CLanguageCCpp::GetBacktrace(): cannot create gdb script " + tmpFile ; + throw "CAnalyzerCCpp::GetBacktrace(): cannot create gdb script " + tmpFile ; } std::string command = GDB_COMMAND + tmpFile; RunCommand(command, pBacktrace); } -void CLanguageCCpp::GetIndependentBacktrace(const std::string& pBacktrace, std::string& pIndependentBacktrace) +void CAnalyzerCCpp::GetIndependentBacktrace(const std::string& pBacktrace, std::string& pIndependentBacktrace) { int ii = 0; while (ii < pBacktrace.length()) @@ -143,14 +144,14 @@ void CLanguageCCpp::GetIndependentBacktrace(const std::string& pBacktrace, std:: } } -void CLanguageCCpp::RunCommand(const std::string& pCommand, std::string& pOutput) +void CAnalyzerCCpp::RunCommand(const std::string& pCommand, std::string& pOutput) { char line[1024]; std::string output; FILE *fp = popen(pCommand.c_str(), "r"); if (fp == NULL) { - throw "CLanguageCCpp::GetBacktrace(): cannot execute " + pCommand ; + throw "CAnalyzerCCpp::GetBacktrace(): cannot execute " + pCommand ; } pOutput = ""; while (fgets(line, 1024, fp) != NULL) @@ -163,7 +164,7 @@ void CLanguageCCpp::RunCommand(const std::string& pCommand, std::string& pOutput pclose(fp); } -std::string CLanguageCCpp::GetLocalUUID(const std::string& pDebugDumpDir) +std::string CAnalyzerCCpp::GetLocalUUID(const std::string& pDebugDumpDir) { std::stringstream ss; @@ -181,7 +182,7 @@ std::string CLanguageCCpp::GetLocalUUID(const std::string& pDebugDumpDir) return ss.str(); } -std::string CLanguageCCpp::GetGlobalUUID(const std::string& pDebugDumpDir) +std::string CAnalyzerCCpp::GetGlobalUUID(const std::string& pDebugDumpDir) { std::stringstream ss; std::string backtrace; @@ -198,7 +199,7 @@ std::string CLanguageCCpp::GetGlobalUUID(const std::string& pDebugDumpDir) return ss.str(); } -void CLanguageCCpp::CreateReport(const std::string& pDebugDumpDir) +void CAnalyzerCCpp::CreateReport(const std::string& pDebugDumpDir) { std::string package; std::string backtrace; @@ -234,7 +235,7 @@ void CLanguageCCpp::CreateReport(const std::string& pDebugDumpDir) dd.Close(); } -void CLanguageCCpp::Init() +void CAnalyzerCCpp::Init() { std::ifstream fInCorePattern; fInCorePattern.open(CORE_PATTERN_IFACE); @@ -253,7 +254,7 @@ void CLanguageCCpp::Init() } -void CLanguageCCpp::DeInit() +void CAnalyzerCCpp::DeInit() { std::ofstream fOutCorePattern; fOutCorePattern.open(CORE_PATTERN_IFACE); @@ -264,10 +265,13 @@ void CLanguageCCpp::DeInit() } } -void CLanguageCCpp::SetSettings(const map_settings_t& pSettings) +void CAnalyzerCCpp::LoadSettings(const std::string& pPath) { - if (pSettings.find("MemoryMap")!= pSettings.end()) + map_settings_t settings; + load_settings(pPath, settings); + + if (settings.find("MemoryMap")!= settings.end()) { - m_bMemoryMap = pSettings.find("MemoryMap")->second == "yes"; + m_bMemoryMap = settings["MemoryMap"] == "yes"; } } diff --git a/lib/Plugins/CCpp.h b/lib/Plugins/CCpp.h index 9d169ee4..e89d7000 100644 --- a/lib/Plugins/CCpp.h +++ b/lib/Plugins/CCpp.h @@ -1,5 +1,5 @@ /* - CCpp.h - header file for C/C++ language plugin + CCpp.h - header file for C/C++ analyzer plugin - it can ger UUID and memory maps from core files Copyright (C) 2009 Zdenek Prikryl (zprikryl@redhat.com) @@ -25,9 +25,9 @@ #include <string> #include "Plugin.h" -#include "Language.h" +#include "Analyzer.h" -class CLanguageCCpp : public CLanguage +class CAnalyzerCCpp : public CAnalyzer { private: bool m_bMemoryMap; @@ -38,24 +38,23 @@ class CLanguageCCpp : public CLanguage void RunCommand(const std::string&pCommand, std::string& pOutput); public: - CLanguageCCpp(); - virtual ~CLanguageCCpp() {} + CAnalyzerCCpp(); + virtual ~CAnalyzerCCpp() {} std::string GetLocalUUID(const std::string& pDebugDumpDir); std::string GetGlobalUUID(const std::string& pDebugDumpDir); void CreateReport(const std::string& pDebugDumpDir); void Init(); void DeInit(); - void SetSettings(const map_settings_t& pSettings); + void LoadSettings(const std::string& pPath); }; -PLUGIN_INFO(LANGUAGE, +PLUGIN_INFO(ANALYZER, + CAnalyzerCCpp, "CCpp", "0.0.1", - "Simple C/C++ language plugin.", + "Simple C/C++ analuzer plugin.", "zprikryl@redhat.com", "https://fedorahosted.org/crash-catcher/wiki"); -PLUGIN_INIT(CLanguageCCpp); - #endif /* CCPP */ diff --git a/lib/Plugins/Kerneloops.cpp b/lib/Plugins/Kerneloops.cpp index 2c0c3e78..07c8e066 100644 --- a/lib/Plugins/Kerneloops.cpp +++ b/lib/Plugins/Kerneloops.cpp @@ -31,7 +31,7 @@ #include "Kerneloops.h" #include "KerneloopsDmesg.h" -std::string CApplicationKerneloops::GetLocalUUID(const std::string& pDebugDumpDir) +std::string CAnalyzerKerneloops::GetLocalUUID(const std::string& pDebugDumpDir) { std::string m_sOops; std::stringstream m_sHash; @@ -53,12 +53,12 @@ std::string CApplicationKerneloops::GetLocalUUID(const std::string& pDebugDumpDi return m_sHash.str(); } -std::string CApplicationKerneloops::GetGlobalUUID(const std::string& pDebugDumpDir) +std::string CAnalyzerKerneloops::GetGlobalUUID(const std::string& pDebugDumpDir) { return GetLocalUUID(pDebugDumpDir); } -void CApplicationKerneloops::Init() +void CAnalyzerKerneloops::Init() { scan_logs(); } diff --git a/lib/Plugins/Kerneloops.h b/lib/Plugins/Kerneloops.h index e8137b63..52cba4e5 100644 --- a/lib/Plugins/Kerneloops.h +++ b/lib/Plugins/Kerneloops.h @@ -26,30 +26,26 @@ #define __INCLUDE_GUARD_KERNELOOPS_H_ #include "Plugin.h" -#include "Application.h" +#include "Analyzer.h" #include <string> -class CApplicationKerneloops : public CApplication +class CAnalyzerKerneloops : public CAnalyzer { public: - CApplicationKerneloops() {} - virtual ~CApplicationKerneloops() {} + virtual ~CAnalyzerKerneloops() {} std::string GetLocalUUID(const std::string& pDebugDumpDir); std::string GetGlobalUUID(const std::string& pDebugDumpDir); void CreateReport(const std::string& pDebugDumpDir) {} void Init(); - void DeInit() {} - void SetSettings(const map_settings_t& pSettings) {} }; -PLUGIN_INFO(APPLICATION, +PLUGIN_INFO(ANALYZER, + CAnalyzerKerneloops, "Kerneloops", "0.0.1", "Abrt's Kerneloops plugin.", "anton@redhat.com", "https://people.redhat.com/aarapov"); -PLUGIN_INIT(CApplicationKerneloops); - #endif diff --git a/lib/Plugins/KerneloopsDmesg.cpp b/lib/Plugins/KerneloopsDmesg.cpp index 0dea0e62..67f16fc4 100644 --- a/lib/Plugins/KerneloopsDmesg.cpp +++ b/lib/Plugins/KerneloopsDmesg.cpp @@ -183,7 +183,7 @@ static void fill_linepointers(char *buffer, int remove_syslog) static inline int extract_version(char *linepointer, char *version) { int ret; - + ret = 0; if ((strstr(linepointer, "Pid") != NULL) || (strstr(linepointer, "comm") != NULL) || @@ -526,7 +526,7 @@ int scan_logs() try { dd.Create(path); - dd.SaveText(FILENAME_APPLICATION, "Kerneloops"); + dd.SaveText(FILENAME_ANALYZER, "Kerneloops"); dd.SaveText(FILENAME_UID, "0"); dd.SaveText(FILENAME_EXECUTABLE, "kernel"); dd.SaveText(FILENAME_KERNEL, oops->version); diff --git a/lib/Plugins/KerneloopsReporter.cpp b/lib/Plugins/KerneloopsReporter.cpp index ef5f56f7..56947f07 100644 --- a/lib/Plugins/KerneloopsReporter.cpp +++ b/lib/Plugins/KerneloopsReporter.cpp @@ -25,6 +25,7 @@ */ #include "DebugDump.h" +#include "Settings.h" #include "KerneloopsReporter.h" #include <sstream> @@ -87,10 +88,13 @@ void CKerneloopsReporter::Report(const crash_report_t& pReport) curl_easy_cleanup(handle); } -void CKerneloopsReporter::SetSettings(const map_settings_t& pSettings) +void CKerneloopsReporter::LoadSettings(const std::string& pPath) { - if (pSettings.find("SubmitURL") != pSettings.end()) + map_settings_t settings; + load_settings(pPath, settings); + + if (settings.find("SubmitURL") != settings.end()) { - m_sSubmitURL = pSettings.find("SubmitURL")->second; + m_sSubmitURL = settings["SubmitURL"]; } } diff --git a/lib/Plugins/KerneloopsReporter.h b/lib/Plugins/KerneloopsReporter.h index e7a96681..88628077 100644 --- a/lib/Plugins/KerneloopsReporter.h +++ b/lib/Plugins/KerneloopsReporter.h @@ -37,19 +37,17 @@ class CKerneloopsReporter : public CReporter public: CKerneloopsReporter(); virtual ~CKerneloopsReporter() {} - void Init() {} - void DeInit() {} - void SetSettings(const map_settings_t& pSettings); + + void LoadSettings(const std::string& pPath); void Report(const crash_report_t& pReport); }; PLUGIN_INFO(REPORTER, - "KerneloopsReporter", - "0.0.1", - "Sends the Kerneloops crash information to Kerneloopsoops.org", - "anton@redhat.com", - "http://people.redhat.com/aarapov"); - -PLUGIN_INIT(CKerneloopsReporter); + CKerneloopsReporter, + "KerneloopsReporter", + "0.0.1", + "Sends the Kerneloops crash information to Kerneloopsoops.org", + "anton@redhat.com", + "http://people.redhat.com/aarapov"); #endif diff --git a/lib/Plugins/Logger.cpp b/lib/Plugins/Logger.cpp index 32f45a35..e7579372 100644 --- a/lib/Plugins/Logger.cpp +++ b/lib/Plugins/Logger.cpp @@ -21,21 +21,25 @@ #include "Logger.h" #include <fstream> +#include "Settings.h" CLogger::CLogger() : m_sLogPath("/var/log/abrt-logger"), m_bAppendLogs(true) {} -void CLogger::SetSettings(const map_settings_t& pSettings) +void CLogger::LoadSettings(const std::string& pPath) { - if (pSettings.find("LogPath")!= pSettings.end()) + map_settings_t settings; + load_settings(pPath, settings); + + if (settings.find("LogPath")!= settings.end()) { - m_sLogPath = pSettings.find("LogPath")->second; + m_sLogPath = settings["LogPath"]; } - if (pSettings.find("AppendLogs")!= pSettings.end()) + if (settings.find("AppendLogs")!= settings.end()) { - m_bAppendLogs = pSettings.find("AppendLogs")->second == "yes"; + m_bAppendLogs = settings["AppendLogs"] == "yes"; } } diff --git a/lib/Plugins/Logger.h b/lib/Plugins/Logger.h index 9a4e304f..f6dcffd8 100644 --- a/lib/Plugins/Logger.h +++ b/lib/Plugins/Logger.h @@ -35,21 +35,17 @@ class CLogger : public CReporter CLogger(); virtual ~CLogger() {} - void Init() {} - void DeInit() {} - void SetSettings(const map_settings_t& pSettings); - + void LoadSettings(const std::string& pPath); void Report(const crash_report_t& pReport); }; PLUGIN_INFO(REPORTER, + CLogger, "Logger", "0.0.1", "Write a report to a specific file", "zprikryl@redhat.com", "https://fedorahosted.org/crash-catcher/wiki"); -PLUGIN_INIT(CLogger); - #endif /* LOGGER_H_ */ diff --git a/lib/Plugins/Mailx.cpp b/lib/Plugins/Mailx.cpp index 11a9a6c7..1f83cb55 100644 --- a/lib/Plugins/Mailx.cpp +++ b/lib/Plugins/Mailx.cpp @@ -23,6 +23,7 @@ #include <stdio.h> #include <sstream> #include "DebugDump.h" +#include "Settings.h" #define MAILX_COMMAND "/bin/mailx" #define MAILX_SUBJECT "\"abrt automated bug report\"" @@ -124,22 +125,25 @@ void CMailx::Report(const crash_report_t& pReport) SendEmail(ss.str()); } -void CMailx::SetSettings(const map_settings_t& pSettings) +void CMailx::LoadSettings(const std::string& pPath) { - if (pSettings.find("EmailFrom")!= pSettings.end()) + map_settings_t settings; + load_settings(pPath, settings); + + if (settings.find("EmailFrom")!= settings.end()) { - m_sEmailFrom = pSettings.find("EmailFrom")->second; + m_sEmailFrom = settings["EmailFrom"]; } - if (pSettings.find("EmailTo")!= pSettings.end()) + if (settings.find("EmailTo")!= settings.end()) { - m_sEmailTo = pSettings.find("EmailTo")->second; + m_sEmailTo = settings["EmailTo"]; } - if (pSettings.find("Parameters")!= pSettings.end()) + if (settings.find("Parameters")!= settings.end()) { - m_sParameters = pSettings.find("Parameters")->second; + m_sParameters = settings["Parameters"]; } - if (pSettings.find("SendBinaryData")!= pSettings.end()) + if (settings.find("SendBinaryData")!= settings.end()) { - m_bSendBinaryData = pSettings.find("SendBinaryData")->second == "yes"; + m_bSendBinaryData = settings["SendBinaryData"] == "yes"; } } diff --git a/lib/Plugins/Mailx.h b/lib/Plugins/Mailx.h index 1a644147..15072632 100644 --- a/lib/Plugins/Mailx.h +++ b/lib/Plugins/Mailx.h @@ -41,22 +41,18 @@ class CMailx : public CReporter public: CMailx(); virtual ~CMailx() {} - void Init() {} - void DeInit() {} - void SetSettings(const map_settings_t& pSettings); + void LoadSettings(const std::string& pPath); void Report(const crash_report_t& pReport); }; PLUGIN_INFO(REPORTER, + CMailx, "Mailx", "0.0.1", "Sends an email with a report via mailx command", "zprikryl@redhat.com", "https://fedorahosted.org/crash-catcher/wiki"); -PLUGIN_INIT(CMailx); - - #endif /* MAILX_H_ */ diff --git a/lib/Plugins/Makefile.am b/lib/Plugins/Makefile.am index 608b5ddf..ee445c43 100644 --- a/lib/Plugins/Makefile.am +++ b/lib/Plugins/Makefile.am @@ -1,7 +1,13 @@ AM_CPPFLAGS = -I$(srcdir)/../MiddleWare -I$(srcdir)/../Utils pluginslibdir=$(PLUGINS_LIB_DIR) -pluginslib_LTLIBRARIES = libCCpp.la libMailx.la libSQLite3.la libLogger.la libKerneloopsReporter.la libKerneloops.la - +pluginslib_LTLIBRARIES = libCCpp.la \ + libMailx.la \ + libSQLite3.la \ + libLogger.la \ + libKerneloopsReporter.la\ + libKerneloops.la \ + libRunApp.la + pluginsconfdir=$(PLUGINS_CONF_DIR) dist_pluginsconf_DATA = CCpp.conf Mailx.conf SQLite3.conf Logger.conf KerneloopsReporter.conf @@ -34,3 +40,7 @@ libSQLite3_la_CPPFLAGS = -I$(srcdir)/../MiddleWare -I$(srcdir)/../Utils $(SQLITE # Logger libLogger_la_SOURCES = Logger.cpp Logger.h libLogger_la_LDFLAGS = -avoid-version + +# RunApp +libRunApp_la_SOURCES = RunApp.h RunApp.cpp +libRunApp_la_LDFLAGS = -avoid-version
\ No newline at end of file diff --git a/lib/Plugins/SQLite3.cpp b/lib/Plugins/SQLite3.cpp index c886ff01..f48e71b2 100644 --- a/lib/Plugins/SQLite3.cpp +++ b/lib/Plugins/SQLite3.cpp @@ -24,6 +24,7 @@ #include "SQLite3.h" #include <string> #include <iostream> +#include "Settings.h" #define ABRT_TABLE "abrt" @@ -267,10 +268,13 @@ const database_row_t CSQLite3::GetUUIDData(const std::string& pUUID, const std:: return table[0]; } -void CSQLite3::SetSettings(const map_settings_t& pSettings) +void CSQLite3::LoadSettings(const std::string& pPath) { - if (pSettings.find("DBPath")!= pSettings.end()) + map_settings_t settings; + load_settings(pPath, settings); + + if (settings.find("DBPath")!= settings.end()) { - m_sDBPath = pSettings.find("DBPath")->second; + m_sDBPath = settings["DBPath"]; } } diff --git a/lib/Plugins/SQLite3.h b/lib/Plugins/SQLite3.h index 4903f6a3..055c059f 100644 --- a/lib/Plugins/SQLite3.h +++ b/lib/Plugins/SQLite3.h @@ -58,18 +58,15 @@ class CSQLite3 : public CDatabase const vector_database_rows_t GetUIDData(const std::string& pUID); const database_row_t GetUUIDData(const std::string& pUUID, const std::string& pUID); - void Init() {} - void DeInit() {} - void SetSettings(const map_settings_t& pSettings); + void LoadSettings(const std::string& pPath); }; PLUGIN_INFO(DATABASE, + CSQLite3, "SQLite3", "0.0.1", "SQLite3 database plugin.", "zprikryl@redhat.com,jmoskovc@redhat.com", "https://fedorahosted.org/crash-catcher/wiki"); -PLUGIN_INIT(CSQLite3); - #endif /* SQLITE3_H_ */ |