aboutsummaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2008-11-18 15:47:32 +0100
committerFelix Domke <tmbinc@elitedvb.net>2008-11-18 15:47:32 +0100
commitd924772eeced2429c007e51ce6dcb50dadec2836 (patch)
treea891017ca913b3c9226dae0946530a157c2dbace /main
parent63bae75ab8aaaee8bca8175918d376bb729bf65d (diff)
downloadenigma2-d924772eeced2429c007e51ce6dcb50dadec2836.tar.gz
enigma2-d924772eeced2429c007e51ce6dcb50dadec2836.zip
don't try to look for python files when handling a C++ crash
Diffstat (limited to 'main')
-rw-r--r--main/bsod.cpp51
-rw-r--r--main/bsod.h2
-rw-r--r--main/enigma.cpp2
3 files changed, 30 insertions, 25 deletions
diff --git a/main/bsod.cpp b/main/bsod.cpp
index 173a2cce..583107d7 100644
--- a/main/bsod.cpp
+++ b/main/bsod.cpp
@@ -67,7 +67,7 @@ extern std::string getLogBuffer();
#define INFOFILE "/maintainer.info"
-void bsodFatal()
+void bsodFatal(const char *component)
{
char logfile[128];
sprintf(logfile, "/media/hdd/enigma2_crash_%u.log", (unsigned int)time(0));
@@ -81,30 +81,35 @@ void bsodFatal()
char crash_emailaddr[256] = CRASH_EMAILADDR;
char crash_component[256] = "enigma2";
- while ((start = lines.find("\n File \"", start)) != std::string::npos)
+ if (component)
+ snprintf(crash_component, 256, component);
+ else
{
- start += 9;
- size_t end = lines.find("\"", start);
- if (end == std::string::npos)
- break;
- end = lines.rfind("/", end);
- if (end == std::string::npos)
- break;
- if (end - start >= (256 - strlen(INFOFILE)))
- continue;
- char filename[256];
- snprintf(filename, 256, "%s%s", lines.substr(start, end - start).c_str(), INFOFILE);
- FILE *cf = fopen(filename, "r");
- if (cf)
+ while ((start = lines.find("\n File \"", start)) != std::string::npos)
{
- fgets(crash_emailaddr, sizeof crash_emailaddr, cf);
- if (*crash_emailaddr && crash_emailaddr[strlen(crash_emailaddr)-1] == '\n')
- crash_emailaddr[strlen(crash_emailaddr)-1] = 0;
+ start += 9;
+ size_t end = lines.find("\"", start);
+ if (end == std::string::npos)
+ break;
+ end = lines.rfind("/", end);
+ if (end == std::string::npos)
+ break;
+ if (end - start >= (256 - strlen(INFOFILE)))
+ continue;
+ char filename[256];
+ snprintf(filename, 256, "%s%s", lines.substr(start, end - start).c_str(), INFOFILE);
+ FILE *cf = fopen(filename, "r");
+ if (cf)
+ {
+ fgets(crash_emailaddr, sizeof crash_emailaddr, cf);
+ if (*crash_emailaddr && crash_emailaddr[strlen(crash_emailaddr)-1] == '\n')
+ crash_emailaddr[strlen(crash_emailaddr)-1] = 0;
- fgets(crash_component, sizeof crash_component, cf);
- if (*crash_component && crash_component[strlen(crash_component)-1] == '\n')
- crash_component[strlen(crash_component)-1] = 0;
- fclose(cf);
+ fgets(crash_component, sizeof crash_component, cf);
+ if (*crash_component && crash_component[strlen(crash_component)-1] == '\n')
+ crash_component[strlen(crash_component)-1] = 0;
+ fclose(cf);
+ }
}
}
@@ -242,7 +247,7 @@ void handleFatalSignal(int signum, siginfo_t *si, void *ctx)
oops(uc->uc_mcontext, signum == SIGSEGV || signum == SIGABRT);
#endif
eDebug("-------");
- bsodFatal();
+ bsodFatal("enigma2, signal");
}
void bsodCatchSignals()
diff --git a/main/bsod.h b/main/bsod.h
index aa8cfb74..4ee4c48b 100644
--- a/main/bsod.h
+++ b/main/bsod.h
@@ -3,6 +3,6 @@
void bsodLogInit();
void bsodCatchSignals();
-void bsodFatal();
+void bsodFatal(const char *component);
#endif
diff --git a/main/enigma.cpp b/main/enigma.cpp
index 0893b035..98175c49 100644
--- a/main/enigma.cpp
+++ b/main/enigma.cpp
@@ -248,7 +248,7 @@ int main(int argc, char **argv)
if (exit_code == 5) /* python crash */
{
eDebug("(exit code 5)");
- bsodFatal();
+ bsodFatal(0);
}
dsk.paint();