Module Name:    src
Committed By:   rillig
Date:           Tue Jul 28 00:01:13 UTC 2020

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

Log Message:
make(1): remove redundant ApplyModifiersState.termc


To generate a diff of this commit:
cvs rdiff -u -r1.350 -r1.351 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.350 src/usr.bin/make/var.c:1.351
--- src/usr.bin/make/var.c:1.350	Mon Jul 27 23:56:15 2020
+++ src/usr.bin/make/var.c	Tue Jul 28 00:01:13 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.350 2020/07/27 23:56:15 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.351 2020/07/28 00:01:13 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: var.c,v 1.350 2020/07/27 23:56:15 rillig Exp $";
+static char rcsid[] = "$NetBSD: var.c,v 1.351 2020/07/28 00:01:13 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.350 2020/07/27 23:56:15 rillig Exp $");
+__RCSID("$NetBSD: var.c,v 1.351 2020/07/28 00:01:13 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -2040,7 +2040,6 @@ VarStrftime(const char *fmt, int zulu, t
  * They parse the modifier (often until the next colon) and store the
  * updated position for the parser into st->next.
  * They take the st->val and generate st->newVal from it.
- * On success, they set st->termc to *st->next, redundantly.
  * On failure, many of them update st->missing_delim.
  */
 typedef struct {
@@ -2056,7 +2055,6 @@ typedef struct {
 				 * to the expression */
     const char *next;		/* The position where parsing continues
 				 * after the current modifier. */
-    char termc;			/* Character which terminated scan */
     char missing_delim;		/* For error reporting */
 
     Byte	sep;		/* Word separator in expansions */
@@ -2107,8 +2105,6 @@ ApplyModifier_Loop(const char *mod, Appl
 	return FALSE;
     }
 
-    st->termc = *st->next;
-
     args.eflags = st->eflags & (VARE_UNDEFERR | VARE_WANTRES);
     int prev_sep = st->sep;
     st->sep = ' ';		/* XXX: this is inconsistent */
@@ -2174,7 +2170,6 @@ ApplyModifier_Defined(const char *mod, A
     }
 
     st->next = p;
-    st->termc = *st->next;
 
     if (st->v->flags & VAR_JUNK)
 	st->v->flags |= VAR_KEEP;
@@ -2205,7 +2200,6 @@ ApplyModifier_Gmtime(const char *mod, Ap
 	st->next = mod + 6;
     }
     st->newVal = VarStrftime(st->val, 1, utc);
-    st->termc = *st->next;
     return TRUE;
 }
 
@@ -2228,7 +2222,6 @@ ApplyModifier_Localtime(const char *mod,
 	st->next = mod + 9;
     }
     st->newVal = VarStrftime(st->val, 0, utc);
-    st->termc = *st->next;
     return TRUE;
 }
 
@@ -2243,7 +2236,6 @@ ApplyModifier_Hash(const char *mod, Appl
 
     st->newVal = VarHash(st->val);
     st->next = mod + 4;
-    st->termc = *st->next;
     return TRUE;
 }
 
@@ -2264,7 +2256,6 @@ ApplyModifier_Path(const char *mod, Appl
     if (!st->newVal)
 	st->newVal = bmake_strdup(st->v->name);
     st->next = mod + 1;
-    st->termc = *st->next;
 }
 
 /* :!cmd! */
@@ -2290,7 +2281,6 @@ ApplyModifier_Exclam(const char *mod, Ap
     if (emsg)
 	Error(emsg, st->val);
 
-    st->termc = *st->next;
     if (st->v->flags & VAR_JUNK)
 	st->v->flags |= VAR_KEEP;
     return TRUE;
@@ -2315,7 +2305,6 @@ ApplyModifier_Range(const char *mod, App
 	st->next = mod + 5;
     }
     st->newVal = VarRange(st->val, n);
-    st->termc = *st->next;
     return TRUE;
 }
 
@@ -2351,7 +2340,6 @@ ApplyModifier_Match(const char *mod, App
 	}
     }
     st->next = p;
-    st->termc = *st->next;
     const char *endpat = st->next;
 
     char *pattern;
@@ -2451,7 +2439,6 @@ ApplyModifier_Subst(const char * const m
 	break;
     }
 
-    st->termc = *st->next;
     st->newVal = ModifyWords(st->ctxt, st->sep, oneBigWord, st->val,
 			     ModifyWord_Subst, &args);
 
@@ -2504,8 +2491,6 @@ ApplyModifier_Regex(const char *mod, App
 	break;
     }
 
-    st->termc = *st->next;
-
     int error = regcomp(&args.re, re, REG_EXTENDED);
     free(re);
     if (error) {
@@ -2581,7 +2566,6 @@ ApplyModifier_ToSep(const char *sep, App
 	return FALSE;		/* Found ":ts<unrecognised><unrecognised>". */
     }
 
-    st->termc = *st->next;
     st->newVal = ModifyWords(st->ctxt, st->sep, st->oneBigWord, st->val,
 			     ModifyWord_Copy, NULL);
     return TRUE;
@@ -2606,24 +2590,20 @@ ApplyModifier_To(const char *mod, ApplyM
 	st->newVal = ModifyWords(st->ctxt, st->sep, st->oneBigWord, st->val,
 				 ModifyWord_Realpath, NULL);
 	st->next = mod + 2;
-	st->termc = *st->next;
     } else if (mod[1] == 'u') {
 	char *dp = bmake_strdup(st->val);
 	for (st->newVal = dp; *dp; dp++)
 	    *dp = toupper((unsigned char)*dp);
 	st->next = mod + 2;
-	st->termc = *st->next;
     } else if (mod[1] == 'l') {
 	char *dp = bmake_strdup(st->val);
 	for (st->newVal = dp; *dp; dp++)
 	    *dp = tolower((unsigned char)*dp);
 	st->next = mod + 2;
-	st->termc = *st->next;
     } else if (mod[1] == 'W' || mod[1] == 'w') {
 	st->oneBigWord = mod[1] == 'W';
 	st->newVal = st->val;
 	st->next = mod + 2;
-	st->termc = *st->next;
     } else {
 	/* Found ":t<unrecognised>:" or ":t<unrecognised><endc>". */
 	return FALSE;
@@ -2725,7 +2705,6 @@ ApplyModifier_Words(const char *mod, App
     st->newVal = VarSelectWords(st->sep, st->oneBigWord, st->val, first, last);
 
 ok:
-    st->termc = *st->next;
     free(estr);
     return 0;
 
@@ -2743,12 +2722,10 @@ ApplyModifier_Order(const char *mod, App
     st->next = mod + 1;	/* skip to the rest in any case */
     if (mod[1] == st->endc || mod[1] == ':') {
 	otype = 's';
-	st->termc = *st->next;
     } else if ((mod[1] == 'r' || mod[1] == 'x') &&
 	       (mod[2] == st->endc || mod[2] == ':')) {
 	otype = mod[1];
 	st->next = mod + 2;
-	st->termc = *st->next;
     } else {
 	return FALSE;
     }
@@ -2790,7 +2767,7 @@ ApplyModifier_IfElse(const char *mod, Ap
 	return FALSE;
     }
 
-    st->termc = *--st->next;
+    st->next--;
     if (cond_rc == COND_INVALID) {
 	Error("Bad conditional expression `%s' in %s?%s:%s",
 	    st->v->name, st->v->name, then_expr, else_expr);
@@ -2884,7 +2861,7 @@ ApplyModifier_Assign(const char *mod, Ap
 	return 'c';
     }
 
-    st->termc = *--st->next;
+    st->next--;
 
     if (st->eflags & VARE_WANTRES) {
 	switch (op[0]) {
@@ -2935,7 +2912,6 @@ ApplyModifier_Remember(const char *mod, 
 	st->next = mod + 1;
     }
     st->newVal = st->val;
-    st->termc = *st->next;
     return TRUE;
 }
 
@@ -2988,7 +2964,7 @@ ApplyModifier_SysV(const char *mod, Appl
      * SYSV modifications happen through the whole
      * string. Note the pattern is anchored at the end.
      */
-    st->termc = *--st->next;
+    st->next--;
     if (lhs[0] == '\0' && *st->val == '\0') {
 	st->newVal = st->val;	/* special case */
     } else {
@@ -3076,7 +3052,7 @@ ApplyModifiers(char *val, const char * c
 {
     ApplyModifiersState st = {
 	startc, endc, v, ctxt, eflags,
-	val, NULL, NULL, '\0', '\0', ' ', FALSE
+	val, NULL, NULL, '\0', ' ', FALSE
     };
 
     const char *p = tstr;
@@ -3171,7 +3147,6 @@ ApplyModifiers(char *val, const char * c
 		    st.v->flags |= VAR_KEEP;
 		st.newVal = bmake_strdup(st.v->name);
 		st.next = p + 1;
-		st.termc = *st.next;
 		break;
 	    }
 	case 'P':
@@ -3229,7 +3204,6 @@ ApplyModifiers(char *val, const char * c
 	    if (p[1] == st.endc || p[1] == ':') {
 		st.newVal = VarQuote(st.val, modifier == 'q');
 		st.next = p + 1;
-		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3238,7 +3212,6 @@ ApplyModifiers(char *val, const char * c
 		st.newVal = ModifyWords(st.ctxt, st.sep, st.oneBigWord,
 					st.val, ModifyWord_Tail, NULL);
 		st.next = p + 1;
-		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3247,7 +3220,6 @@ ApplyModifiers(char *val, const char * c
 		st.newVal = ModifyWords(st.ctxt, st.sep, st.oneBigWord,
 					st.val, ModifyWord_Head, NULL);
 		st.next = p + 1;
-		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3256,7 +3228,6 @@ ApplyModifiers(char *val, const char * c
 		st.newVal = ModifyWords(st.ctxt, st.sep, st.oneBigWord,
 					st.val, ModifyWord_Suffix, NULL);
 		st.next = p + 1;
-		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3265,7 +3236,6 @@ ApplyModifiers(char *val, const char * c
 		st.newVal = ModifyWords(st.ctxt, st.sep, st.oneBigWord,
 					st.val, ModifyWord_Root, NULL);
 		st.next = p + 1;
-		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3281,7 +3251,6 @@ ApplyModifiers(char *val, const char * c
 	    if (p[1] == st.endc || p[1] == ':') {
 		st.newVal = VarUniq(st.val);
 		st.next = p + 1;
-		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3296,7 +3265,6 @@ ApplyModifiers(char *val, const char * c
 		} else
 		    st.newVal = varNoError;
 		st.next = p + 2;
-		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3317,7 +3285,6 @@ ApplyModifiers(char *val, const char * c
 			 *st.next != '\0';
 			 st.next++)
 			continue;
-		    st.termc = *st.next;
 		    st.newVal = var_Error;
 		}
 	    }
@@ -3337,11 +3304,11 @@ ApplyModifiers(char *val, const char * c
 		*freePtr = st.val;
 	    }
 	}
-	if (st.termc == '\0' && st.endc != '\0') {
+	if (*st.next == '\0' && st.endc != '\0') {
 	    Error("Unclosed variable specification (expecting '%c') "
 		"for \"%s\" (value \"%s\") modifier %c",
 		st.endc, st.v->name, st.val, modifier);
-	} else if (st.termc == ':') {
+	} else if (*st.next == ':') {
 	    st.next++;
 	}
 	p = st.next;

Reply via email to