]> git.ipfire.org Git - thirdparty/bash.git/blame - trap.h
Bash-5.2 patch 26: fix typo when specifying readline's custom color prefix
[thirdparty/bash.git] / trap.h
CommitLineData
726f6388
JA
1/* trap.h -- data structures used in the trap mechanism. */
2
74091dd4 3/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
726f6388
JA
4
5 This file is part of GNU Bash, the Bourne Again SHell.
6
3185942a
JA
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
3185942a
JA
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
3185942a
JA
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
b80f6443
JA
36#define DEFAULT_SIG SIG_DFL
37#define IGNORE_SIG SIG_IGN
726f6388 38
ccc6cda3 39/* Special shell trap names. */
b80f6443
JA
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 */
b80f6443 46#define BASH_NSIG NSIG+3
f73dda09 47
b80f6443 48/* Flags values for decode_signal() */
ac50fbac 49#define DSIG_SIGPREFIX 0x01 /* don't allow `SIG' PREFIX */
b80f6443
JA
50#define DSIG_NOCASE 0x02 /* case-insensitive comparison */
51
495aee44
CR
52/* A value which can never be the target of a trap handler. */
53#define IMPOSSIBLE_TRAP_HANDLER (SigHandler *)initialize_traps
54
b80f6443 55#define signal_object_p(x,f) (decode_signal (x,f) != NO_SIG)
726f6388 56
f73dda09
JA
57#define TRAP_STRING(s) \
58 (signal_is_trapped (s) && signal_is_ignored (s) == 0) ? trap_list[s] \
59 : (char *)NULL
60
ccc6cda3 61extern char *trap_list[];
726f6388 62
d233b485
CR
63extern int trapped_signal_received;
64extern int wait_signal_received;
65extern int running_trap;
66extern int trap_saved_exit_value;
8868edaf 67extern int suppress_debug_trap_verbose;
d233b485 68
726f6388 69/* Externally-visible functions declared in trap.c. */
8868edaf
CR
70extern void initialize_traps PARAMS((void));
71
72extern void run_pending_traps PARAMS((void));
73
74extern void queue_sigchld_trap PARAMS((int));
75extern void maybe_set_sigchld_trap PARAMS((char *));
76extern void set_impossible_sigchld_trap PARAMS((void));
77extern void set_sigchld_trap PARAMS((char *));
78
79extern void set_debug_trap PARAMS((char *));
80extern void set_error_trap PARAMS((char *));
81extern void set_return_trap PARAMS((char *));
82
83extern void maybe_set_debug_trap PARAMS((char *));
84extern void maybe_set_error_trap PARAMS((char *));
85extern void maybe_set_return_trap PARAMS((char *));
86
87extern void set_sigint_trap PARAMS((char *));
88extern void set_signal PARAMS((int, char *));
89
90extern void restore_default_signal PARAMS((int));
91extern void ignore_signal PARAMS((int));
92extern int run_exit_trap PARAMS((void));
93extern void run_trap_cleanup PARAMS((int));
94extern int run_debug_trap PARAMS((void));
95extern void run_error_trap PARAMS((void));
96extern void run_return_trap PARAMS((void));
97
98extern void free_trap_strings PARAMS((void));
99extern void reset_signal_handlers PARAMS((void));
100extern void restore_original_signals PARAMS((void));
74091dd4 101extern void restore_traps PARAMS((void));
8868edaf
CR
102
103extern void get_original_signal PARAMS((int));
104extern void get_all_original_signals PARAMS((void));
105
106extern char *signal_name PARAMS((int));
107
108extern int decode_signal PARAMS((char *, int));
109extern void run_interrupt_trap PARAMS((int));
110extern int maybe_call_trap_handler PARAMS((int));
111extern int signal_is_special PARAMS((int));
112extern int signal_is_trapped PARAMS((int));
113extern int signal_is_pending PARAMS((int));
114extern int signal_is_ignored PARAMS((int));
115extern int signal_is_hard_ignored PARAMS((int));
116extern void set_signal_hard_ignored PARAMS((int));
117extern void set_signal_ignored PARAMS((int));
118extern int signal_in_progress PARAMS((int));
119
120extern void set_trap_state PARAMS((int));
121
122extern int next_pending_trap PARAMS((int));
123extern int first_pending_trap PARAMS((void));
124extern void clear_pending_traps PARAMS((void));
125extern int any_signals_trapped PARAMS((void));
126extern void check_signals PARAMS((void));
127extern void check_signals_and_traps PARAMS((void));
ac50fbac 128
ccc6cda3 129#endif /* _TRAP_H_ */