summaryrefslogtreecommitdiffstats
path: root/lib/MiddleWare
diff options
context:
space:
mode:
authorZdenek Prikryl <zdeny@dhcp-lab-218.englab.brq.redhat.com>2009-04-23 16:10:55 +0200
committerZdenek Prikryl <zdeny@dhcp-lab-218.englab.brq.redhat.com>2009-04-23 16:10:55 +0200
commit7b2d4874b7bd992ef3f09124b7ebbc346eba01f4 (patch)
tree82d62057cf9cae9b4a1fca46f9f30693d92a3f6e /lib/MiddleWare
parent4fa35669bd72794b1acae57c98e57297d9e65794 (diff)
downloadabrt-7b2d4874b7bd992ef3f09124b7ebbc346eba01f4.tar.gz
abrt-7b2d4874b7bd992ef3f09124b7ebbc346eba01f4.tar.xz
abrt-7b2d4874b7bd992ef3f09124b7ebbc346eba01f4.zip
added new abrt exceptions
Diffstat (limited to 'lib/MiddleWare')
-rw-r--r--lib/MiddleWare/ABRTPlugin.cpp17
-rw-r--r--lib/MiddleWare/CrashTypes.h1
-rw-r--r--lib/MiddleWare/DynamicLibrary.cpp5
-rw-r--r--lib/MiddleWare/MiddleWare.cpp260
-rw-r--r--lib/MiddleWare/MiddleWare.h20
-rw-r--r--lib/MiddleWare/PluginManager.cpp8
6 files changed, 171 insertions, 140 deletions
diff --git a/lib/MiddleWare/ABRTPlugin.cpp b/lib/MiddleWare/ABRTPlugin.cpp
index 788d5c9e..56e58b94 100644
--- a/lib/MiddleWare/ABRTPlugin.cpp
+++ b/lib/MiddleWare/ABRTPlugin.cpp
@@ -26,20 +26,9 @@ CABRTPlugin::CABRTPlugin(const std::string& pLibPath) :
m_pPluginInfo(NULL),
m_pFnPluginNew(NULL)
{
- try
- {
- m_pDynamicLibrary = new CDynamicLibrary(pLibPath);
- if (m_pDynamicLibrary == NULL)
- {
- throw std::string("Not enought memory.");
- }
- m_pPluginInfo = (p_plugin_info_t) m_pDynamicLibrary->FindSymbol("plugin_info");
- m_pFnPluginNew = (p_fn_plugin_new_t) m_pDynamicLibrary->FindSymbol("plugin_new");
- }
- catch (...)
- {
- throw;
- }
+ m_pDynamicLibrary = new CDynamicLibrary(pLibPath);
+ m_pPluginInfo = reinterpret_cast<p_plugin_info_t>(m_pDynamicLibrary->FindSymbol("plugin_info"));
+ m_pFnPluginNew = reinterpret_cast<p_fn_plugin_new_t>(m_pDynamicLibrary->FindSymbol("plugin_new"));
}
CABRTPlugin::~CABRTPlugin()
diff --git a/lib/MiddleWare/CrashTypes.h b/lib/MiddleWare/CrashTypes.h
index 4c2a2e45..d53e6802 100644
--- a/lib/MiddleWare/CrashTypes.h
+++ b/lib/MiddleWare/CrashTypes.h
@@ -36,6 +36,7 @@
#define CD_MWANALYZER "_MWAnalyzer"
#define CD_MWUID "_MWUID"
#define CD_MWUUID "_MWUUID"
+#define CD_MWDDD "_MWDDD"
// now, size of a vecor is always 3 -> <type, editable, content>
typedef std::vector<std::string> vector_strings_t;
diff --git a/lib/MiddleWare/DynamicLibrary.cpp b/lib/MiddleWare/DynamicLibrary.cpp
index 3fcc548c..ffb2a6e4 100644
--- a/lib/MiddleWare/DynamicLibrary.cpp
+++ b/lib/MiddleWare/DynamicLibrary.cpp
@@ -20,6 +20,7 @@
*/
#include "DynamicLibrary.h"
+#include "ABRTException.h"
#include <iostream>
#include <dlfcn.h>
@@ -43,7 +44,7 @@ void CDynamicLibrary::Load(const std::string& pPath)
m_pHandle = dlopen(pPath.c_str(), RTLD_NOW);
if (m_pHandle == NULL)
{
- throw "CDynamicLibrary::Load(): Cannot load " + pPath + " : " + std::string(dlerror());
+ throw CABRTException(EXCEP_DL, "CDynamicLibrary::Load(): Cannot load " + pPath + " : " + std::string(dlerror()));
}
}
@@ -52,7 +53,7 @@ void* CDynamicLibrary::FindSymbol(const std::string& pName)
void* sym = dlsym(m_pHandle, pName.c_str());
if (sym == NULL)
{
- throw "CDynamicLibrary::Load(): Cannot find symbol '" + pName + "'";
+ throw CABRTException(EXCEP_DL, "CDynamicLibrary::Load(): Cannot find symbol '" + pName + "'");
}
return sym;
}
diff --git a/lib/MiddleWare/MiddleWare.cpp b/lib/MiddleWare/MiddleWare.cpp
index bc8e9de9..bed81bbf 100644
--- a/lib/MiddleWare/MiddleWare.cpp
+++ b/lib/MiddleWare/MiddleWare.cpp
@@ -21,6 +21,8 @@
#include "MiddleWare.h"
#include "DebugDump.h"
+#include "ABRTException.h"
+#include <iostream>
CMiddleWare::CMiddleWare(const std::string& pPlugisConfDir,
const std::string& pPlugisLibDir) :
@@ -39,20 +41,21 @@ CMiddleWare::~CMiddleWare()
void CMiddleWare::DebugDumpToCrashReport(const std::string& pDebugDumpDir, map_crash_report_t& pCrashReport)
{
+ std::string fileName;
+ std::string content;
+ bool isTextFile;
CDebugDump dd;
dd.Open(pDebugDumpDir);
- std::string fileName, content;
- bool isTextFile;
- if (!dd.Exist(FILENAME_UUID) ||
- !dd.Exist(FILENAME_ARCHITECTURE) ||
+ if (!dd.Exist(FILENAME_ARCHITECTURE) ||
!dd.Exist(FILENAME_KERNEL) ||
!dd.Exist(FILENAME_PACKAGE) ||
!dd.Exist(FILENAME_RELEASE) ||
!dd.Exist(FILENAME_EXECUTABLE))
{
+ dd.Delete();
dd.Close();
- throw std::string("CMiddleWare::DebugDumpToCrashReport(): One or more of important file(s)'re missing.");
+ throw CABRTException(EXCEP_ERROR, "CMiddleWare::DebugDumpToCrashReport(): One or more of important file(s)'re missing.");
}
pCrashReport.clear();
dd.InitGetNextFile();
@@ -68,8 +71,7 @@ void CMiddleWare::DebugDumpToCrashReport(const std::string& pDebugDumpDir, map_c
}
else
{
- if (fileName == FILENAME_UUID ||
- fileName == FILENAME_ARCHITECTURE ||
+ if (fileName == FILENAME_ARCHITECTURE ||
fileName == FILENAME_KERNEL ||
fileName == FILENAME_PACKAGE ||
fileName == FILENAME_RELEASE ||
@@ -128,9 +130,9 @@ void CMiddleWare::CreateReport(const std::string& pAnalyzer,
return analyzer->CreateReport(pDebugDumpDir);
}
-void CMiddleWare::CreateCrashReport(const std::string& pUUID,
- const std::string& pUID,
- map_crash_report_t& pCrashReport)
+int CMiddleWare::CreateCrashReport(const std::string& pUUID,
+ const std::string& pUID,
+ map_crash_report_t& pCrashReport)
{
CDatabase* database = m_pPluginManager->GetDatabase(m_sDatabase);
database_row_t row;
@@ -140,50 +142,74 @@ void CMiddleWare::CreateCrashReport(const std::string& pUUID,
if (pUUID == "" || row.m_sUUID != pUUID)
{
- throw std::string("CMiddleWare::CreateCrashReport(): UUID '"+pUUID+"' is not in database.");
+ throw CABRTException(EXCEP_ERROR, "CMiddleWare::CreateCrashReport(): UUID '"+pUUID+"' is not in database.");
}
- std::string analyzer;
- std::string UUID;
- CDebugDump dd;
- dd.Open(row.m_sDebugDumpDir);
-
- dd.LoadText(FILENAME_ANALYZER, analyzer);
try
{
+ std::string analyzer;
+ std::string gUUID;
+ CDebugDump dd;
+ dd.Open(row.m_sDebugDumpDir);
+ dd.LoadText(FILENAME_ANALYZER, analyzer);
+ dd.Close();
+
CreateReport(analyzer, row.m_sDebugDumpDir);
+
+ gUUID = GetGlobalUUID(analyzer, row.m_sDebugDumpDir);
+
+ RunAnalyzerActions(analyzer, row.m_sDebugDumpDir);
+ DebugDumpToCrashReport(row.m_sDebugDumpDir, pCrashReport);
+
+ 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, "");
+ add_crash_data_to_crash_report(pCrashReport, CD_REPRODUCE, CD_TXT, CD_ISEDITABLE, "1.\n2.\n3.\n");
}
- catch (...)
+ catch (CABRTException& e)
{
- dd.Close();
- throw;
+ if (e.type() == EXCEP_DD_LOAD)
+ {
+ DeleteCrashInfo(row.m_sUID, row.m_sUUID, true);
+ }
+ else if (e.type() == EXCEP_DD_OPEN)
+ {
+ DeleteCrashInfo(row.m_sUUID, row.m_sUID, false);
+ }
+ std::cerr << "CMiddleWare::CreateCrashReport(): " << e.what() << std::endl;
+ return 0;
}
- UUID = GetGlobalUUID(analyzer, row.m_sDebugDumpDir);
-
- dd.SaveText(FILENAME_UUID, UUID);
- dd.Close();
-
- RunAnalyzerActions(analyzer, row.m_sDebugDumpDir);
- DebugDumpToCrashReport(row.m_sDebugDumpDir, pCrashReport);
- 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, "");
- add_crash_data_to_crash_report(pCrashReport, CD_REPRODUCE, CD_TXT, CD_ISEDITABLE, "1.\n2.\n3.\n");
+ return 1;
}
void CMiddleWare::Report(const std::string& pDebugDumpDir)
{
map_crash_report_t crashReport;
- DebugDumpToCrashReport(pDebugDumpDir, crashReport);
+ try
+ {
+ DebugDumpToCrashReport(pDebugDumpDir, crashReport);
+ }
+ catch (CABRTException& e)
+ {
+ std::cerr << "CMiddleWare::Report(): " << e.what() << std::endl;
+ }
set_reporters_t::iterator it_r;
for (it_r = m_setReporters.begin(); it_r != m_setReporters.end(); it_r++)
{
- CReporter* reporter = m_pPluginManager->GetReporter((*it_r).first);
- reporter->Report(crashReport, (*it_r).second);
+ try
+ {
+ CReporter* reporter = m_pPluginManager->GetReporter((*it_r).first);
+ reporter->Report(crashReport, (*it_r).second);
+ }
+ catch (CABRTException& e)
+ {
+ std::cerr << "CMiddleWare::Report(): " << e.what() << std::endl;
+ }
}
}
@@ -193,7 +219,7 @@ void CMiddleWare::Report(const map_crash_report_t& pCrashReport)
pCrashReport.find(CD_MWUID) == pCrashReport.end() ||
pCrashReport.find(CD_MWUUID) == pCrashReport.end())
{
- throw std::string("CMiddleWare::Report(): Important data are missing.");
+ throw CABRTException(EXCEP_ERROR, "CMiddleWare::Report(): System data are missing in crash report.");
}
std::string analyzer = pCrashReport.find(CD_MWANALYZER)->second[CD_CONTENT];
std::string UID = pCrashReport.find(CD_MWUID)->second[CD_CONTENT];
@@ -206,8 +232,15 @@ void CMiddleWare::Report(const map_crash_report_t& pCrashReport)
it_r != m_mapAnalyzerReporters[analyzer].end();
it_r++)
{
- CReporter* reporter = m_pPluginManager->GetReporter((*it_r).first);
- reporter->Report(pCrashReport, (*it_r).second);
+ try
+ {
+ CReporter* reporter = m_pPluginManager->GetReporter((*it_r).first);
+ reporter->Report(pCrashReport, (*it_r).second);
+ }
+ catch (CABRTException& e)
+ {
+ std::cerr << "CMiddleWare::Report(): " << e.what() << std::endl;
+ }
}
}
@@ -243,18 +276,13 @@ void CMiddleWare::DeleteCrashInfo(const std::string& pUUID,
}
-bool CMiddleWare::IsDebugDumpSaved(const std::string& pDebugDumpDir)
+bool CMiddleWare::IsDebugDumpSaved(const std::string& pUID,
+ const std::string& pDebugDumpDir)
{
- std::string UID;
- CDebugDump dd;
- dd.Open(pDebugDumpDir);
- dd.LoadText(FILENAME_UID, UID);
- dd.Close();
-
CDatabase* database = m_pPluginManager->GetDatabase(m_sDatabase);
vector_database_rows_t rows;
database->Connect();
- rows = database->GetUIDData(UID);
+ rows = database->GetUIDData(pUID);
database->DisConnect();
int ii;
@@ -271,37 +299,32 @@ bool CMiddleWare::IsDebugDumpSaved(const std::string& pDebugDumpDir)
return found;
}
-int CMiddleWare::SavePackageDescriptionToDebugDump(const std::string& pDebugDumpDir)
+int CMiddleWare::SavePackageDescriptionToDebugDump(const std::string& pExecutable,
+ const std::string& pDebugDumpDir)
{
std::string package;
std::string packageName;
- std::string executable;
- CDebugDump dd;
- dd.Open(pDebugDumpDir);
- dd.LoadText(FILENAME_EXECUTABLE, executable);
- if (executable == "kernel")
+ if (pExecutable == "kernel")
{
packageName = package = "kernel";
}
else
{
- package = m_RPM.GetPackage(executable);
+ package = m_RPM.GetPackage(pExecutable);
packageName = package.substr(0, package.rfind("-", package.rfind("-") - 1));
if (packageName == "" ||
(m_setBlackList.find(packageName) != m_setBlackList.end()))
{
- dd.Delete();
- dd.Close();
+ DeleteDebugDumpDir(pDebugDumpDir);
return 0;
}
if (m_bOpenGPGCheck)
{
if (!m_RPM.CheckFingerprint(packageName) ||
- !m_RPM.CheckHash(packageName, executable))
+ !m_RPM.CheckHash(packageName, pExecutable))
{
- dd.Delete();
- dd.Close();
+ DeleteDebugDumpDir(pDebugDumpDir);
return 0;
}
}
@@ -309,25 +332,10 @@ int CMiddleWare::SavePackageDescriptionToDebugDump(const std::string& pDebugDump
std::string description = m_RPM.GetDescription(packageName);
- dd.SaveText(FILENAME_PACKAGE, package);
- dd.SaveText(FILENAME_DESCRIPTION, description);
- dd.Close();
-
- return 1;
-}
-
-int CMiddleWare::SaveUUIDToDebugDump(const std::string& pDebugDumpDir)
-{
- std::string analyzer;
- std::string UUID;
CDebugDump dd;
dd.Open(pDebugDumpDir);
-
-
- dd.LoadText(FILENAME_ANALYZER, analyzer);
- UUID = GetLocalUUID(analyzer, pDebugDumpDir);
-
- dd.SaveText(FILENAME_UUID, UUID);
+ dd.SaveText(FILENAME_PACKAGE, package);
+ dd.SaveText(FILENAME_DESCRIPTION, description);
dd.Close();
return 1;
@@ -342,50 +350,44 @@ void CMiddleWare::RunAnalyzerActions(const std::string& pAnalyzer, const std::st
it_a != m_mapAnalyzerActions[pAnalyzer].end();
it_a++)
{
- CAction* action = m_pPluginManager->GetAction((*it_a).first);
- action->Run(pDebugDumpDir, (*it_a).second);
+ try
+ {
+ CAction* action = m_pPluginManager->GetAction((*it_a).first);
+ action->Run(pDebugDumpDir, (*it_a).second);
+ }
+ catch (CABRTException& e)
+ {
+ std::cerr << "CMiddleWare::RunAnalyzerActions(): " << e.what() << std::endl;
+ }
}
}
}
-int CMiddleWare::SaveDebugDumpToDatabase(const std::string& pDebugDumpDir, map_crash_info_t& pCrashInfo)
+int CMiddleWare::SaveDebugDumpToDatabase(const std::string& pUUID,
+ const std::string& pUID,
+ const std::string& pTime,
+ const std::string& pDebugDumpDir,
+ map_crash_info_t& pCrashInfo)
{
CDatabase* database = m_pPluginManager->GetDatabase(m_sDatabase);
- std::string UUID;
- std::string UID;
- std::string time;
-
- CDebugDump dd;
- dd.Open(pDebugDumpDir);
-
- dd.LoadText(FILENAME_TIME, time);
- dd.LoadText(FILENAME_UID, UID);
- dd.LoadText(FILENAME_UUID, UUID);
-
database_row_t row;
database->Connect();
- database->Insert(UUID, UID, pDebugDumpDir, time);
- row = database->GetUUIDData(UUID, UID);
+ database->Insert(pUUID, pUID, pDebugDumpDir, pTime);
+ row = database->GetUUIDData(pUUID, pUID);
database->DisConnect();
-
if (row.m_sReported == "1")
{
- dd.Delete();
- dd.Close();
+ DeleteDebugDumpDir(pDebugDumpDir);
return 0;
}
- pCrashInfo = GetCrashInfo(UUID, UID);
-
+ pCrashInfo = GetCrashInfo(pUUID, pUID);
if (row.m_sCount != "1")
{
- dd.Delete();
- dd.Close();
+ DeleteDebugDumpDir(pDebugDumpDir);
return 2;
}
- dd.Close();
-
return 1;
}
@@ -397,23 +399,49 @@ int CMiddleWare::SaveDebugDump(const std::string& pDebugDumpDir)
int CMiddleWare::SaveDebugDump(const std::string& pDebugDumpDir, map_crash_info_t& pCrashInfo)
{
- if (IsDebugDumpSaved(pDebugDumpDir))
- {
- return 0;
- }
- if (!SavePackageDescriptionToDebugDump(pDebugDumpDir))
+ std::string lUUID;
+ std::string UID;
+ std::string time;
+ std::string analyzer;
+ std::string executable;
+ CDebugDump dd;
+
+ try
{
- return 0;
+ dd.Open(pDebugDumpDir);
+ dd.LoadText(FILENAME_TIME, time);
+ dd.LoadText(FILENAME_UID, UID);
+ dd.LoadText(FILENAME_ANALYZER, analyzer);
+ dd.LoadText(FILENAME_EXECUTABLE, executable);
+ dd.Close();
+
+ if (IsDebugDumpSaved(UID, pDebugDumpDir))
+ {
+ return 0;
+ }
+ if (!SavePackageDescriptionToDebugDump(executable, pDebugDumpDir))
+ {
+ return 0;
+ }
+
+ lUUID = GetLocalUUID(analyzer, pDebugDumpDir);
+
+ return SaveDebugDumpToDatabase(lUUID, UID, time, pDebugDumpDir, pCrashInfo);
}
- if (!SaveUUIDToDebugDump(pDebugDumpDir))
+ catch (CABRTException& e)
{
+ if (e.type() == EXCEP_DD_LOAD ||
+ e.type() == EXCEP_DD_SAVE)
+ {
+ DeleteDebugDumpDir(pDebugDumpDir);
+ }
+ std::cerr << "CMiddleWare::SaveDebugDump(): " << e.what() << std::endl;
return 0;
}
- return SaveDebugDumpToDatabase(pDebugDumpDir, pCrashInfo);
}
map_crash_info_t CMiddleWare::GetCrashInfo(const std::string& pUUID,
- const std::string& pUID)
+ const std::string& pUID)
{
map_crash_info_t crashInfo;
CDatabase* database = m_pPluginManager->GetDatabase(m_sDatabase);
@@ -427,9 +455,13 @@ map_crash_info_t CMiddleWare::GetCrashInfo(const std::string& pUUID,
{
dd.Open(row.m_sDebugDumpDir);
}
- catch (std::string sErr)
+ catch (CABRTException& e)
{
- DeleteCrashInfo(row.m_sUUID, row.m_sUID, false);
+ if (e.type() == EXCEP_DD_OPEN)
+ {
+ DeleteCrashInfo(row.m_sUUID, row.m_sUID, false);
+ }
+ std::cerr << "CMiddleWare::GetCrashInfo(): " << e.what() << std::endl;
return crashInfo;
}
@@ -446,6 +478,7 @@ map_crash_info_t CMiddleWare::GetCrashInfo(const std::string& pUUID,
add_crash_data_to_crash_info(crashInfo, CD_COUNT, row.m_sCount);
add_crash_data_to_crash_info(crashInfo, CD_TIME, row.m_sTime);
add_crash_data_to_crash_info(crashInfo, CD_REPORTED, row.m_sReported);
+ add_crash_data_to_crash_info(crashInfo, CD_MWDDD, row.m_sDebugDumpDir);
return crashInfo;
}
@@ -464,7 +497,10 @@ vector_crash_infos_t CMiddleWare::GetCrashInfos(const std::string& pUID)
for (ii = 0; ii < rows.size(); ii++)
{
map_crash_info_t info = GetCrashInfo(rows[ii].m_sUUID, rows[ii].m_sUID);
- infos.push_back(info);
+ if (info[CD_UUID][CD_CONTENT] != "")
+ {
+ infos.push_back(info);
+ }
}
return infos;
diff --git a/lib/MiddleWare/MiddleWare.h b/lib/MiddleWare/MiddleWare.h
index 4ec3df3a..c3b47a4f 100644
--- a/lib/MiddleWare/MiddleWare.h
+++ b/lib/MiddleWare/MiddleWare.h
@@ -55,15 +55,17 @@ class CMiddleWare
std::string GetGlobalUUID(const std::string& pAnalyzer,
const std::string& pDebugDumpDir);
void CreateReport(const std::string& pAnalyzer,
- const std::string& pDebugDumpDir);
+ const std::string& pDebugDumpDir);
void RunAnalyzerActions(const std::string& pAnalyzer, const std::string& pDebugDumpDir);
void DebugDumpToCrashReport(const std::string& pDebugDumpDir,
map_crash_report_t& pCrashReport);
-
- bool IsDebugDumpSaved(const std::string& pDebugDumpDir);
- int SavePackageDescriptionToDebugDump(const std::string& pDebugDumpDir);
- int SaveUUIDToDebugDump(const std::string& pDebugDumpDir);
- int SaveDebugDumpToDatabase(const std::string& pDebugDumpDir, map_crash_info_t& pCrashInfo);
+ bool IsDebugDumpSaved(const std::string& pUID, const std::string& pDebugDumpDir);
+ int SavePackageDescriptionToDebugDump(const std::string& pExecutable, const std::string& pDebugDumpDir);
+ int SaveDebugDumpToDatabase(const std::string& pUUID,
+ const std::string& pUID,
+ const std::string& pTime,
+ const std::string& pDebugDumpDir,
+ map_crash_info_t& pCrashInfo);
map_crash_info_t GetCrashInfo(const std::string& pUUID,
const std::string& pUID);
@@ -77,9 +79,9 @@ class CMiddleWare
void RegisterPlugin(const std::string& pName);
void UnRegisterPlugin(const std::string& pName);
- void CreateCrashReport(const std::string& pUUID,
- const std::string& pUID,
- map_crash_report_t& pCrashReport);
+ int CreateCrashReport(const std::string& pUUID,
+ const std::string& pUID,
+ map_crash_report_t& pCrashReport);
void Report(const std::string& pDebugDumpDir);
void Report(const map_crash_report_t& pCrashReport);
diff --git a/lib/MiddleWare/PluginManager.cpp b/lib/MiddleWare/PluginManager.cpp
index cbdd2c1f..2ab314bb 100644
--- a/lib/MiddleWare/PluginManager.cpp
+++ b/lib/MiddleWare/PluginManager.cpp
@@ -21,6 +21,7 @@
#include <iostream>
#include "PluginManager.h"
+#include <ABRTException.h>
#include <dirent.h>
#include <stdio.h>
#include <sys/types.h>
@@ -80,18 +81,19 @@ void CPluginManager::LoadPlugin(const std::string& pName)
if (abrtPlugin->GetMagicNumber() != PLUGINS_MAGIC_NUMBER ||
(abrtPlugin->GetType() < ANALYZER && abrtPlugin->GetType() > DATABASE))
{
- throw std::string("non-compatible plugin");
+ throw CABRTException(EXCEP_PLUGIN, "CPluginManager::LoadPlugin(): non-compatible plugin");
}
std::cerr << "Plugin " << pName << " (" << abrtPlugin->GetVersion() << ") " << "succesfully loaded." << std::endl;
m_mapABRTPlugins[pName] = abrtPlugin;
}
- catch (std::string sError)
+ catch (CABRTException& e)
{
if (abrtPlugin != NULL)
{
delete abrtPlugin;
}
- std::cerr << "Failed to load plugin " << pName << " (" << sError << ")." << std::endl;
+ std::cerr << e.what() << std::endl;
+ std::cerr << "Failed to load plugin " << pName << std::endl;
}
}
}