Module Name: src Committed By: rillig Date: Fri Jun 11 14:42:52 UTC 2021
Modified Files: src/usr.bin/make: cond.c Log Message: make: clean up function names and documentation for conditions No functional change. To generate a diff of this commit: cvs rdiff -u -r1.265 -r1.266 src/usr.bin/make/cond.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/cond.c diff -u src/usr.bin/make/cond.c:1.265 src/usr.bin/make/cond.c:1.266 --- src/usr.bin/make/cond.c:1.265 Fri Jun 11 14:37:51 2021 +++ src/usr.bin/make/cond.c Fri Jun 11 14:42:52 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: cond.c,v 1.265 2021/06/11 14:37:51 rillig Exp $ */ +/* $NetBSD: cond.c,v 1.266 2021/06/11 14:42:52 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -95,7 +95,7 @@ #include "dir.h" /* "@(#)cond.c 8.2 (Berkeley) 1/2/94" */ -MAKE_RCSID("$NetBSD: cond.c,v 1.265 2021/06/11 14:37:51 rillig Exp $"); +MAKE_RCSID("$NetBSD: cond.c,v 1.266 2021/06/11 14:42:52 rillig Exp $"); /* * The parsing of conditional expressions is based on this grammar: @@ -467,12 +467,13 @@ CondParser_StringExpr(CondParser *par, c } /* - * Parse a string from a variable reference or an optionally quoted - * string. This is called for the lhs and rhs of string comparisons. + * Parse a string from a variable expression or an optionally quoted + * string. This is called for the left-hand and right-hand sides of + * comparisons. * * Results: * Returns the string, absent any quotes, or NULL on error. - * Sets out_quoted if the string was quoted. + * Sets out_quoted if the leaf was a quoted string literal. */ static void CondParser_Leaf(CondParser *par, bool doEval, bool strictLHS, @@ -540,7 +541,7 @@ CondParser_Leaf(CondParser *par, bool do got_str: str = FStr_InitOwn(buf.data); cleanup: - Buf_DoneData(&buf); + Buf_DoneData(&buf); /* XXX: memory leak on failure? */ *out_str = str; } @@ -824,11 +825,11 @@ CondParser_FuncCall(CondParser *par, boo } /* - * Parse a function call, a number, a variable expression or a string - * literal. + * Parse a comparison such as '${VAR} == "value"', or a simple leaf without + * operator, which is a number, a variable expression or a string literal. */ static Token -CondParser_LeafToken(CondParser *par, bool doEval) +CondParser_ComparisonOrLeaf(CondParser *par, bool doEval) { Token t; char *arg = NULL; @@ -849,6 +850,10 @@ CondParser_LeafToken(CondParser *par, bo * syntax would be invalid if we did "defined(a)" - so instead treat * as an expression. */ + /* + * XXX: Is it possible to have a variable expression evaluated twice + * at this point? + */ arglen = ParseFuncArg(par, &cp, doEval, NULL, &arg); cp1 = cp; cpp_skip_whitespace(&cp1); @@ -930,7 +935,7 @@ CondParser_Token(CondParser *par, bool d default: if (CondParser_FuncCall(par, doEval, &t)) return t; - return CondParser_LeafToken(par, doEval); + return CondParser_ComparisonOrLeaf(par, doEval); } }