32954 plus new test: [[ ... = ...(#q...) ]] shouldn't force a glob.

The (#q...) expression should simply be removed to leave a normal pattern
as before
This commit is contained in:
Peter Stephenson 2014-08-04 19:52:50 +01:00
parent b516dc37ac
commit 6116f1dafa
3 changed files with 10 additions and 4 deletions

View file

@ -1,5 +1,9 @@
2014-08-04 Peter Stephenson <p.w.stephenson@ntlworld.com>
* 32954 (plus new test): Src/cond.c, Test/D02glob.ztst:
(#q) on patterns with [[ ... = ... ] and [[ ... != ... ]]
shouldn't force a glob, it should simply be ignored.
* unposted: Src/subst.c: remove unused variables.
2014-08-04 Mikael Magnusson <mikachu@gmail.com>

View file

@ -297,8 +297,7 @@ evalcond(Estate state, char *fromtest)
right = dupstring(opat = ecrawstr(state->prog, state->pc,
&htok));
if (htok)
cond_subst(&right, !fromtest);
singsub(&right);
save = (!(state->prog->flags & EF_HEAP) &&
!strcmp(opat, right) && pprog != dummy_patprog2);

View file

@ -533,14 +533,12 @@
cd glob.tmp
[[ -n a*(#qN) ]] && print File beginning with a
[[ -z z*(#qN) ]] && print No file beginning with z
[[ "a b c" = ?(#q) ]] && print Multiple files matched
setopt nonomatch
[[ -n z*(#q) ]] && print Normal string if nullglob not set
)
0:Force glob expansion in conditions using (#q)
>File beginning with a
>No file beginning with z
>Multiple files matched
>Normal string if nullglob not set
(){ print $#@ } glob.tmp/dir*(Y1)
@ -562,3 +560,8 @@
>Globs before last path component
>Respects qualifiers
>Argument required
[[ "ce fichier n'existe pas" = (#b)ce\ (f[^ ]#)\ *s(#q./) ]]
print $match[1]
0:(#q) is ignored completely in conditional pattern matching
>fichier