diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | Doc/Zsh/params.yo | 5 | ||||
-rw-r--r-- | Src/lex.c | 4 | ||||
-rw-r--r-- | Test/A04redirect.ztst | 3 | ||||
-rw-r--r-- | Test/D06subscript.ztst | 20 |
5 files changed, 17 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog index 681fd10e9..0d68f729f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-10-03 Peter Stephenson <p.w.stephenson@ntlworld.com> + + * users/17310: Doc/Zsh/params.yo, Src/lex.c, Test/A04redirect.ztst, + Test/D06subscript.ztst: back off users/17304 owing to problem + with [ command, document problem, and test the case that needs + to work. + 2012-10-02 Peter Stephenson <pws@csr.com> * users/17304: Src/lex.c, Test/D06subscript.ztst: angle brackets @@ -207,5 +214,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.5731 $ +* $Revision: 1.5732 $ ***************************************************** diff --git a/Doc/Zsh/params.yo b/Doc/Zsh/params.yo index bf9a68ba8..b7b7750ff 100644 --- a/Doc/Zsh/params.yo +++ b/Doc/Zsh/params.yo @@ -182,7 +182,10 @@ to the matching closing one is considered to be a list of flags, as in The flags tt(s), tt(n) and tt(b) take an argument; the delimiter is shown below as `tt(:)', but any character, or the matching pairs `tt(LPAR())...tt(RPAR())', `tt({)...tt(})', `tt([)...tt(])', or -`tt(<)...tt(>)', may be used. +`tt(<)...tt(>)', may be used, but note that `tt(<)...tt(>)' can only be +used if the subscript is inside a double quoted expression or a +parameter substitution enclosed in braces as otherwise the expression is +interpreted as a redirection. The flags currently understood are: diff --git a/Src/lex.c b/Src/lex.c index d02b3885a..1cf3611c9 100644 --- a/Src/lex.c +++ b/Src/lex.c @@ -1218,7 +1218,7 @@ gettokstr(int c, int sub) c = Comma; break; case LX2_OUTANG: - if (in_brace_param || sub || brct) + if (in_brace_param || sub) break; e = hgetc(); if (e != '(') { @@ -1255,7 +1255,7 @@ gettokstr(int c, int sub) break; } lexstop = 0; - if (in_brace_param || sub || brct) + if (in_brace_param || sub) break; goto brk; case LX2_EQUALS: diff --git a/Test/A04redirect.ztst b/Test/A04redirect.ztst index 3911b0629..d3c0a4a99 100644 --- a/Test/A04redirect.ztst +++ b/Test/A04redirect.ztst @@ -441,3 +441,6 @@ 0:failed assignment on non-posix-special, POSIX_BUILTINS >output ?zsh: read-only variable: foo + + [</dev/null ] +1:check behaviour with square brackets diff --git a/Test/D06subscript.ztst b/Test/D06subscript.ztst index f91d62f2f..cffca742e 100644 --- a/Test/D06subscript.ztst +++ b/Test/D06subscript.ztst @@ -249,23 +249,3 @@ string[0]=! 1:Can't set only element zero of string ?(eval):1: string: assignment to invalid subscript range - - string="Life,+like+a+dome+of+many-colour'd+glass" - for delims in "()" "{}" "[]" "<>"; do - eval 'print ${string[(ws'$delims[1]'+'$delims[2]')2]}' - eval 'print $string[(ws'$delims[1]'+'$delims[2]')3]' - eval 'print "$string[(ws'$delims[1]'+'$delims[2]')4]"' - done -0:Check matched delimiters in subscripts ->like ->a ->dome ->like ->a ->dome ->like ->a ->dome ->like ->a ->dome |