Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make Str_Match: fix closure tests for [^] and add un...



details:   https://anonhg.NetBSD.org/src/rev/4dd85ceb1552
branches:  trunk
changeset: 823399:4dd85ceb1552
user:      sjg <sjg%NetBSD.org@localhost>
date:      Fri Apr 21 22:15:44 2017 +0000

description:
Str_Match: fix closure tests for [^] and add unit-test.

diffstat:

 usr.bin/make/str.c                   |  15 +++++++++------
 usr.bin/make/unit-tests/modmatch.exp |   1 +
 usr.bin/make/unit-tests/modmatch.mk  |   1 +
 3 files changed, 11 insertions(+), 6 deletions(-)

diffs (66 lines):

diff -r debacb3779b8 -r 4dd85ceb1552 usr.bin/make/str.c
--- a/usr.bin/make/str.c        Fri Apr 21 21:13:04 2017 +0000
+++ b/usr.bin/make/str.c        Fri Apr 21 22:15:44 2017 +0000
@@ -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 @@
                        } 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 @@
                                }
                                ++pattern;
                        }
-                       if (nomatch)
+                       if (nomatch && (*pattern != ']') && (*pattern != 0))
                                return 0;
                        while ((*pattern != ']') && (*pattern != 0))
                                ++pattern;
diff -r debacb3779b8 -r 4dd85ceb1552 usr.bin/make/unit-tests/modmatch.exp
--- a/usr.bin/make/unit-tests/modmatch.exp      Fri Apr 21 21:13:04 2017 +0000
+++ b/usr.bin/make/unit-tests/modmatch.exp      Fri Apr 21 22:15:44 2017 +0000
@@ -16,4 +16,5 @@
 Mscanner=OK
 Upper=One Two Three Four
 Lower=five six seven
+nose=One Three five
 exit status 0
diff -r debacb3779b8 -r 4dd85ceb1552 usr.bin/make/unit-tests/modmatch.mk
--- a/usr.bin/make/unit-tests/modmatch.mk       Fri Apr 21 21:13:04 2017 +0000
+++ b/usr.bin/make/unit-tests/modmatch.mk       Fri Apr 21 22:15:44 2017 +0000
@@ -31,3 +31,4 @@
 check-cclass:
        @echo Upper=${LIST:M[A-Z]*}
        @echo Lower=${LIST:M[^A-Z]*}
+       @echo nose=${LIST:M[^s]*[ex]}



Home | Main Index | Thread Index | Old Index