annotate src/syssignal.h @ 4690:257b468bf2ca

Move the #'query-coding-region implementation to C. This is necessary because there is no reasonable way to access the corresponding mswindows-multibyte functionality from Lisp, and we need such functionality if we're going to have a reliable and portable #'query-coding-region implementation. However, this change doesn't yet provide #'query-coding-region for the mswindow-multibyte coding systems, there should be no functional differences between an XEmacs with this change and one without it. src/ChangeLog addition: 2009-09-19 Aidan Kehoe <kehoea@parhasard.net> Move the #'query-coding-region implementation to C. This is necessary because there is no reasonable way to access the corresponding mswindows-multibyte functionality from Lisp, and we need such functionality if we're going to have a reliable and portable #'query-coding-region implementation. However, this change doesn't yet provide #'query-coding-region for the mswindow-multibyte coding systems, there should be no functional differences between an XEmacs with this change and one without it. * mule-coding.c (struct fixed_width_coding_system): Add a new coding system type, fixed_width, and implement it. It uses the CCL infrastructure but has a much simpler creation API, and its own query_method, formerly in lisp/mule/mule-coding.el. * unicode.c: Move the Unicode query method implementation here from unicode.el. * lisp.h: Declare Fmake_coding_system_internal, Fcopy_range_table here. * intl-win32.c (complex_vars_of_intl_win32): Use Fmake_coding_system_internal, not Fmake_coding_system. * general-slots.h: Add Qsucceeded, Qunencodable, Qinvalid_sequence here. * file-coding.h (enum coding_system_variant): Add fixed_width_coding_system here. (struct coding_system_methods): Add query_method and query_lstream_method to the coding system methods. Provide flags for the query methods. Declare the default query method; initialise it correctly in INITIALIZE_CODING_SYSTEM_TYPE. * file-coding.c (default_query_method): New function, the default query method for coding systems that do not set it. Moved from coding.el. (make_coding_system_1): Accept new elements in PROPS in #'make-coding-system; aliases, a list of aliases; safe-chars and safe-charsets (these were previously accepted but not saved); and category. (Fmake_coding_system_internal): New function, what used to be #'make-coding-system--on Mule builds, we've now moved some of the functionality of this to Lisp. (Fcoding_system_canonical_name_p): Move this earlier in the file, since it's now called from within make_coding_system_1. (Fquery_coding_region): Move the implementation of this here, from coding.el. (complex_vars_of_file_coding): Call Fmake_coding_system_internal, not Fmake_coding_system; specify safe-charsets properties when we're a mule build. * extents.h (mouse_highlight_priority, Fset_extent_priority, Fset_extent_face, Fmap_extents): Make these available to other C files. lisp/ChangeLog addition: 2009-09-19 Aidan Kehoe <kehoea@parhasard.net> Move the #'query-coding-region implementation to C. * coding.el: Consolidate code that depends on the presence or absence of Mule at the end of this file. (default-query-coding-region, query-coding-region): Move these functions to C. (default-query-coding-region-safe-charset-skip-chars-map): Remove this variable, the corresponding C variable is Vdefault_query_coding_region_chartab_cache in file-coding.c. (query-coding-string): Update docstring to reflect actual multiple values, be more careful about not modifying a range table that we're currently mapping over. (encode-coding-char): Make the implementation of this simpler. (featurep 'mule): Autoload #'make-coding-system from mule/make-coding-system.el if we're a mule build; provide an appropriate compiler macro. Do various non-mule compatibility things if we're not a mule build. * update-elc.el (additional-dump-dependencies): Add mule/make-coding-system as a dump time dependency if we're a mule build. * unicode.el (ccl-encode-to-ucs-2): (decode-char): (encode-char): Move these earlier in the file, for the sake of some byte compile warnings. (unicode-query-coding-region): Move this to unicode.c * mule/make-coding-system.el: New file, not dumped. Contains the functionality to rework the arguments necessary for fixed-width coding systems, and contains the implementation of #'make-coding-system, which now calls #'make-coding-system-internal. * mule/vietnamese.el (viscii): * mule/latin.el (iso-8859-2): (windows-1250): (iso-8859-3): (iso-8859-4): (iso-8859-14): (iso-8859-15): (iso-8859-16): (iso-8859-9): (macintosh): (windows-1252): * mule/hebrew.el (iso-8859-8): * mule/greek.el (iso-8859-7): (windows-1253): * mule/cyrillic.el (iso-8859-5): (koi8-r): (koi8-u): (windows-1251): (alternativnyj): (koi8-ru): (koi8-t): (koi8-c): (koi8-o): * mule/arabic.el (iso-8859-6): (windows-1256): Move all these coding systems to being of type fixed-width, not of type CCL. This allows the distinct query-coding-region for them to be in C, something which will eventually allow us to implement query-coding-region for the mswindows-multibyte coding systems. * mule/general-late.el (posix-charset-to-coding-system-hash): Document why we're pre-emptively persuading the byte compiler that the ELC for this file needs to be written using escape-quoted. Call #'set-unicode-query-skip-chars-args, now the Unicode query-coding-region implementation is in C. * mule/thai-xtis.el (tis-620): Don't bother checking whether we're XEmacs or not here. * mule/mule-coding.el: Move the eight bit fixed-width functionality from this file to make-coding-system.el. tests/ChangeLog addition: 2009-09-19 Aidan Kehoe <kehoea@parhasard.net> * automated/mule-tests.el: Check a coding system's type, not an 8-bit-fixed property, for whether that coding system should be treated as a fixed-width coding system. * automated/query-coding-tests.el: Don't test the query coding functionality for mswindows-multibyte coding systems, it's not yet implemented.
author Aidan Kehoe <kehoea@parhasard.net>
date Sat, 19 Sep 2009 22:53:13 +0100
parents 4769b9c268eb
children aa5ed11f473b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 /* syssignal.h - System-dependent definitions for signals.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 Copyright (C) 1992, 1993 Free Software Foundation, Inc.
814
a634e3b7acc8 [xemacs-hg @ 2002-04-14 12:41:59 by ben]
ben
parents: 771
diff changeset
3 Copyright (C) 1996 Ben Wing.
a634e3b7acc8 [xemacs-hg @ 2002-04-14 12:41:59 by ben]
ben
parents: 771
diff changeset
4
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 XEmacs is free software; you can redistribute it and/or modify it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 later version.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 XEmacs is distributed in the hope that it will be useful, but WITHOUT
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 along with XEmacs; see the file COPYING. If not, write to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 Boston, MA 02111-1307, USA. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 /* Synched up with: FSF 19.30. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
24 #ifndef INCLUDED_syssignal_h_
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
25 #define INCLUDED_syssignal_h_
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 /* In the old world, one could not #include <signal.h> here. The party line
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 was that that header should always be #included before <config.h>, because
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 some configuration files (like s/hpux.h) indicate that SIGIO doesn't work
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 by #undef-ing SIGIO, and if this file #includes <signal.h>, then that will
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 re-#define SIGIO and confuse things.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 This was, however, a completely fucked up state of affairs, because on some
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 systems it's necessary for the s/m files to #define things in order to get
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 <signal.h> to provide the right typedefs, etc. And it's generally a broken
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 concept for <config.h> to not be the very very first file included.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 So instead of #undef'ing SIGIO in the various s/m files, I've changed them
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 to define BROKEN_SIGIO instead, then we (syssignal.h) do an #undef SIGIO
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 at the end, after including signal.h. Therefore, it's important that
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 <signal.h> not be included after "syssignal.h", but that's the normal state:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 nothing should be directly including <signal.h> these days.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 -- jwz, 29-nov-93
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 #include <signal.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 #include <errno.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 /* SIGPOLL is the SVR4 signal. Those systems generally define
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 SIGIO as an alias for SIGPOLL, but just in case ... */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 #if defined (BROKEN_SIGIO)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 # if defined (SIGIO) && defined (SIGPOLL)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 # if SIGIO == SIGPOLL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 # undef SIGIO
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 # undef SIGPOLL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 # else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 # undef SIGIO
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 #else /* Not BROKEN_SIGIO */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 # if !defined (SIGIO) && defined (SIGPOLL)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 # define SIGIO SIGPOLL
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 # endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 /* Define SIGCHLD as an alias for SIGCLD. There are many conditionals
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 testing SIGCHLD. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 #if defined (SIGCLD) && !defined (SIGCHLD)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 # define SIGCHLD SIGCLD
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 #endif /* SIGCHLD */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 #ifdef BROKEN_SIGCHLD
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 #undef SIGCHLD
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 #ifdef SIGCHLD
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 #define EMACS_BLOCK_SIGCHLD EMACS_BLOCK_SIGNAL (SIGCHLD)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 #define EMACS_UNBLOCK_SIGCHLD EMACS_UNBLOCK_SIGNAL (SIGCHLD)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 #define EMACS_BLOCK_SIGCHLD
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 #define EMACS_UNBLOCK_SIGCHLD
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 /* According to W.R. Stevens __Advanced Programming in the Unix
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 Environment__, there are four different paradigms for handling
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 signals. We use autoconf to tell us which one applies.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 Note that on some systems, more than one paradigm is implemented
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 (typically, the POSIX sigaction/sigprocmask and either the older
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 SYSV or BSD way). In such a case, we prefer the POSIX way.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
93 We used to say this:
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
94
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
95 [[ NOTE: We use EMACS_* macros for most signal operations, but
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 just signal() for the standard signal-setting operation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 Perhaps we should change this to EMACS_SIGNAL(), but that runs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 the risk of someone forgetting this convention and calling
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
99 signal() directly. ]]
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
100
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
101 But current policy is to avoid playing with macros as much as
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
102 possible, since in the long run it really just ends up creating
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
103 unmaintainable code -- someone newly reading the code is never
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
104 going to realize exactly which calls are redirected, and on
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
105 which systems, and where the redirection occurs.
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
106
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
107 Possibly we should use the new "qxe" convention.
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
108 */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 #ifndef NeXT
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 814
diff changeset
111 typedef RETSIGTYPE (XCDECL * signal_handler_t) (int);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 #if defined (HAVE_SIGPROCMASK)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 /* The POSIX way (sigaction, sigprocmask, sigpending, sigsuspend) */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
118 signal_handler_t qxe_reliable_signal (int signal_number,
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
119 signal_handler_t action);
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
120
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
121 #define EMACS_SIGNAL qxe_reliable_signal
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 #define EMACS_BLOCK_SIGNAL(sig) do \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 sigset_t ES_mask; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 sigemptyset (&ES_mask); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 sigaddset (&ES_mask, sig); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 sigprocmask (SIG_BLOCK, &ES_mask, NULL); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 #define EMACS_UNBLOCK_SIGNAL(sig) do \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 sigset_t ES_mask; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 sigemptyset (&ES_mask); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 sigaddset (&ES_mask, sig); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 sigprocmask (SIG_UNBLOCK, &ES_mask, NULL); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 #define EMACS_UNBLOCK_ALL_SIGNALS() do \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 sigset_t ES_mask; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 sigemptyset (&ES_mask); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 sigprocmask (SIG_SETMASK, &ES_mask, NULL); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 #define EMACS_WAIT_FOR_SIGNAL(sig) do \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 sigset_t ES_mask; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 sigprocmask (0, NULL, &ES_mask); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 sigdelset (&ES_mask, sig); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 sigsuspend (&ES_mask); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 #define EMACS_REESTABLISH_SIGNAL(sig, handler)
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 978
diff changeset
151 #define SIG_ARG_MAYBE_UNUSED(decl) UNUSED (decl)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 #elif defined (HAVE_SIGBLOCK)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 /* The older BSD way (signal/sigvec, sigblock, sigsetmask, sigpause) */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 /* It's OK to use signal() here directly. No unreliable signal
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 problems. However, we use sigvec() because it allows us to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 request interruptible I/O. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
161 #define EMACS_SIGNAL qxe_reliable_signal
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 /* Is it necessary to define sigmask like this? */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 #ifndef sigmask
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 # define sigmask(no) (1L << ((no) - 1))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 #define EMACS_BLOCK_SIGNAL(sig) sigblock (sigmask (sig))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 #define EMACS_UNBLOCK_SIGNAL(sig) sigsetmask (sigblock (0) & ~sigmask (sig))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 #define EMACS_UNBLOCK_ALL_SIGNALS() sigsetmask (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 #define EMACS_WAIT_FOR_SIGNAL(sig) do \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 int ES_mask = sigblock (0); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 sigpause (ES_mask & ~sigmask (sig)); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176 #define EMACS_REESTABLISH_SIGNAL(sig, handler)
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 978
diff changeset
177 #define SIG_ARG_MAYBE_UNUSED(decl) UNUSED (decl)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 #elif defined (HAVE_SIGHOLD)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 /* The older SYSV way (signal/sigset, sighold, sigrelse, sigignore,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 sigpause) */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
184 #define EMACS_SIGNAL sigset
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 #define EMACS_BLOCK_SIGNAL(sig) sighold (sig)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 #define EMACS_UNBLOCK_SIGNAL(sig) sigrelse (sig)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 /* #### There's not really any simple way to implement this.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 Since EMACS_UNBLOCK_ALL_SIGNALS() is only called once (at startup),
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 it's probably OK to just ignore it. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 #define EMACS_UNBLOCK_ALL_SIGNALS() 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191 #define EMACS_WAIT_FOR_SIGNAL(sig) sigpause (sig)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 #define EMACS_REESTABLISH_SIGNAL(sig, handler)
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 978
diff changeset
193 #define SIG_ARG_MAYBE_UNUSED(decl) UNUSED (decl)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
195 #elif defined (WIN32_NATIVE)
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
196
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
197 /* MS Windows signal emulation (in turns emulates the sigset/sighold
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
198 paradigm) */
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
199
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
200 #define EMACS_SIGNAL mswindows_sigset
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
201 #define EMACS_BLOCK_SIGNAL(sig) mswindows_sighold (sig)
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
202 #define EMACS_UNBLOCK_SIGNAL(sig) mswindows_sigrelse (sig)
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
203 /* #### There's not really any simple way to implement this.
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
204 Since EMACS_UNBLOCK_ALL_SIGNALS() is only called once (at startup),
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
205 it's probably OK to just ignore it. */
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
206 #define EMACS_UNBLOCK_ALL_SIGNALS() 0
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
207 #define EMACS_WAIT_FOR_SIGNAL(sig) mswindows_sigpause (sig)
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
208 #define EMACS_REESTABLISH_SIGNAL(sig, handler)
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 978
diff changeset
209 #define SIG_ARG_MAYBE_UNUSED(decl) UNUSED (decl)
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
210
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
211 /* Defines that we need that aren't in the standard signal.h */
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
212 #define SIGHUP 1 /* Hang up */
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
213 #define SIGQUIT 3 /* Quit process */
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
214 #define SIGKILL 9 /* Die, die die */
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
215 #define SIGALRM 14 /* Alarm */
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
216 #define SIGPROF 29 /* Profiling timer exp */
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
217
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 /* The oldest SYSV way (signal only; unreliable signals) */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 /* Old USG systems don't really have signal blocking.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 We indicate this by not defining EMACS_BLOCK_SIGNAL or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 EMACS_WAIT_FOR_SIGNAL. */
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
225 #define EMACS_SIGNAL signal
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226 #define EMACS_UNBLOCK_SIGNAL(sig) 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227 #define EMACS_UNBLOCK_ALL_SIGNALS() 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228 #define EMACS_REESTABLISH_SIGNAL(sig, handler) do \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 int old_errno = errno; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231 signal (sig, handler); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 errno = old_errno; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 } while (0)
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 978
diff changeset
234 #define SIG_ARG_MAYBE_UNUSED(decl) decl
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 /* Under SYSV, setting a signal handler for SIGCLD causes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 SIGCLD to immediately be sent if there any unwaited processes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 out there. This means that the SIGCLD handler *must* call
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239 wait() to reap the status of all processes -- it cannot
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 simply set a flag and then reestablish the handler, because
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 it will get called again, infinitely. We only need to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 worry about this on systems where signals need to be
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 reestablished (SYSV Release 2 and earlier). */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 #define OBNOXIOUS_SYSV_SIGCLD_BEHAVIOR
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
246 #endif /* different signalling methods */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248 /* On bsd, [man says] kill does not accept a negative number to kill a pgrp.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 Must do that using the killpg call. */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
250 #ifdef HAVE_KILLPG
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
251 #define EMACS_KILLPG(pid, signo) killpg (pid, signo)
814
a634e3b7acc8 [xemacs-hg @ 2002-04-14 12:41:59 by ben]
ben
parents: 771
diff changeset
252 #elif defined (WIN32_NATIVE)
a634e3b7acc8 [xemacs-hg @ 2002-04-14 12:41:59 by ben]
ben
parents: 771
diff changeset
253 #define EMACS_KILLPG(pid, signo) should never be called
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 #else
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
255 #define EMACS_KILLPG(pid, signo) kill (-(pid), signo)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258 #ifndef NSIG
978
13e47461d509 [xemacs-hg @ 2002-08-29 19:45:20 by james]
james
parents: 872
diff changeset
259 # ifdef USG5_4
13e47461d509 [xemacs-hg @ 2002-08-29 19:45:20 by james]
james
parents: 872
diff changeset
260 /* Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
13e47461d509 [xemacs-hg @ 2002-08-29 19:45:20 by james]
james
parents: 872
diff changeset
261 * instead, there's a system variable _sys_nsig. Unfortunately, we need the
13e47461d509 [xemacs-hg @ 2002-08-29 19:45:20 by james]
james
parents: 872
diff changeset
262 * constant to dimension an array. So wire in the appropriate value here.
13e47461d509 [xemacs-hg @ 2002-08-29 19:45:20 by james]
james
parents: 872
diff changeset
263 */
13e47461d509 [xemacs-hg @ 2002-08-29 19:45:20 by james]
james
parents: 872
diff changeset
264 # define NSIG 32
13e47461d509 [xemacs-hg @ 2002-08-29 19:45:20 by james]
james
parents: 872
diff changeset
265 # else
13e47461d509 [xemacs-hg @ 2002-08-29 19:45:20 by james]
james
parents: 872
diff changeset
266 # define NSIG (SIGUSR2+1) /* guess how many elements are in sys_siglist... */
13e47461d509 [xemacs-hg @ 2002-08-29 19:45:20 by james]
james
parents: 872
diff changeset
267 # endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269
2651
3580ae2ce979 [xemacs-hg @ 2005-03-11 11:18:44 by malcolmp]
malcolmp
parents: 2286
diff changeset
270 /* HAVE_DECL_SYS_SIGLIST is determined by configure. On Linux, it seems,
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 configure incorrectly fails to find it, so s/linux.h defines
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 HAVE_SYS_SIGLIST. */
2655
4769b9c268eb [xemacs-hg @ 2005-03-12 11:00:20 by malcolmp]
malcolmp
parents: 2651
diff changeset
273 #if (!defined(HAVE_DECL_SYS_SIGLIST) || !HAVE_DECL_SYS_SIGLIST ) && !defined (HAVE_SYS_SIGLIST)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
274 extern const char *sys_siglist[];
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 #ifdef SIGDANGER
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 SIGTYPE memory_warning_signal (int sig);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
281 #if defined (WIN32_NATIVE) || defined (CYGWIN_BROKEN_SIGNALS)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
282 typedef void (__cdecl *mswindows_sighandler) (int);
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
283
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
284 /* Prototypes for signal functions, see win32.c */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
285 int mswindows_sighold (int nsig);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
286 int mswindows_sigrelse (int nsig);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
287 int mswindows_sigpause (int nsig);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
288 int mswindows_raise (int nsig);
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
289 mswindows_sighandler mswindows_sigset (int sig, mswindows_sighandler handler);
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
290
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
291 #endif /* defined (WIN32_NATIVE) || defined (CYGWIN_BROKEN_SIGNALS) */
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
292
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
293 signal_handler_t set_timeout_signal (int signal_number,
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
294 signal_handler_t action);
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 442
diff changeset
295
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
297 #endif /* INCLUDED_syssignal_h_ */