]> git.ipfire.org Git - thirdparty/bash.git/blame - trap.h
small change to brace expansion to inhibit some error messages; changes to printf...
[thirdparty/bash.git] / trap.h
CommitLineData
726f6388
JA
1/* trap.h -- data structures used in the trap mechanism. */
2
b2613ad1 3/* Copyright (C) 1993-2023 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 48/* Flags values for decode_signal() */
39feef01 49#define DSIG_SIGPREFIX 0x01 /* don't allow `SIG' PREFIX */
d3a24ed2
CR
50#define DSIG_NOCASE 0x02 /* case-insensitive comparison */
51
64419627
CR
52/* A value which can never be the target of a trap handler. */
53#define IMPOSSIBLE_TRAP_HANDLER (SigHandler *)initialize_traps
54
d3a24ed2 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
64a7a624 63extern int trapped_signal_received;
ec157dfe
CR
64extern int wait_signal_received;
65extern int running_trap;
c4a2e374 66extern int trap_return_context;
ec157dfe 67extern int trap_saved_exit_value;
e34adc2c 68extern int suppress_debug_trap_verbose;
64a7a624 69
726f6388 70/* Externally-visible functions declared in trap.c. */
81e3a4fb
CR
71extern void initialize_traps (void);
72
73extern void run_pending_traps (void);
74
75extern void queue_sigchld_trap (int);
81e3a4fb 76extern void set_impossible_sigchld_trap (void);
b2613ad1 77extern void set_sigchld_trap (const char *);
81e3a4fb 78
b2613ad1
CR
79extern void set_debug_trap (const char *);
80extern void set_error_trap (const char *);
81extern void set_return_trap (const char *);
81e3a4fb 82
877ff726
CR
83extern void uw_set_error_trap (void *);
84extern void uw_maybe_set_sigchld_trap (void *);
85extern void uw_maybe_set_debug_trap (void *);
86extern void uw_maybe_set_error_trap (void *);
87extern void uw_maybe_set_return_trap (void *);
81e3a4fb 88
b2613ad1
CR
89extern void set_sigint_trap (const char *);
90extern void set_signal (int, const char *);
81e3a4fb
CR
91
92extern void restore_default_signal (int);
93extern void ignore_signal (int);
94extern int run_exit_trap (void);
95extern void run_trap_cleanup (int);
96extern int run_debug_trap (void);
97extern void run_error_trap (void);
98extern void run_return_trap (void);
99
100extern void free_trap_strings (void);
101extern void reset_signal_handlers (void);
102extern void restore_original_signals (void);
103extern void restore_traps (void);
104
105extern void get_original_signal (int);
106extern void get_all_original_signals (void);
107
108extern char *signal_name (int);
109
b2613ad1 110extern int decode_signal (const char *, int);
81e3a4fb
CR
111extern void run_interrupt_trap (int);
112extern int maybe_call_trap_handler (int);
113extern int signal_is_special (int);
114extern int signal_is_trapped (int);
115extern int signal_is_pending (int);
116extern int signal_is_ignored (int);
117extern int signal_is_hard_ignored (int);
118extern void set_signal_hard_ignored (int);
119extern void set_signal_ignored (int);
a5d2617c
CR
120extern void set_signal_async_ignored (int);
121extern int signal_is_async_ignored (int);
81e3a4fb
CR
122extern int signal_in_progress (int);
123
124extern void set_trap_state (int);
125
126extern int next_pending_trap (int);
127extern int first_pending_trap (void);
128extern void clear_pending_traps (void);
129extern int any_signals_trapped (void);
130extern void check_signals (void);
131extern void check_signals_and_traps (void);
55a5a4ac 132
ccc6cda3 133#endif /* _TRAP_H_ */