Module Name:    src
Committed By:   rillig
Date:           Sat Dec 16 21:26:07 UTC 2023

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

Log Message:
make: eliminate a local variable in Str_Match

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.99 -r1.100 src/usr.bin/make/str.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/str.c
diff -u src/usr.bin/make/str.c:1.99 src/usr.bin/make/str.c:1.100
--- src/usr.bin/make/str.c:1.99	Fri Jun 23 05:03:04 2023
+++ src/usr.bin/make/str.c	Sat Dec 16 21:26:07 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: str.c,v 1.99 2023/06/23 05:03:04 rillig Exp $	*/
+/*	$NetBSD: str.c,v 1.100 2023/12/16 21:26:07 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -71,7 +71,7 @@
 #include "make.h"
 
 /*	"@(#)str.c	5.8 (Berkeley) 6/1/90"	*/
-MAKE_RCSID("$NetBSD: str.c,v 1.99 2023/06/23 05:03:04 rillig Exp $");
+MAKE_RCSID("$NetBSD: str.c,v 1.100 2023/12/16 21:26:07 rillig Exp $");
 
 
 static HashTable interned_strings;
@@ -322,17 +322,13 @@ StrMatchResult
 Str_Match(const char *str, const char *pat)
 {
 	StrMatchResult res = { NULL, false };
-	const char *fixed_str, *fixed_pat;
-	bool asterisk, matched;
-
-	asterisk = false;
-	fixed_str = str;
-	fixed_pat = pat;
+	bool asterisk = false;
+	const char *fixed_str = str;
+	const char *fixed_pat = pat;
 
 match_fixed_length:
 	str = fixed_str;
 	pat = fixed_pat;
-	matched = false;
 	for (; *pat != '\0' && *pat != '*'; str++, pat++) {
 		if (*str == '\0')
 			return res;
@@ -350,7 +346,7 @@ match_fixed_length:
 			if (*pat == ']' || *pat == '\0') {
 				if (neg)
 					goto end_of_char_list;
-				goto match_done;
+				goto no_match;
 			}
 			if (*pat == *str)
 				goto end_of_char_list;
@@ -369,7 +365,7 @@ match_fixed_length:
 
 		end_of_char_list:
 			if (neg && *pat != ']' && *pat != '\0')
-				goto match_done;
+				goto no_match;
 			while (*pat != ']' && *pat != '\0')
 				pat++;
 			if (*pat == '\0')
@@ -380,42 +376,32 @@ match_fixed_length:
 		if (*pat == '\\')	/* match the next character exactly */
 			pat++;
 		if (*pat != *str)
-			goto match_done;
+			goto no_match;
 	}
-	matched = true;
 
-match_done:
-	if (!asterisk) {
-		if (!matched)
-			return res;
-		if (*pat == '\0') {
-			res.matched = *str == '\0';
-			return res;
-		}
+	if (*pat == '*') {
 		asterisk = true;
-	} else {
-		if (!matched) {
-			fixed_str++;
-			goto match_fixed_length;
-		}
+		while (*pat == '*')
+			pat++;
 		if (*pat == '\0') {
-			if (*str == '\0') {
-				res.matched = true;
-				return res;
-			}
-			fixed_str += strlen(str);
-			goto match_fixed_length;
+			res.matched = true;
+			return res;
 		}
+		fixed_str = str;
+		fixed_pat = pat;
+		goto match_fixed_length;
+	}
+	if (asterisk && *str != '\0') {
+		fixed_str += strlen(str);
+		goto match_fixed_length;
 	}
+	res.matched = *str == '\0';
+	return res;
 
-	while (*pat == '*')
-		pat++;
-	if (*pat == '\0') {
-		res.matched = true;
+no_match:
+	if (!asterisk)
 		return res;
-	}
-	fixed_str = str;
-	fixed_pat = pat;
+	fixed_str++;
 	goto match_fixed_length;
 }
 

Reply via email to