Module Name:    src
Committed By:   rillig
Date:           Mon Dec  7 23:53:09 UTC 2020

Modified Files:
        src/usr.bin/make: job.c

Log Message:
make(1): replace signal handling macros with local functions


To generate a diff of this commit:
cvs rdiff -u -r1.341 -r1.342 src/usr.bin/make/job.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/make/job.c
diff -u src/usr.bin/make/job.c:1.341 src/usr.bin/make/job.c:1.342
--- src/usr.bin/make/job.c:1.341	Mon Dec  7 23:48:04 2020
+++ src/usr.bin/make/job.c	Mon Dec  7 23:53:09 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: job.c,v 1.341 2020/12/07 23:48:04 rillig Exp $	*/
+/*	$NetBSD: job.c,v 1.342 2020/12/07 23:53:09 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -143,7 +143,7 @@
 #include "trace.h"
 
 /*	"@(#)job.c	8.2 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: job.c,v 1.341 2020/12/07 23:48:04 rillig Exp $");
+MAKE_RCSID("$NetBSD: job.c,v 1.342 2020/12/07 23:53:09 rillig Exp $");
 
 /*
  * A shell defines how the commands are run.  All commands for a target are
@@ -2120,6 +2120,15 @@ Job_SetPrefix(void)
 	/* TODO: handle errors */
 }
 
+static void
+AddSig(int sig, SignalProc handler)
+{
+	if (bmake_signal(sig, SIG_IGN) != SIG_IGN) {
+		sigaddset(&caught_signals, sig);
+		(void)bmake_signal(sig, handler);
+	}
+}
+
 /* Initialize the process module. */
 void
 Job_Init(void)
@@ -2174,20 +2183,14 @@ Job_Init(void)
 	(void)bmake_signal(SIGCHLD, JobChildSig);
 	sigaddset(&caught_signals, SIGCHLD);
 
-#define ADDSIG(s, h)					\
-	if (bmake_signal(s, SIG_IGN) != SIG_IGN) {	\
-		sigaddset(&caught_signals, s);		\
-		(void)bmake_signal(s, h);		\
-	}
-
 	/*
 	 * Catch the four signals that POSIX specifies if they aren't ignored.
 	 * JobPassSig will take care of calling JobInterrupt if appropriate.
 	 */
-	ADDSIG(SIGINT, JobPassSig_int)
-	ADDSIG(SIGHUP, JobPassSig_term)
-	ADDSIG(SIGTERM, JobPassSig_term)
-	ADDSIG(SIGQUIT, JobPassSig_term)
+	AddSig(SIGINT, JobPassSig_int);
+	AddSig(SIGHUP, JobPassSig_term);
+	AddSig(SIGTERM, JobPassSig_term);
+	AddSig(SIGQUIT, JobPassSig_term);
 
 	/*
 	 * There are additional signals that need to be caught and passed if
@@ -2195,12 +2198,11 @@ Job_Init(void)
 	 * we're giving each job its own process group (since then it won't get
 	 * signals from the terminal driver as we own the terminal)
 	 */
-	ADDSIG(SIGTSTP, JobPassSig_suspend)
-	ADDSIG(SIGTTOU, JobPassSig_suspend)
-	ADDSIG(SIGTTIN, JobPassSig_suspend)
-	ADDSIG(SIGWINCH, JobCondPassSig)
-	ADDSIG(SIGCONT, JobContinueSig)
-#undef ADDSIG
+	AddSig(SIGTSTP, JobPassSig_suspend);
+	AddSig(SIGTTOU, JobPassSig_suspend);
+	AddSig(SIGTTIN, JobPassSig_suspend);
+	AddSig(SIGWINCH, JobCondPassSig);
+	AddSig(SIGCONT, JobContinueSig);
 
 	(void)Job_RunTarget(".BEGIN", NULL);
 	/* Create the .END node now, even though no code in the unit tests
@@ -2208,23 +2210,24 @@ Job_Init(void)
 	(void)Targ_GetEndNode();
 }
 
-static void JobSigReset(void)
+static void
+DelSig(int sig)
 {
-#define DELSIG(s)					\
-	if (sigismember(&caught_signals, s)) {		\
-		(void)bmake_signal(s, SIG_DFL);		\
-	}
+	if (sigismember(&caught_signals, sig))
+		(void)bmake_signal(sig, SIG_DFL);
+}
 
-	DELSIG(SIGINT)
-	DELSIG(SIGHUP)
-	DELSIG(SIGQUIT)
-	DELSIG(SIGTERM)
-	DELSIG(SIGTSTP)
-	DELSIG(SIGTTOU)
-	DELSIG(SIGTTIN)
-	DELSIG(SIGWINCH)
-	DELSIG(SIGCONT)
-#undef DELSIG
+static void JobSigReset(void)
+{
+	DelSig(SIGINT);
+	DelSig(SIGHUP);
+	DelSig(SIGQUIT);
+	DelSig(SIGTERM);
+	DelSig(SIGTSTP);
+	DelSig(SIGTTOU);
+	DelSig(SIGTTIN);
+	DelSig(SIGWINCH);
+	DelSig(SIGCONT);
 	(void)bmake_signal(SIGCHLD, SIG_DFL);
 }
 

Reply via email to