Module Name: src Committed By: kre Date: Fri Jun 22 17:22:34 UTC 2018
Modified Files: src/bin/sh: expand.c Log Message: When matching a char class ([[:name:]]) in a pattern (for filename expansion, case patterrns, etc) do not force '[' to be a member of every class. Before this fix, try: case [ in [[:alpha:]]) echo Huh\?;; esac XXX pullup-8 (Perhaps -7 as well, though that shell version has much more relevant bugs than this one.) This bug is not in -6 as that has no charclass support. To generate a diff of this commit: cvs rdiff -u -r1.121 -r1.122 src/bin/sh/expand.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/bin/sh/expand.c diff -u src/bin/sh/expand.c:1.121 src/bin/sh/expand.c:1.122 --- src/bin/sh/expand.c:1.121 Fri Oct 6 21:09:45 2017 +++ src/bin/sh/expand.c Fri Jun 22 17:22:34 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: expand.c,v 1.121 2017/10/06 21:09:45 kre Exp $ */ +/* $NetBSD: expand.c,v 1.122 2018/06/22 17:22:34 kre Exp $ */ /*- * Copyright (c) 1991, 1993 @@ -37,7 +37,7 @@ #if 0 static char sccsid[] = "@(#)expand.c 8.5 (Berkeley) 5/15/95"; #else -__RCSID("$NetBSD: expand.c,v 1.121 2017/10/06 21:09:45 kre Exp $"); +__RCSID("$NetBSD: expand.c,v 1.122 2018/06/22 17:22:34 kre Exp $"); #endif #endif /* not lint */ @@ -1777,8 +1777,10 @@ patmatch(const char *pattern, const char } if (c == '[' && *p == ':') { found |= match_charclass(p, chr, &end); - if (end != NULL) + if (end != NULL) { p = end; + continue; + } } if (c == CTLESC) c = *p++;