# 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 . # : ${TMPDIR:=/var/tmp} TESTDIR=${TMPDIR}/glob-test-$$ mkdir ${TESTDIR} cd $TESTDIR || { echo "$TESTDIR: cannot cd" >&2 exit 1 } matchfunc() { echo == LANG=$LANG == touch a p echo [[:alpha:] rm a p case l in [[:alpha:]) echo bad 1;; *) echo ok 1;; esac touch '[a' '[x' echo [[:alpha:] rm '[a' echo [[:alpha:] rm '[x' case [a in [[:alpha:]) echo ok 2;; *) echo bad 2;; esac case x in [[:aeioux:]) echo bad 2.1 ;; *) echo ok 2.1 ;; esac case [x in [[:alpha:]) echo bad 3;; *) echo ok 3;; esac # unclosed bracket char class expression just matches against ":alpha" case a in [[:alpha]) echo ok 4;; *) echo bad 4;; esac } echo invalid bracket expression export LANG=C matchfunc export LANG=en_US.UTF-8 matchfunc unset -f matchfunc matchfunc() { echo == LANG=$LANG == touch p # quoted character classes work as if they were unquoted now echo [[:alpha:]] echo [[:"alpha":]] rm -f p case a] in [[:aleph:]]) echo bad 1;; *) echo ok 1;; esac case a in [[:aleph:]]) echo bad 2;; *) echo ok 2;; esac case a] in [[:"alpha":]]) echo bad 3;; *) echo ok 3;; esac # Posix says quoted character class names work now case x in [[:"alpha":]]) echo ok 4;; *) echo bad 4;; esac case a in [abc[:foo:]]) echo ok 5;; *) echo bad 5 ;; esac case a in [[:foo:]abc]) echo ok 6;; *) echo bad 6 ;; esac } echo invalid character class export LANG=C matchfunc export LANG=en_US.UTF-8 matchfunc unset -f matchfunc matchfunc() { echo == LANG=$LANG == case h in [[.hyphen.]) echo bad 1;; *) echo ok 1;; esac case - in [[.hyphen.]]) echo ok 2;; *) echo bad 2;; esac case slash in [[.slash.]]) echo bad 3;; *) echo ok 3;; esac case a in [abc[.nonsense.]]) echo ok 4;; *) echo bad 4 ;; esac case a in [[.nonsense.]abc]) echo ok 5;; *) echo bad 5 ;; esac } echo invalid collating symbols export LANG=C matchfunc export LANG=en_US.UTF-8 matchfunc cd $OLDPWD rm -rf $TESTDIR