summaryrefslogtreecommitdiffstats
path: root/src/Daemon/MiddleWare.cpp
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-03-05 17:03:32 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-03-05 17:03:32 +0100
commitdbbc2df18f5441d7b298c5d32e4199aa56f08ce0 (patch)
treeadf4bce0a6a02d29da010f91c8264c4dd38ca465 /src/Daemon/MiddleWare.cpp
parent9e7602b032c2187887c8164fa23c37d6daf28ac0 (diff)
downloadabrt-dbbc2df18f5441d7b298c5d32e4199aa56f08ce0.tar.gz
abrt-dbbc2df18f5441d7b298c5d32e4199aa56f08ce0.tar.xz
abrt-dbbc2df18f5441d7b298c5d32e4199aa56f08ce0.zip
add ProcessUnpackaged option to abrt.conf
Based on patch by Pekka Pietikainen <pp@ee.oulu.fi> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'src/Daemon/MiddleWare.cpp')
-rw-r--r--src/Daemon/MiddleWare.cpp34
1 files changed, 27 insertions, 7 deletions
diff --git a/src/Daemon/MiddleWare.cpp b/src/Daemon/MiddleWare.cpp
index 1ed13e86..770ed927 100644
--- a/src/Daemon/MiddleWare.cpp
+++ b/src/Daemon/MiddleWare.cpp
@@ -654,19 +654,41 @@ static mw_result_t SavePackageDescriptionToDebugDump(
{
std::string package;
std::string packageName;
+ std::string component;
std::string scriptName; /* only if "interpreter /path/to/script" */
if (strcmp(pExecutable, "kernel") == 0)
{
- packageName = package = "kernel";
+ component = packageName = package = "kernel";
}
else
{
char *rpm_pkg = GetPackage(pExecutable);
if (rpm_pkg == NULL)
{
- log("Executable '%s' doesn't belong to any package", pExecutable);
- return MW_PACKAGE_ERROR;
+ if (g_settings_bProcessUnpackaged)
+ {
+ VERB2 log("Crash in unpackaged executable '%s', proceeding without packaging information", pExecutable);
+ try
+ {
+ CDebugDump dd;
+ dd.Open(pDebugDumpDir);
+ dd.SaveText(FILENAME_PACKAGE, "");
+ dd.SaveText(FILENAME_COMPONENT, "");
+ dd.SaveText(FILENAME_DESCRIPTION, "Crashed executable does not belong to any installed package");
+ return MW_OK;
+ }
+ catch (CABRTException& e)
+ {
+ error_msg("%s", e.what());
+ return MW_ERROR;
+ }
+ }
+ else
+ {
+ log("Executable '%s' doesn't belong to any package", pExecutable);
+ return MW_PACKAGE_ERROR;
+ }
}
/* Check well-known interpreter names */
@@ -738,19 +760,17 @@ static mw_result_t SavePackageDescriptionToDebugDump(
}
*/
}
+ component = GetComponent(pExecutable);
}
std::string description = GetDescription(packageName.c_str());
- std::string component = GetComponent(pExecutable);
try
{
CDebugDump dd;
dd.Open(pDebugDumpDir);
dd.SaveText(FILENAME_PACKAGE, package.c_str());
dd.SaveText(FILENAME_DESCRIPTION, description.c_str());
- /* For oopses, pExecutable == "kernel" gives "" here. Don't write it */
- if (component.size() != 0)
- dd.SaveText(FILENAME_COMPONENT, component.c_str());
+ dd.SaveText(FILENAME_COMPONENT, component.c_str());
}
catch (CABRTException& e)
{