Str_Match: fix closure tests for [^] and add unit-test.
This commit is contained in:
parent
47bf9afcdc
commit
63284db849
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: str.c,v 1.37 2017/04/11 17:30:13 sjg Exp $ */
|
||||
/* $NetBSD: str.c,v 1.38 2017/04/21 22:15:44 sjg Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1988, 1989, 1990, 1993
|
||||
@ -69,14 +69,14 @@
|
||||
*/
|
||||
|
||||
#ifndef MAKE_NATIVE
|
||||
static char rcsid[] = "$NetBSD: str.c,v 1.37 2017/04/11 17:30:13 sjg Exp $";
|
||||
static char rcsid[] = "$NetBSD: str.c,v 1.38 2017/04/21 22:15:44 sjg Exp $";
|
||||
#else
|
||||
#include <sys/cdefs.h>
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)str.c 5.8 (Berkeley) 6/1/90";
|
||||
#else
|
||||
__RCSID("$NetBSD: str.c,v 1.37 2017/04/11 17:30:13 sjg Exp $");
|
||||
__RCSID("$NetBSD: str.c,v 1.38 2017/04/21 22:15:44 sjg Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif
|
||||
@ -382,8 +382,11 @@ Str_Match(const char *string, const char *pattern)
|
||||
} else
|
||||
nomatch = 0;
|
||||
for (;;) {
|
||||
if ((*pattern == ']') || (*pattern == 0))
|
||||
return(nomatch);
|
||||
if ((*pattern == ']') || (*pattern == 0)) {
|
||||
if (nomatch)
|
||||
break;
|
||||
return(0);
|
||||
}
|
||||
if (*pattern == *string)
|
||||
break;
|
||||
if (pattern[1] == '-') {
|
||||
@ -400,7 +403,7 @@ Str_Match(const char *string, const char *pattern)
|
||||
}
|
||||
++pattern;
|
||||
}
|
||||
if (nomatch)
|
||||
if (nomatch && (*pattern != ']') && (*pattern != 0))
|
||||
return 0;
|
||||
while ((*pattern != ']') && (*pattern != 0))
|
||||
++pattern;
|
||||
|
@ -16,4 +16,5 @@ LIB=e X_LIBS:M*/lib${LIB}.a:tu is "/TMP/LIBE.A"
|
||||
Mscanner=OK
|
||||
Upper=One Two Three Four
|
||||
Lower=five six seven
|
||||
nose=One Three five
|
||||
exit status 0
|
||||
|
@ -31,3 +31,4 @@ LIST= One Two Three Four five six seven
|
||||
check-cclass:
|
||||
@echo Upper=${LIST:M[A-Z]*}
|
||||
@echo Lower=${LIST:M[^A-Z]*}
|
||||
@echo nose=${LIST:M[^s]*[ex]}
|
||||
|
Loading…
Reference in New Issue
Block a user