commit 5efa791151f4abb1fc00ec8791b0f9df906ac6ee
parent 6f67861f34ef1fb6174b562c42a84cf68d474962
Author: ukai <ukai>
Date: Mon, 21 Jan 2002 17:57:27 +0000
[w3m-dev 02879] reset signals
* etc.c (reset_signals): added
* etc.c (mySystem): use reset_signals()
* file.c (uncompress_stream): use reset_signals()
* proto.h (reset_signals): added
* search.c (init_migemo): kill by SIGKILL
* search.c (open_migemo): use reset_signals()
From: Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
Diffstat:
5 files changed, 40 insertions(+), 9 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,13 @@
+2002-01-22 Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
+
+ * [w3m-dev 02879] reset signals
+ * etc.c (reset_signals): added
+ * etc.c (mySystem): use reset_signals()
+ * file.c (uncompress_stream): use reset_signals()
+ * proto.h (reset_signals): added
+ * search.c (init_migemo): kill by SIGKILL
+ * search.c (open_migemo): use reset_signals()
+
2002-01-22 Fumitoshi UKAI <ukai@debian.or.jp>
* url.c (URI_PATTERN): remove \
diff --git a/etc.c b/etc.c
@@ -1031,6 +1031,31 @@ romanAlphabet(int n)
return r;
}
+#ifndef SIGIOT
+#define SIGIOT SIGABRT
+#endif /* not SIGIOT */
+
+void
+reset_signals(void)
+{
+ signal(SIGHUP, SIG_DFL); /* terminate process */
+ signal(SIGINT, SIG_DFL); /* terminate process */
+ signal(SIGQUIT, SIG_DFL); /* terminate process */
+ signal(SIGTERM, SIG_DFL); /* terminate process */
+ signal(SIGILL, SIG_DFL); /* create core image */
+ signal(SIGIOT, SIG_DFL); /* create core image */
+ signal(SIGFPE, SIG_DFL); /* create core image */
+#ifdef SIGBUS
+ signal(SIGBUS, SIG_DFL); /* create core image */
+#endif /* SIGBUS */
+#ifdef SIGCHLD
+ signal(SIGCHLD, SIG_IGN);
+#endif
+#ifdef SIGPIPE
+ signal(SIGPIPE, SIG_IGN);
+#endif
+}
+
void
mySystem(char *command, int background)
{
@@ -1043,9 +1068,7 @@ mySystem(char *command, int background)
int pid;
flush_tty();
if ((pid = fork()) == 0) {
-#ifdef SIGCHLD
- signal(SIGCHLD, SIG_IGN);
-#endif
+ reset_signals();
setpgrp();
close_tty();
fclose(stdout);
diff --git a/file.c b/file.c
@@ -6149,7 +6149,7 @@ uncompress_stream(URLFile *uf)
flush_tty();
/* fd1[0]: read, fd1[1]: write */
if ((pid1 = fork()) == 0) {
- signal(SIGINT, SIG_DFL);
+ reset_signals();
close(fd1[0]);
if (tmpf) {
#ifdef USE_BINMODE_STREAM
diff --git a/proto.h b/proto.h
@@ -485,6 +485,7 @@ extern void add_auth_cookie(char *host, int port, char *realm, Str cookie);
extern char *last_modified(Buffer *buf);
extern Str romanNumeral(int n);
extern Str romanAlphabet(int n);
+extern void reset_signals(void);
extern void mySystem(char *command, int background);
extern Str myExtCommand(char *cmd, char *arg, int redirect);
extern Str myEditor(char *cmd, char *file, int line);
diff --git a/search.c b/search.c
@@ -28,7 +28,7 @@ init_migemo()
fclose(migemow);
migemor = migemow = NULL;
if (migemo_pid)
- kill(migemo_pid, SIGTERM);
+ kill(migemo_pid, SIGKILL);
migemo_pid = 0;
}
@@ -50,10 +50,7 @@ open_migemo(char *migemo_command)
goto err2;
if (migemo_pid == 0) {
/* child */
- signal(SIGINT, SIG_IGN);
-#ifdef SIGCHLD
- signal(SIGCHLD, SIG_IGN);
-#endif
+ reset_signals();
#ifdef HAVE_SETPGRP
setpgrp();
#endif