diff options
| author | Jim Blandy | 1993-05-19 22:01:35 +0000 |
|---|---|---|
| committer | Jim Blandy | 1993-05-19 22:01:35 +0000 |
| commit | 00eaaa321cbd33275bd2cece992824999cf7a5cf (patch) | |
| tree | 13e418975952ad2401cf6fb78187b7c61ddaa1aa /src | |
| parent | 0674a1f9461cd79ea06e8b2e9b1e7cd6401f8fc5 (diff) | |
| download | emacs-00eaaa321cbd33275bd2cece992824999cf7a5cf.tar.gz emacs-00eaaa321cbd33275bd2cece992824999cf7a5cf.zip | |
Some changes from Michael K. Johnson for Linux.
* sysdep.c (sys_siglist): Don't define this if HAVE_SYS_SIGLIST is
#defined. That lets the system provide it, if it has it.
* syssignal.h (sigmask): Only define this if <signal.h> hasn't
given us a definition already.
* syssignal.h (sys_sigpause): Fix argument in prototype.
* sysdep.c (init_signals): The masks are called empty_mask and
full_mask, not signal_empty_mask and signal_full_mask.
(signal_handler_t): Moved ....
* syssignal.h: ... to here.
* systty.h (EMACS_SET_TTY_PGRP): Call tcsetpgrp with the correct
arguments.
* emacs.c (main): Don't try to establish signal handlers for
SIGBUS and SIGSYS unless they're actually #defined.
Diffstat (limited to 'src')
| -rw-r--r-- | src/emacs.c | 4 | ||||
| -rw-r--r-- | src/sysdep.c | 10 | ||||
| -rw-r--r-- | src/syssignal.h | 15 |
3 files changed, 20 insertions, 9 deletions
diff --git a/src/emacs.c b/src/emacs.c index 68d0ce31696..dac22ca1c23 100644 --- a/src/emacs.c +++ b/src/emacs.c | |||
| @@ -407,9 +407,13 @@ main (argc, argv, envp) | |||
| 407 | signal (SIGEMT, fatal_error_signal); | 407 | signal (SIGEMT, fatal_error_signal); |
| 408 | #endif | 408 | #endif |
| 409 | signal (SIGFPE, fatal_error_signal); | 409 | signal (SIGFPE, fatal_error_signal); |
| 410 | #ifdef SIGBUS | ||
| 410 | signal (SIGBUS, fatal_error_signal); | 411 | signal (SIGBUS, fatal_error_signal); |
| 412 | #endif | ||
| 411 | signal (SIGSEGV, fatal_error_signal); | 413 | signal (SIGSEGV, fatal_error_signal); |
| 414 | #ifdef SIGSYS | ||
| 412 | signal (SIGSYS, fatal_error_signal); | 415 | signal (SIGSYS, fatal_error_signal); |
| 416 | #endif | ||
| 413 | signal (SIGTERM, fatal_error_signal); | 417 | signal (SIGTERM, fatal_error_signal); |
| 414 | #ifdef SIGXCPU | 418 | #ifdef SIGXCPU |
| 415 | signal (SIGXCPU, fatal_error_signal); | 419 | signal (SIGXCPU, fatal_error_signal); |
diff --git a/src/sysdep.c b/src/sysdep.c index a6c1bdfbb34..99df6865338 100644 --- a/src/sysdep.c +++ b/src/sysdep.c | |||
| @@ -2040,14 +2040,10 @@ static struct sigaction new_action, old_action; | |||
| 2040 | 2040 | ||
| 2041 | init_signals () | 2041 | init_signals () |
| 2042 | { | 2042 | { |
| 2043 | #ifdef POSIX_SIGNALS | 2043 | sigemptyset (&empty_mask); |
| 2044 | sigemptyset (&signal_empty_mask); | 2044 | sigfillset (&full_mask); |
| 2045 | sigfillset (&signal_full_mask); | ||
| 2046 | #endif | ||
| 2047 | } | 2045 | } |
| 2048 | 2046 | ||
| 2049 | int (*signal_handler_t) (); | ||
| 2050 | |||
| 2051 | signal_handler_t | 2047 | signal_handler_t |
| 2052 | sys_signal (int signal_number, signal_handler_t action) | 2048 | sys_signal (int signal_number, signal_handler_t action) |
| 2053 | { | 2049 | { |
| @@ -2417,6 +2413,7 @@ sys_write (fildes, buf, nbyte) | |||
| 2417 | * always negligible. Fred Fish, Unisoft Systems Inc. | 2413 | * always negligible. Fred Fish, Unisoft Systems Inc. |
| 2418 | */ | 2414 | */ |
| 2419 | 2415 | ||
| 2416 | #ifndef HAVE_SYS_SIGLIST | ||
| 2420 | char *sys_siglist[NSIG + 1] = | 2417 | char *sys_siglist[NSIG + 1] = |
| 2421 | { | 2418 | { |
| 2422 | #ifdef AIX | 2419 | #ifdef AIX |
| @@ -2477,6 +2474,7 @@ char *sys_siglist[NSIG + 1] = | |||
| 2477 | #endif /* not AIX */ | 2474 | #endif /* not AIX */ |
| 2478 | 0 | 2475 | 0 |
| 2479 | }; | 2476 | }; |
| 2477 | #endif HAVE_SYS_SIGLIST | ||
| 2480 | 2478 | ||
| 2481 | /* | 2479 | /* |
| 2482 | * Warning, this function may not duplicate 4.2 action properly | 2480 | * Warning, this function may not duplicate 4.2 action properly |
diff --git a/src/syssignal.h b/src/syssignal.h index dddaee80924..ad3958647f2 100644 --- a/src/syssignal.h +++ b/src/syssignal.h | |||
| @@ -18,6 +18,9 @@ along with GNU Emacs; see the file COPYING. If not, write to | |||
| 18 | the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ | 18 | the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ |
| 19 | 19 | ||
| 20 | #ifdef POSIX_SIGNALS | 20 | #ifdef POSIX_SIGNALS |
| 21 | |||
| 22 | #include <signal.h> | ||
| 23 | |||
| 21 | #define SIGMASKTYPE sigset_t | 24 | #define SIGMASKTYPE sigset_t |
| 22 | 25 | ||
| 23 | #define SIGEMPTYMASK (empty_mask) | 26 | #define SIGEMPTYMASK (empty_mask) |
| @@ -26,6 +29,7 @@ extern sigset_t empty_mask, full_mask, temp_mask; | |||
| 26 | 29 | ||
| 27 | /* POSIX pretty much destroys any possibility of writing sigmask as a | 30 | /* POSIX pretty much destroys any possibility of writing sigmask as a |
| 28 | macro in standard C. */ | 31 | macro in standard C. */ |
| 32 | #ifndef sigmask | ||
| 29 | #ifdef __GNUC__ | 33 | #ifdef __GNUC__ |
| 30 | #define sigmask(SIG) \ | 34 | #define sigmask(SIG) \ |
| 31 | ({ \ | 35 | ({ \ |
| @@ -37,6 +41,7 @@ extern sigset_t empty_mask, full_mask, temp_mask; | |||
| 37 | #else /* ! defined (__GNUC__) */ | 41 | #else /* ! defined (__GNUC__) */ |
| 38 | #define sigmask(SIG) (sys_sigmask (SIG)) | 42 | #define sigmask(SIG) (sys_sigmask (SIG)) |
| 39 | #endif /* ! defined (__GNUC__) */ | 43 | #endif /* ! defined (__GNUC__) */ |
| 44 | #endif | ||
| 40 | 45 | ||
| 41 | #define sigpause(SIG) sys_sigpause(SIG) | 46 | #define sigpause(SIG) sys_sigpause(SIG) |
| 42 | #define sigblock(SIG) sys_sigblock(SIG) | 47 | #define sigblock(SIG) sys_sigblock(SIG) |
| @@ -45,9 +50,13 @@ extern sigset_t empty_mask, full_mask, temp_mask; | |||
| 45 | #define sighold(SIG) ONLY_USED_IN_BSD_4_1 | 50 | #define sighold(SIG) ONLY_USED_IN_BSD_4_1 |
| 46 | #define sigrelse(SIG) ONLY_USED_IN_BSD_4_1 | 51 | #define sigrelse(SIG) ONLY_USED_IN_BSD_4_1 |
| 47 | 52 | ||
| 48 | int (*sys_signal (int signal_number, int (*action)())) (); | 53 | /* Whether this is what all systems want or not, this is what |
| 49 | int sys_sigpause (int signal_number); | 54 | appears to be assumed in the source, for example data.c:arith_error() */ |
| 50 | sigset_t sys_sigblock (sigset_t new_mask); | 55 | typedef RETSIGTYPE (*signal_handler_t) (int); |
| 56 | |||
| 57 | signal_handler_t sys_signal (int signal_number, int (*action)()); | ||
| 58 | int sys_sigpause (sigset_t new_mask); | ||
| 59 | sigset_t sys_sigblock (sigset_t new_mask); | ||
| 51 | sigset_t sys_sigunblock (sigset_t new_mask); | 60 | sigset_t sys_sigunblock (sigset_t new_mask); |
| 52 | sigset_t sys_sigsetmask (sigset_t new_mask); | 61 | sigset_t sys_sigsetmask (sigset_t new_mask); |
| 53 | 62 | ||