Brandon Williams <[email protected]> wrote:
> On 04/14, Brandon Williams wrote:
> > /*
> > + * restore default signal handlers here, in case
> > + * we catch a signal right before execve below
> > + */
> > + for (sig = 1; sig < NSIG; sig++) {
> > + sighandler_t old = signal(sig, SIG_DFL);
>
> So sighandler_t doesn't work on macOS. Is there a more portable lib
> that needs to be included for this to work?
Oops, maybe this works (only tested on GNU/Linux):
--- a/run-command.c
+++ b/run-command.c
@@ -675,7 +675,7 @@ int start_command(struct child_process *cmd)
* we catch a signal right before execve below
*/
for (sig = 1; sig < NSIG; sig++) {
- sighandler_t old = signal(sig, SIG_DFL);
+ void (*old)(int) = signal(sig, SIG_DFL);
/* ignored signals get reset to SIG_DFL on execve */
if (old == SIG_IGN)
Otherwise, maybe just casting to 'void *' is OK:
void *old = (void *)signal(sig, SIG_DFL);
if (old == (void *)SIG_IGN)
...
void *old = signal(sig, SIG_DFL);