]> git.ipfire.org Git - thirdparty/bash.git/blame - trap.h
commit bash-20100218 snapshot
[thirdparty/bash.git] / trap.h
CommitLineData
726f6388
JA
1/* trap.h -- data structures used in the trap mechanism. */
2
012bac39 3/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
726f6388
JA
4
5 This file is part of GNU Bash, the Bourne Again SHell.
6
2e4498b3
CR
7 Bash is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
726f6388 11
2e4498b3
CR
12 Bash is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
726f6388 16
2e4498b3
CR
17 You should have received a copy of the GNU General Public License
18 along with Bash. If not, see <http://www.gnu.org/licenses/>.
19*/
726f6388 20
ccc6cda3
JA
21#if !defined (_TRAP_H_)
22#define _TRAP_H_
726f6388
JA
23
24#include "stdc.h"
25
26#if !defined (SIG_DFL)
d166f048 27#include "bashtypes.h"
726f6388
JA
28#include <signal.h>
29#endif /* SIG_DFL */
30
31#if !defined (NSIG)
32#define NSIG 64
33#endif /* !NSIG */
34
35#define NO_SIG -1
d3a24ed2
CR
36#define DEFAULT_SIG SIG_DFL
37#define IGNORE_SIG SIG_IGN
726f6388 38
ccc6cda3 39/* Special shell trap names. */
d3a24ed2
CR
40#define DEBUG_TRAP NSIG
41#define ERROR_TRAP NSIG+1
42#define RETURN_TRAP NSIG+2
43#define EXIT_TRAP 0
ccc6cda3 44
f73dda09 45/* system signals plus special bash traps */
d3a24ed2 46#define BASH_NSIG NSIG+3
f73dda09 47
d3a24ed2
CR
48/* Flags values for decode_signal() */
49#define DSIG_SIGPREFIX 0x01 /* don't alllow `SIG' PREFIX */
50#define DSIG_NOCASE 0x02 /* case-insensitive comparison */
51
52#define signal_object_p(x,f) (decode_signal (x,f) != NO_SIG)
726f6388 53
f73dda09
JA
54#define TRAP_STRING(s) \
55 (signal_is_trapped (s) && signal_is_ignored (s) == 0) ? trap_list[s] \
56 : (char *)NULL
57
ccc6cda3 58extern char *trap_list[];
726f6388
JA
59
60/* Externally-visible functions declared in trap.c. */
61extern void initialize_traps __P((void));
d3a24ed2 62
726f6388 63extern void run_pending_traps __P((void));
d3a24ed2 64
726f6388 65extern void maybe_set_sigchld_trap __P((char *));
ed35cb4a 66extern void set_impossible_sigchld_trap __P((void));
726f6388 67extern void set_sigchld_trap __P((char *));
d3a24ed2 68
ccc6cda3 69extern void set_debug_trap __P((char *));
f73dda09 70extern void set_error_trap __P((char *));
d3a24ed2
CR
71extern void set_return_trap __P((char *));
72
ccc6cda3 73extern void set_sigint_trap __P((char *));
726f6388 74extern void set_signal __P((int, char *));
d3a24ed2 75
726f6388
JA
76extern void restore_default_signal __P((int));
77extern void ignore_signal __P((int));
78extern int run_exit_trap __P((void));
ccc6cda3 79extern void run_trap_cleanup __P((int));
d3a24ed2 80extern int run_debug_trap __P((void));
f73dda09 81extern void run_error_trap __P((void));
d3a24ed2
CR
82extern void run_return_trap __P((void));
83
726f6388
JA
84extern void free_trap_strings __P((void));
85extern void reset_signal_handlers __P((void));
86extern void restore_original_signals __P((void));
87
88extern char *signal_name __P((int));
89
d3a24ed2 90extern int decode_signal __P((char *, int));
726f6388
JA
91extern void run_interrupt_trap __P((void));
92extern int maybe_call_trap_handler __P((int));
93extern int signal_is_trapped __P((int));
726f6388 94extern int signal_is_ignored __P((int));
ccc6cda3
JA
95extern int signal_is_special __P((int));
96extern void set_signal_ignored __P((int));
f75912ae 97extern int signal_in_progress __P((int));
726f6388 98
ccc6cda3 99#endif /* _TRAP_H_ */