Module Name:    src
Committed By:   rillig
Date:           Sun Nov  8 19:53:11 UTC 2020

Modified Files:
        src/usr.bin/make: arch.c cond.c parse.c suff.c var.c

Log Message:
make(1): clean up code related to VarEvalFlags

Mention VARE_WANTRES before VARE_UNDEFERR since the latter depends on
the former.

In ApplyModifier_Assign, VARE_KEEP_DOLLAR doesn't have to be removed
from eflags since ParseModifierPart does this already.

In EvalUndefined, testing for VARE_WANTRES is redundant if VARE_UNDEFERR
is already set.


To generate a diff of this commit:
cvs rdiff -u -r1.174 -r1.175 src/usr.bin/make/arch.c
cvs rdiff -u -r1.186 -r1.187 src/usr.bin/make/cond.c
cvs rdiff -u -r1.435 -r1.436 src/usr.bin/make/parse.c
cvs rdiff -u -r1.234 -r1.235 src/usr.bin/make/suff.c
cvs rdiff -u -r1.681 -r1.682 src/usr.bin/make/var.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/arch.c
diff -u src/usr.bin/make/arch.c:1.174 src/usr.bin/make/arch.c:1.175
--- src/usr.bin/make/arch.c:1.174	Sun Nov  8 09:15:19 2020
+++ src/usr.bin/make/arch.c	Sun Nov  8 19:53:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: arch.c,v 1.174 2020/11/08 09:15:19 rillig Exp $	*/
+/*	$NetBSD: arch.c,v 1.175 2020/11/08 19:53:11 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -125,7 +125,7 @@
 #include "config.h"
 
 /*	"@(#)arch.c	8.2 (Berkeley) 1/2/94"	*/
-MAKE_RCSID("$NetBSD: arch.c,v 1.174 2020/11/08 09:15:19 rillig Exp $");
+MAKE_RCSID("$NetBSD: arch.c,v 1.175 2020/11/08 19:53:11 rillig Exp $");
 
 typedef struct List ArchList;
 typedef struct ListNode ArchListNode;
@@ -210,7 +210,7 @@ Arch_ParseArchive(char **pp, GNodeList *
 	    Boolean isError;
 
 	    /* XXX: is expanded twice: once here and once below */
-	    (void)Var_Parse(&nested_p, ctxt, VARE_UNDEFERR|VARE_WANTRES,
+	    (void)Var_Parse(&nested_p, ctxt, VARE_WANTRES | VARE_UNDEFERR,
 			    &result, &result_freeIt);
 	    /* TODO: handle errors */
 	    isError = result == var_Error;
@@ -226,7 +226,7 @@ Arch_ParseArchive(char **pp, GNodeList *
 
     *cp++ = '\0';
     if (expandLibName) {
-	(void)Var_Subst(libName, ctxt, VARE_UNDEFERR|VARE_WANTRES, &libName);
+	(void)Var_Subst(libName, ctxt, VARE_WANTRES | VARE_UNDEFERR, &libName);
 	/* TODO: handle errors */
 	libName_freeIt = libName;
     }
@@ -254,7 +254,7 @@ Arch_ParseArchive(char **pp, GNodeList *
 		Boolean isError;
 		const char *nested_p = cp;
 
-		(void)Var_Parse(&nested_p, ctxt, VARE_UNDEFERR|VARE_WANTRES,
+		(void)Var_Parse(&nested_p, ctxt, VARE_WANTRES | VARE_UNDEFERR,
 				&result, &freeIt);
 		/* TODO: handle errors */
 		isError = result == var_Error;
@@ -307,7 +307,7 @@ Arch_ParseArchive(char **pp, GNodeList *
 	    char *sacrifice;
 	    char *oldMemName = memName;
 
-	    (void)Var_Subst(memName, ctxt, VARE_UNDEFERR|VARE_WANTRES,
+	    (void)Var_Subst(memName, ctxt, VARE_WANTRES | VARE_UNDEFERR,
 			    &memName);
 	    /* TODO: handle errors */
 

Index: src/usr.bin/make/cond.c
diff -u src/usr.bin/make/cond.c:1.186 src/usr.bin/make/cond.c:1.187
--- src/usr.bin/make/cond.c:1.186	Sun Nov  8 19:24:19 2020
+++ src/usr.bin/make/cond.c	Sun Nov  8 19:53:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: cond.c,v 1.186 2020/11/08 19:24:19 rillig Exp $	*/
+/*	$NetBSD: cond.c,v 1.187 2020/11/08 19:53:11 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -93,7 +93,7 @@
 #include "dir.h"
 
 /*	"@(#)cond.c	8.2 (Berkeley) 1/2/94"	*/
-MAKE_RCSID("$NetBSD: cond.c,v 1.186 2020/11/08 19:24:19 rillig Exp $");
+MAKE_RCSID("$NetBSD: cond.c,v 1.187 2020/11/08 19:53:11 rillig Exp $");
 
 /*
  * The parsing of conditional expressions is based on this grammar:
@@ -443,7 +443,7 @@ CondParser_String(CondParser *par, Boole
 	    continue;
 	case '$':
 	    /* if we are in quotes, an undefined variable is ok */
-	    eflags = doEval && !qt ? VARE_UNDEFERR | VARE_WANTRES :
+	    eflags = doEval && !qt ? VARE_WANTRES | VARE_UNDEFERR :
 		     doEval ? VARE_WANTRES :
 		     VARE_NONE;
 

Index: src/usr.bin/make/parse.c
diff -u src/usr.bin/make/parse.c:1.435 src/usr.bin/make/parse.c:1.436
--- src/usr.bin/make/parse.c:1.435	Sun Nov  8 16:58:33 2020
+++ src/usr.bin/make/parse.c	Sun Nov  8 19:53:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: parse.c,v 1.435 2020/11/08 16:58:33 rillig Exp $	*/
+/*	$NetBSD: parse.c,v 1.436 2020/11/08 19:53:11 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -117,7 +117,7 @@
 #include "pathnames.h"
 
 /*	"@(#)parse.c	8.3 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: parse.c,v 1.435 2020/11/08 16:58:33 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.436 2020/11/08 19:53:11 rillig Exp $");
 
 /* types and constants */
 
@@ -1063,8 +1063,8 @@ ParseDependencyTargetWord(/*const*/ char
 	    const char *nested_val;
 	    void *freeIt;
 
-	    (void)Var_Parse(&nested_p, VAR_CMDLINE, VARE_UNDEFERR|VARE_WANTRES,
-			    &nested_val, &freeIt);
+	    (void)Var_Parse(&nested_p, VAR_CMDLINE,
+			    VARE_WANTRES | VARE_UNDEFERR, &nested_val, &freeIt);
 	    /* TODO: handle errors */
 	    free(freeIt);
 	    cp += nested_p - cp;
@@ -1944,7 +1944,7 @@ VarAssign_EvalShell(const char *name, co
     cmd = uvalue;
     if (strchr(cmd, '$') != NULL) {
 	char *ecmd;
-	(void)Var_Subst(cmd, VAR_CMDLINE, VARE_UNDEFERR | VARE_WANTRES, &ecmd);
+	(void)Var_Subst(cmd, VAR_CMDLINE, VARE_WANTRES | VARE_UNDEFERR, &ecmd);
 	/* TODO: handle errors */
 	cmd = cmd_freeIt = ecmd;
     }
@@ -3032,7 +3032,7 @@ ParseDependency(char *line)
      * Var_Parse does not print any parse errors in such a case.
      * It simply returns the special empty string var_Error,
      * which cannot be detected in the result of Var_Subst. */
-    eflags = DEBUG(LINT) ? VARE_WANTRES : VARE_UNDEFERR | VARE_WANTRES;
+    eflags = DEBUG(LINT) ? VARE_WANTRES : VARE_WANTRES | VARE_UNDEFERR;
     (void)Var_Subst(line, VAR_CMDLINE, eflags, &expanded_line);
     /* TODO: handle errors */
 

Index: src/usr.bin/make/suff.c
diff -u src/usr.bin/make/suff.c:1.234 src/usr.bin/make/suff.c:1.235
--- src/usr.bin/make/suff.c:1.234	Sun Nov  8 00:28:52 2020
+++ src/usr.bin/make/suff.c	Sun Nov  8 19:53:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: suff.c,v 1.234 2020/11/08 00:28:52 rillig Exp $	*/
+/*	$NetBSD: suff.c,v 1.235 2020/11/08 19:53:11 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -129,7 +129,7 @@
 #include "dir.h"
 
 /*	"@(#)suff.c	8.4 (Berkeley) 3/21/94"	*/
-MAKE_RCSID("$NetBSD: suff.c,v 1.234 2020/11/08 00:28:52 rillig Exp $");
+MAKE_RCSID("$NetBSD: suff.c,v 1.235 2020/11/08 19:53:11 rillig Exp $");
 
 #define SUFF_DEBUG0(text) DEBUG0(SUFF, text)
 #define SUFF_DEBUG1(fmt, arg1) DEBUG1(SUFF, fmt, arg1)
@@ -1132,7 +1132,7 @@ SuffExpandChildren(GNodeListNode *cln, G
     }
 
     SUFF_DEBUG1("Expanding \"%s\"...", cgn->name);
-    (void)Var_Subst(cgn->name, pgn, VARE_UNDEFERR|VARE_WANTRES, &cp);
+    (void)Var_Subst(cgn->name, pgn, VARE_WANTRES | VARE_UNDEFERR, &cp);
     /* TODO: handle errors */
 
     {
@@ -1183,7 +1183,7 @@ SuffExpandChildren(GNodeListNode *cln, G
 
 		    /* XXX: Why VARE_WANTRES when the result is not used? */
 		    (void)Var_Parse(&nested_p, pgn,
-				    VARE_UNDEFERR|VARE_WANTRES,
+				    VARE_WANTRES | VARE_UNDEFERR,
 				    &junk, &freeIt);
 		    /* TODO: handle errors */
 		    if (junk == var_Error) {

Index: src/usr.bin/make/var.c
diff -u src/usr.bin/make/var.c:1.681 src/usr.bin/make/var.c:1.682
--- src/usr.bin/make/var.c:1.681	Sun Nov  8 19:24:19 2020
+++ src/usr.bin/make/var.c	Sun Nov  8 19:53:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.681 2020/11/08 19:24:19 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.682 2020/11/08 19:53:11 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -130,7 +130,7 @@
 #include "metachar.h"
 
 /*	"@(#)var.c	8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: var.c,v 1.681 2020/11/08 19:24:19 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.682 2020/11/08 19:53:11 rillig Exp $");
 
 #define VAR_DEBUG1(fmt, arg1) DEBUG1(VAR, fmt, arg1)
 #define VAR_DEBUG2(fmt, arg1, arg2) DEBUG2(VAR, fmt, arg1, arg2)
@@ -2977,9 +2977,6 @@ ok:
     }
 
     delim = st->startc == '(' ? ')' : '}';
-    /* TODO: Add test for using the ::= modifier in a := assignment line.
-     * Probably st->eflags should be passed down without VARE_KEEP_DOLLAR
-     * here. */
     res = ParseModifierPart(pp, delim, st->eflags, st, &val, NULL, NULL, NULL);
     if (res != VPR_OK)
 	return AMR_CLEANUP;
@@ -3657,9 +3654,7 @@ EvalUndefined(Boolean dynamic, const cha
 	return VPR_OK;
     }
 
-    if ((eflags & VARE_UNDEFERR) && (eflags & VARE_WANTRES) &&
-	DEBUG(LINT))
-    {
+    if ((eflags & VARE_UNDEFERR) && DEBUG(LINT)) {
 	Parse_Error(PARSE_FATAL, "Variable \"%s\" is undefined", varname);
 	free(varname);
 	*out_val = var_Error;

Reply via email to