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;