diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-07-17 15:58:51 +0200 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-07-17 15:58:51 +0200 |
| commit | db9ffc6dafce568e0b70d064411db81933d61eb4 (patch) | |
| tree | eba77633fc2c2c18f4628a8b7ab26927b7553f0e /src/Daemon | |
| parent | 37ab187408799ba3f3f9107bdc5a72fea0b4b608 (diff) | |
| download | abrt-db9ffc6dafce568e0b70d064411db81933d61eb4.tar.gz abrt-db9ffc6dafce568e0b70d064411db81933d61eb4.tar.xz abrt-db9ffc6dafce568e0b70d064411db81933d61eb4.zip | |
On exit, take care to emit consistent exit status.
If we were Ctrl-C'ed, then we should exit by killing ourself, not exit(N).
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'src/Daemon')
| -rw-r--r-- | src/Daemon/Daemon.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp index c28331f..dff8de6 100644 --- a/src/Daemon/Daemon.cpp +++ b/src/Daemon/Daemon.cpp @@ -42,13 +42,14 @@ void print_help() int main(int argc, char** argv) { int daemonize = 1; - /*signal handlers */ + + /* signal handlers */ signal(SIGTERM, handle_fatal_signal); signal(SIGINT, handle_fatal_signal); + try { - - if (argc > 1) + if (argv[1]) { if (strcmp(argv[1], "-d") == 0) { @@ -97,7 +98,14 @@ int main(int argc, char** argv) { std::cerr << "Cannot create daemon: " << e.what() << std::endl; } + delete g_pCrashWatcher; - return 1; /* Any exit is a failure. Normally we don't exit at all */ -} + /* Take care to emit correct exit status */ + if (sig_caught) { + signal(sig_caught, SIG_DFL); + raise(sig_caught); + } + /* I think we never end up here */ + return 0; +} |
