diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/lineedit.c | 12 | ||||
-rw-r--r-- | libbb/signals.c | 10 |
2 files changed, 21 insertions, 1 deletions
diff --git a/libbb/lineedit.c b/libbb/lineedit.c index b6fcd7af0..378f0900a 100644 --- a/libbb/lineedit.c +++ b/libbb/lineedit.c @@ -2309,6 +2309,16 @@ static int32_t reverse_i_search(int timeout) } #endif +static void sigaction2(int sig, struct sigaction *act) +{ + // Grr... gcc 8.1.1: + // "passing argument 3 to restrict-qualified parameter aliases with argument 2" + // dance around that... + struct sigaction *oact FIX_ALIASING; + oact = act; + sigaction(sig, act, oact); +} + /* maxsize must be >= 2. * Returns: * -1 on read errors or EOF, or on bare Ctrl-D, @@ -2419,7 +2429,7 @@ int FAST_FUNC read_line_input(line_input_t *st, const char *prompt, char *comman /* Install window resize handler (NB: after *all* init is complete) */ S.SIGWINCH_handler.sa_handler = win_changed; S.SIGWINCH_handler.sa_flags = SA_RESTART; - sigaction(SIGWINCH, &S.SIGWINCH_handler, &S.SIGWINCH_handler); + sigaction2(SIGWINCH, &S.SIGWINCH_handler); #endif read_key_buffer[0] = 0; while (1) { diff --git a/libbb/signals.c b/libbb/signals.c index 3f589321c..5a1544db7 100644 --- a/libbb/signals.c +++ b/libbb/signals.c @@ -31,6 +31,16 @@ int FAST_FUNC sigprocmask_allsigs(int how) return sigprocmask(how, &set, NULL); } +int FAST_FUNC sigprocmask_SIG_SETMASK(sigset_t *set) +{ + // Grr... gcc 8.1.1: + // "passing argument 3 to restrict-qualified parameter aliases with argument 2" + // dance around that... + sigset_t *oset FIX_ALIASING; + oset = set; + return sigprocmask(SIG_SETMASK, set, oset); +} + void FAST_FUNC bb_signals(int sigs, void (*f)(int)) { int sig_no = 0; |