From: Paul Eggert Date: Sun, 1 Jun 2014 23:17:56 +0000 (-0700) Subject: Port signal-handling to DragonFly BSD. X-Git-Tag: emacs-25.0.90~2612^2~709^2~822 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5c2b9423c56c2b7e3266d34be45cac359d2c3c26;p=emacs.git Port signal-handling to DragonFly BSD. * callproc.c, sysdep.c (block_child_signal, unblock_child_signal): Move implementations from callproc.c to sysdep.c. * process.h, syssignal.h (block_child_signal, unblock_child_signal): Move declaratations from process.h to syssignal.h. Fixes: debbugs:17646 --- diff --git a/src/ChangeLog b/src/ChangeLog index 050a6f2b0cf..975b19f032f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2014-06-01 Paul Eggert + + Port signal-handling to DragonFly BSD (Bug#17646). + * callproc.c, sysdep.c (block_child_signal, unblock_child_signal): + Move implementations from callproc.c to sysdep.c. + * process.h, syssignal.h (block_child_signal, unblock_child_signal): + Move declaratations from process.h to syssignal.h. + 2014-06-01 Juanma Barranquero * callint.c (Ffuncall_interactively): Add usage. diff --git a/src/callproc.c b/src/callproc.c index 0506bf53a25..38cde017187 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -105,30 +105,6 @@ enum static Lisp_Object call_process (ptrdiff_t, Lisp_Object *, int, ptrdiff_t); - -#ifndef MSDOS -/* Block SIGCHLD. */ - -void -block_child_signal (sigset_t *oldset) -{ - sigset_t blocked; - sigemptyset (&blocked); - sigaddset (&blocked, SIGCHLD); - sigaddset (&blocked, SIGINT); - pthread_sigmask (SIG_BLOCK, &blocked, oldset); -} - -/* Unblock SIGCHLD. */ - -void -unblock_child_signal (sigset_t const *oldset) -{ - pthread_sigmask (SIG_SETMASK, oldset, 0); -} - -#endif /* !MSDOS */ - /* Return the current buffer's working directory, or the home directory if it's unreachable, as a string suitable for a system call. Signal an error if the result would not be an accessible directory. */ diff --git a/src/process.h b/src/process.h index 842554bdef4..9181139226d 100644 --- a/src/process.h +++ b/src/process.h @@ -213,8 +213,6 @@ enum /* Defined in callproc.c. */ -extern void block_child_signal (sigset_t *); -extern void unblock_child_signal (sigset_t const *); extern Lisp_Object encode_current_directory (void); extern void record_kill_process (struct Lisp_Process *, Lisp_Object); diff --git a/src/sysdep.c b/src/sysdep.c index 573d419970d..480813e6cbc 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -659,7 +659,29 @@ ignore_sigio (void) signal (SIGIO, SIG_IGN); #endif } + +#ifndef MSDOS +/* Block SIGCHLD. */ + +void +block_child_signal (sigset_t *oldset) +{ + sigset_t blocked; + sigemptyset (&blocked); + sigaddset (&blocked, SIGCHLD); + sigaddset (&blocked, SIGINT); + pthread_sigmask (SIG_BLOCK, &blocked, oldset); +} + +/* Unblock SIGCHLD. */ + +void +unblock_child_signal (sigset_t const *oldset) +{ + pthread_sigmask (SIG_SETMASK, oldset, 0); +} +#endif /* !MSDOS */ /* Saving and restoring the process group of Emacs's terminal. */ diff --git a/src/syssignal.h b/src/syssignal.h index 89d6c480e0c..3fd9730e665 100644 --- a/src/syssignal.h +++ b/src/syssignal.h @@ -20,6 +20,8 @@ along with GNU Emacs. If not, see . */ #include extern void init_signals (bool); +extern void block_child_signal (sigset_t *); +extern void unblock_child_signal (sigset_t const *); extern void block_tty_out_signal (sigset_t *); extern void unblock_tty_out_signal (sigset_t const *);