diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2014-02-27 09:26:23 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2014-02-27 09:29:09 -0800 |
commit | 8b16e90a248d70aef687931370f8ef7c1f2bc4ef (patch) | |
tree | 4e2a6cd5988c2469b969f6ee1f784f18cbb82fa5 /tests/posix-bracket | |
parent | 0b5003dd7c485bceba81cf8ffa901f3646c2417d (diff) | |
download | grep-8b16e90a248d70aef687931370f8ef7c1f2bc4ef.tar.gz |
grep: fix multiple bugs with bracket expressions
* NEWS: Document this.
* src/dfa.c (using_simple_locale): New function.
(parse_bracket_exp): Handle bracket expressions like [a-[.z.]]
correctly. Don't assume that dfaexec handles expressions like
[^a-z] correctly, as they can match multiple characters in some
locales.
* tests/posix-bracket: New file.
* tests/Makefile.am (TESTS): Add it.
Diffstat (limited to 'tests/posix-bracket')
-rwxr-xr-x | tests/posix-bracket | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/posix-bracket b/tests/posix-bracket new file mode 100755 index 00000000..d9d1d845 --- /dev/null +++ b/tests/posix-bracket @@ -0,0 +1,33 @@ +#!/bin/sh +# Check various bracket expressions in the POSIX locale. + +# Copyright 2014 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "${srcdir=.}/init.sh"; path_prepend_ ../src +LC_ALL=C +export LC_ALL + +fail=0 + +echo a >in || framework_failure_ +for bracketed in '[.a.]' '[.a.]-a' 'a-[.a.]' '[.a.]-[.a.]' \ + '[=a=]' '[:alpha:]'; do + grep "[$bracketed]" in >out || fail=1 + compare in out || fail=1 + grep "[^$bracketed]" in >out && fail=1 + compare /dev/null out || fail=1 +done +Exit $fail |