summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwtc%netscape.com <devnull@localhost>2002-02-01 05:57:49 +0000
committerwtc%netscape.com <devnull@localhost>2002-02-01 05:57:49 +0000
commitc0fe98b2a7598c4335d391aef8980e2e2ce64359 (patch)
tree90c45feb5fa6390a2a70e71334b2b653c70378d2
parentf1cac50a95787812033784c933a7fc4b126bf862 (diff)
downloadnss-hg-c0fe98b2a7598c4335d391aef8980e2e2ce64359.tar.gz
Bugzilla bug 119340: install a SIGTERM handler on Linux for debugging.
-rw-r--r--security/nss/cmd/selfserv/selfserv.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/security/nss/cmd/selfserv/selfserv.c b/security/nss/cmd/selfserv/selfserv.c
index 185aa92a5..c4f335167 100644
--- a/security/nss/cmd/selfserv/selfserv.c
+++ b/security/nss/cmd/selfserv/selfserv.c
@@ -1374,6 +1374,17 @@ WaitForDebugger(void)
}
#endif
+#ifdef LINUX /* bug 119340 */
+#include <signal.h>
+
+static void sigterm_handler(int signum)
+{
+ static char err_msg[] = "selfserv: received SIGTERM\n";
+ write(2, err_msg, sizeof(err_msg) - 1);
+ _exit(1);
+}
+#endif /* LINUX */
+
int
main(int argc, char **argv)
{
@@ -1400,6 +1411,17 @@ main(int argc, char **argv)
PLOptState *optstate;
PLOptStatus status;
PRThread *loggerThread;
+#ifdef LINUX /* bug 119340 */
+ struct sigaction act;
+
+ act.sa_handler = sigterm_handler;
+ sigemptyset(&act.sa_mask);
+ act.sa_flags = 0;
+ if (sigaction(SIGTERM, &act, NULL) == -1) {
+ fprintf(stderr, "selfserv: sigaction failed: %d\n", errno);
+ exit(1);
+ }
+#endif /* LINUX */
tmp = strrchr(argv[0], '/');