Module Name:    src
Committed By:   rillig
Date:           Fri Dec 31 00:37:50 UTC 2021

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

Log Message:
make: eliminate type VarAssignParsed

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.605 -r1.606 src/usr.bin/make/parse.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/parse.c
diff -u src/usr.bin/make/parse.c:1.605 src/usr.bin/make/parse.c:1.606
--- src/usr.bin/make/parse.c:1.605	Fri Dec 31 00:18:06 2021
+++ src/usr.bin/make/parse.c	Fri Dec 31 00:37:50 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: parse.c,v 1.605 2021/12/31 00:18:06 rillig Exp $	*/
+/*	$NetBSD: parse.c,v 1.606 2021/12/31 00:37:50 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -109,7 +109,7 @@
 #include "pathnames.h"
 
 /*	"@(#)parse.c	8.3 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: parse.c,v 1.605 2021/12/31 00:18:06 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.606 2021/12/31 00:37:50 rillig Exp $");
 
 /* types and constants */
 
@@ -1639,23 +1639,16 @@ typedef struct VarAssign {
 	const char *value;	/* unexpanded */
 } VarAssign;
 
-typedef struct VarAssignParsed {
-	const char *nameStart;	/* unexpanded */
-	const char *nameEnd;	/* before operator adjustment */
-	const char *eq;		/* the '=' of the assignment operator */
-} VarAssignParsed;
-
 /*
  * Determine the assignment operator and adjust the end of the variable
  * name accordingly.
  */
-static void
-AdjustVarassignOp(const VarAssignParsed *pvar, const char *value,
-		  VarAssign *out_var)
+static VarAssign
+AdjustVarassignOp(const char *name, const char *nameEnd, const char *op,
+		  const char *value)
 {
-	const char *op = pvar->eq;
-	const char *const name = pvar->nameStart;
 	VarAssignOp type;
+	VarAssign va;
 
 	if (op > name && op[-1] == '+') {
 		op--;
@@ -1686,12 +1679,10 @@ AdjustVarassignOp(const VarAssignParsed 
 #endif
 	}
 
-	{
-		const char *nameEnd = pvar->nameEnd < op ? pvar->nameEnd : op;
-		out_var->varname = bmake_strsedup(pvar->nameStart, nameEnd);
-		out_var->op = type;
-		out_var->value = value;
-	}
+	va.varname = bmake_strsedup(name, nameEnd < op ? nameEnd : op);
+	va.op = type;
+	va.value = value;
+	return va;
 }
 
 /*
@@ -1710,7 +1701,9 @@ AdjustVarassignOp(const VarAssignParsed 
 static bool
 Parse_IsVar(const char *p, VarAssign *out_var)
 {
-	VarAssignParsed pvar;
+	const char *nameStart;
+	const char *nameEnd;
+	const char *eq;
 	const char *firstSpace = NULL;
 	int level = 0;
 
@@ -1722,10 +1715,10 @@ Parse_IsVar(const char *p, VarAssign *ou
 	 * ':sh' modifier. Of these two (nameEnd and op), the earlier one
 	 * determines the actual end of the variable name.
 	 */
-	pvar.nameStart = p;
+	nameStart = p;
 #ifdef CLEANUP
-	pvar.nameEnd = NULL;
-	pvar.eq = NULL;
+	nameEnd = NULL;
+	eq = NULL;
 #endif
 
 	/*
@@ -1759,19 +1752,19 @@ Parse_IsVar(const char *p, VarAssign *ou
 		}
 #endif
 		if (ch == '=') {
-			pvar.eq = p - 1;
-			pvar.nameEnd = firstSpace != NULL ? firstSpace : p - 1;
+			eq = p - 1;
+			nameEnd = firstSpace != NULL ? firstSpace : p - 1;
 			cpp_skip_whitespace(&p);
-			AdjustVarassignOp(&pvar, p, out_var);
+			*out_var = AdjustVarassignOp(nameStart, nameEnd, eq, p);
 			return true;
 		}
 		if (*p == '=' &&
 		    (ch == '+' || ch == ':' || ch == '?' || ch == '!')) {
-			pvar.eq = p;
-			pvar.nameEnd = firstSpace != NULL ? firstSpace : p;
+			eq = p;
+			nameEnd = firstSpace != NULL ? firstSpace : p;
 			p++;
 			cpp_skip_whitespace(&p);
-			AdjustVarassignOp(&pvar, p, out_var);
+			*out_var = AdjustVarassignOp(nameStart, nameEnd, eq, p);
 			return true;
 		}
 		if (firstSpace != NULL)

Reply via email to