Module Name:    src
Committed By:   rillig
Date:           Tue Jul 21 20:08:44 UTC 2020

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

Log Message:
make(1): remove unnecessary VarSelectWords_t struct


To generate a diff of this commit:
cvs rdiff -u -r1.289 -r1.290 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/var.c
diff -u src/usr.bin/make/var.c:1.289 src/usr.bin/make/var.c:1.290
--- src/usr.bin/make/var.c:1.289	Mon Jul 20 21:33:13 2020
+++ src/usr.bin/make/var.c	Tue Jul 21 20:08:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.289 2020/07/20 21:33:13 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.290 2020/07/21 20:08:44 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: var.c,v 1.289 2020/07/20 21:33:13 rillig Exp $";
+static char rcsid[] = "$NetBSD: var.c,v 1.290 2020/07/21 20:08:44 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)var.c	8.3 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: var.c,v 1.289 2020/07/20 21:33:13 rillig Exp $");
+__RCSID("$NetBSD: var.c,v 1.290 2020/07/21 20:08:44 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -289,12 +289,6 @@ typedef struct {
 } VarREPattern;
 #endif
 
-/* struct passed to VarSelectWords() for ":[start..end]" */
-typedef struct {
-    int		start;		/* first word to select */
-    int		end;		/* last word to select */
-} VarSelectWords_t;
-
 #define BROPEN	'{'
 #define BRCLOSE	'}'
 #define PROPEN	'('
@@ -1565,7 +1559,7 @@ VarLoopExpand(GNode *ctx, const char *wo
  */
 static char *
 VarSelectWords(GNode *ctx MAKE_ATTR_UNUSED, Var_Parse_State *vpstate,
-	       const char *str, VarSelectWords_t *seldata)
+	       const char *str, int first, int last)
 {
     SepBuf buf;
     char **av;			/* word list */
@@ -1592,21 +1586,21 @@ VarSelectWords(GNode *ctx MAKE_ATTR_UNUS
      * the positive equivalents (-1 gets converted to argc, -2 gets
      * converted to (argc-1), etc.).
      */
-    if (seldata->start < 0)
-	seldata->start = ac + seldata->start + 1;
-    if (seldata->end < 0)
-	seldata->end = ac + seldata->end + 1;
+    if (first < 0)
+	first += ac + 1;
+    if (last < 0)
+	last += ac + 1;
 
     /*
      * We avoid scanning more of the list than we need to.
      */
-    if (seldata->start > seldata->end) {
-	start = MIN(ac, seldata->start) - 1;
-	end = MAX(0, seldata->end - 1);
+    if (first > last) {
+	start = MIN(ac, first) - 1;
+	end = MAX(0, last - 1);
 	step = -1;
     } else {
-	start = MAX(0, seldata->start - 1);
-	end = MIN(ac, seldata->end);
+	start = MAX(0, first - 1);
+	end = MIN(ac, last);
 	step = 1;
     }
 
@@ -2763,19 +2757,18 @@ ApplyModifier_Words(ApplyModifiersState 
      * We expect estr to contain a single integer for :[N], or two integers
      * separated by ".." for :[start..end].
      */
-    VarSelectWords_t seldata = { 0, 0 };
-
     char *ep;
-    seldata.start = strtol(estr, &ep, 0);
+    int first = strtol(estr, &ep, 0);
+    int last;
     if (ep == estr)		/* Found junk instead of a number */
 	goto bad_modifier;
 
     if (ep[0] == '\0') {	/* Found only one integer in :[N] */
-	seldata.end = seldata.start;
+	last = first;
     } else if (ep[0] == '.' && ep[1] == '.' && ep[2] != '\0') {
 	/* Expecting another integer after ".." */
 	ep += 2;
-	seldata.end = strtol(ep, &ep, 0);
+	last = strtol(ep, &ep, 0);
 	if (ep[0] != '\0')	/* Found junk after ".." */
 	    goto bad_modifier;
     } else
@@ -2785,7 +2778,7 @@ ApplyModifier_Words(ApplyModifiersState 
      * Now seldata is properly filled in, but we still have to check for 0 as
      * a special case.
      */
-    if (seldata.start == 0 && seldata.end == 0) {
+    if (first == 0 && last == 0) {
 	/* ":[0]" or perhaps ":[0..0]" */
 	st->parsestate.oneBigWord = TRUE;
 	st->newStr = st->nstr;
@@ -2793,11 +2786,11 @@ ApplyModifier_Words(ApplyModifiersState 
     }
 
     /* ":[0..N]" or ":[N..0]" */
-    if (seldata.start == 0 || seldata.end == 0)
+    if (first == 0 || last == 0)
 	goto bad_modifier;
 
     /* Normal case: select the words described by seldata. */
-    st->newStr = VarSelectWords(st->ctxt, &st->parsestate, st->nstr, &seldata);
+    st->newStr = VarSelectWords(st->ctxt, &st->parsestate, st->nstr, first, last);
 
 ok:
     st->termc = *st->cp;

Reply via email to