72 |
#define EXSHELLPROC 2 /* execute a shell procedure */ |
#define EXSHELLPROC 2 /* execute a shell procedure */ |
73 |
#define EXEXEC 3 /* command execution failed */ |
#define EXEXEC 3 /* command execution failed */ |
74 |
#define EXEXIT 4 /* exit the shell */ |
#define EXEXIT 4 /* exit the shell */ |
|
#define EXSIG 5 /* trapped signal in wait(1) */ |
|
75 |
|
|
76 |
|
|
77 |
/* |
/* |
83 |
|
|
84 |
extern int suppressint; |
extern int suppressint; |
85 |
extern volatile sig_atomic_t intpending; |
extern volatile sig_atomic_t intpending; |
|
extern int exsig; |
|
86 |
|
|
87 |
#define barrier() ({ __asm__ __volatile__ ("": : :"memory"); }) |
#define barrier() ({ __asm__ __volatile__ ("": : :"memory"); }) |
88 |
#define INTOFF \ |
#define INTOFF \ |
118 |
}) |
}) |
119 |
#define CLEAR_PENDING_INT intpending = 0 |
#define CLEAR_PENDING_INT intpending = 0 |
120 |
#define int_pending() intpending |
#define int_pending() intpending |
|
#define EXSIGON() \ |
|
|
({ \ |
|
|
exsig++; \ |
|
|
barrier(); \ |
|
|
if (pendingsigs) \ |
|
|
exraise(EXSIG); \ |
|
|
0; \ |
|
|
}) |
|
|
/* EXSIG is turned off by evalbltin(). */ |
|
121 |
|
|
122 |
void exraise(int) __attribute__((__noreturn__)); |
void exraise(int) __attribute__((__noreturn__)); |
123 |
#ifdef USE_NORETURN |
#ifdef USE_NORETURN |