Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/make make(1): clean up VarEvalFlags in the calls to ...
details: https://anonhg.NetBSD.org/src/rev/7c73812b15d0
branches: trunk
changeset: 945880:7c73812b15d0
user: rillig <rillig%NetBSD.org@localhost>
date: Sun Nov 08 19:24:19 2020 +0000
description:
make(1): clean up VarEvalFlags in the calls to Var_Parse and Var_Subst
There are only 3 flags, and some combinations don't even make sense.
VARE_UNDEFERR only makes sense if combined with VARE_WANTRES. If the
latter is not set, the variable expressions are only parsed, without
asking whether they are defined or not. Therefore, VARE_UNDEFERR cannot
have any effect in that case.
VARE_KEEP_DOLLAR is actively ignored by ParseModifierPart. In cases
where VARE_WANTRES is not set, this means that VARE_NONE can be passed,
which is easier to grasp than any bitset operations. This also gets rid
of a few type casts from enum to unsigned int that were necessary to
pass WARNS=6.
diffstat:
usr.bin/make/cond.c | 7 ++++---
usr.bin/make/var.c | 26 ++++++++++++--------------
2 files changed, 16 insertions(+), 17 deletions(-)
diffs (112 lines):
diff -r 3655f4e0ee81 -r 7c73812b15d0 usr.bin/make/cond.c
--- a/usr.bin/make/cond.c Sun Nov 08 18:27:14 2020 +0000
+++ b/usr.bin/make/cond.c Sun Nov 08 19:24:19 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: cond.c,v 1.185 2020/11/07 20:39:56 rillig Exp $ */
+/* $NetBSD: cond.c,v 1.186 2020/11/08 19:24:19 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.185 2020/11/07 20:39:56 rillig Exp $");
+MAKE_RCSID("$NetBSD: cond.c,v 1.186 2020/11/08 19:24:19 rillig Exp $");
/*
* The parsing of conditional expressions is based on this grammar:
@@ -248,7 +248,8 @@
* though perhaps we should...
*/
void *nestedVal_freeIt;
- VarEvalFlags eflags = VARE_UNDEFERR | (doEval ? VARE_WANTRES : 0);
+ VarEvalFlags eflags = doEval ? VARE_WANTRES | VARE_UNDEFERR
+ : VARE_NONE;
const char *nestedVal;
(void)Var_Parse(&p, VAR_CMDLINE, eflags, &nestedVal,
&nestedVal_freeIt);
diff -r 3655f4e0ee81 -r 7c73812b15d0 usr.bin/make/var.c
--- a/usr.bin/make/var.c Sun Nov 08 18:27:14 2020 +0000
+++ b/usr.bin/make/var.c Sun Nov 08 19:24:19 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: var.c,v 1.680 2020/11/08 18:27:14 rillig Exp $ */
+/* $NetBSD: var.c,v 1.681 2020/11/08 19:24:19 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.680 2020/11/08 18:27:14 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.681 2020/11/08 19:24:19 rillig Exp $");
#define VAR_DEBUG1(fmt, arg1) DEBUG1(VAR, fmt, arg1)
#define VAR_DEBUG2(fmt, arg1, arg2) DEBUG2(VAR, fmt, arg1, arg2)
@@ -2068,13 +2068,12 @@
{
struct ModifyWord_LoopArgs args;
char prev_sep;
- VarEvalFlags eflags = st->eflags & ~(unsigned)VARE_WANTRES;
VarParseResult res;
args.ctx = st->ctxt;
(*pp)++; /* Skip the first '@' */
- res = ParseModifierPart(pp, '@', eflags, st,
+ res = ParseModifierPart(pp, '@', VARE_NONE, st,
&args.tvar, NULL, NULL, NULL);
if (res != VPR_OK)
return AMR_CLEANUP;
@@ -2086,12 +2085,12 @@
return AMR_CLEANUP;
}
- res = ParseModifierPart(pp, '@', eflags, st,
+ res = ParseModifierPart(pp, '@', VARE_NONE, st,
&args.str, NULL, NULL, NULL);
if (res != VPR_OK)
return AMR_CLEANUP;
- args.eflags = st->eflags & (VARE_UNDEFERR | VARE_WANTRES);
+ args.eflags = st->eflags & ~(unsigned)VARE_KEEP_DOLLAR;
prev_sep = st->sep;
st->sep = ' '; /* XXX: should be st->sep for consistency */
st->newVal = ModifyWords(st->val, ModifyWord_Loop, &args,
@@ -2110,11 +2109,10 @@
Buffer buf;
const char *p;
- VarEvalFlags eflags = st->eflags & ~(unsigned)VARE_WANTRES;
- if (st->eflags & VARE_WANTRES) {
+ VarEvalFlags eflags = VARE_NONE;
+ if (st->eflags & VARE_WANTRES)
if ((**pp == 'D') == !(st->exprFlags & VEF_UNDEF))
- eflags |= VARE_WANTRES;
- }
+ eflags = st->eflags;
Buf_Init(&buf);
p = *pp + 1;
@@ -2873,16 +2871,16 @@
VarParseResult res;
Boolean value = FALSE;
- VarEvalFlags then_eflags = st->eflags & ~(unsigned)VARE_WANTRES;
- VarEvalFlags else_eflags = st->eflags & ~(unsigned)VARE_WANTRES;
+ VarEvalFlags then_eflags = VARE_NONE;
+ VarEvalFlags else_eflags = VARE_NONE;
int cond_rc = COND_PARSE; /* anything other than COND_INVALID */
if (st->eflags & VARE_WANTRES) {
cond_rc = Cond_EvalCondition(st->v->name, &value);
if (cond_rc != COND_INVALID && value)
- then_eflags |= VARE_WANTRES;
+ then_eflags = st->eflags;
if (cond_rc != COND_INVALID && !value)
- else_eflags |= VARE_WANTRES;
+ else_eflags = st->eflags;
}
(*pp)++; /* skip past the '?' */
Home |
Main Index |
Thread Index |
Old Index