Module Name:    src
Committed By:   rillig
Date:           Thu Jun 22 16:59:17 UTC 2023

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

Log Message:
make: unclutter string matching code


To generate a diff of this commit:
cvs rdiff -u -r1.96 -r1.97 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.96 src/usr.bin/make/str.c:1.97
--- src/usr.bin/make/str.c:1.96	Thu Jun 22 16:32:09 2023
+++ src/usr.bin/make/str.c	Thu Jun 22 16:59:17 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: str.c,v 1.96 2023/06/22 16:32:09 rillig Exp $	*/
+/*	$NetBSD: str.c,v 1.97 2023/06/22 16:59:17 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.96 2023/06/22 16:32:09 rillig Exp $");
+MAKE_RCSID("$NetBSD: str.c,v 1.97 2023/06/22 16:59:17 rillig Exp $");
 
 
 static HashTable interned_strings;
@@ -323,11 +323,10 @@ in_range(char e1, char c, char e2)
 bool
 Str_Match(const char *str, const char *pat)
 {
-	enum { START, SEEN_ASTERISK, END } state;
 	const char *fixed_str, *fixed_pat;
-	bool matched;
+	bool asterisk, matched;
 
-	state = START;
+	asterisk = false;
 	fixed_str = str;
 	fixed_pat = pat;
 
@@ -380,28 +379,23 @@ match_fixed_length:
 	matched = true;
 
 match_done:
-	switch (state) {
-	case START:
+	if (!asterisk) {
 		if (!matched)
 			return false;
 		if (*pat == '\0')
 			return *str == '\0';
-		state = SEEN_ASTERISK;
-		break;
-	default:
+		asterisk = true;
+	} else {
 		if (!matched) {
 			fixed_str++;
 			goto match_fixed_length;
 		}
 		if (*pat == '\0') {
-			size_t match_len = (size_t)(str - fixed_str);
-			fixed_str = str + strlen(str) - match_len;
-			state = END;
+			if (*str == '\0')
+				return true;
+			fixed_str += strlen(str);
 			goto match_fixed_length;
 		}
-		break;
-	case END:
-		return matched;
 	}
 
 	while (*pat == '*')

Reply via email to