diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2012-04-12 18:45:59 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2012-04-12 18:45:59 +0000 |
commit | 5e2fe3ca18887063f02a677baeb35eb669dec7eb (patch) | |
tree | cb3cc6d753d00c3908574096cfb2b8b98a6447a1 | |
parent | 4a4d9f3cbe72d3976f2df7053208c671c22c0410 (diff) | |
download | zsh-5e2fe3ca18887063f02a677baeb35eb669dec7eb.tar.gz zsh-5e2fe3ca18887063f02a677baeb35eb669dec7eb.tar.xz zsh-5e2fe3ca18887063f02a677baeb35eb669dec7eb.zip |
30388, 30389 (Stephane): zargs: handle zero-length arguments.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | Functions/Misc/zargs | 16 |
2 files changed, 14 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog index ad2d39e7f..8ae281ddf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-04-12 Peter Stephenson <p.w.stephenson@ntlworld.com> + + * 30388, 30389 (Stephane): Functions/Misc/zargs: handle + zero-length arguments. + 2012-04-09 Barton E. Schaefer <schaefer@zsh.org> * unposted: Test/D04parameter.ztst: hash seive needs more than 10 @@ -16164,5 +16169,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.5621 $ +* $Revision: 1.5622 $ ***************************************************** diff --git a/Functions/Misc/zargs b/Functions/Misc/zargs index 8350b1aba..71fd42835 100644 --- a/Functions/Misc/zargs +++ b/Functions/Misc/zargs @@ -167,14 +167,14 @@ if [[ $eof == -(e|-eof) ]]; then ((end=ARGC+1)) elif (( $#eof )); then end=$argv[(i)${eof##-(e|-eof=)}] else end=$argv[(i)--] fi -local -a args call command; command=( ${argv[end+1,-1]} ) +local -a args call command; command=( "${(@)argv[end+1,-1]}" ) if (( $opts[(I)-(null|0)] )) -then set -- ${(ps:\000:)argv[1,end-1]} -else set -- $argv[1,end-1] +then set -- "${(@ps:\000:)argv[1,end-1]}" +else set -- "${(@)argv[1,end-1]}" fi -if [[ -n $command ]] +if (( $#command )) then (( c = $#command - 1 )) else command=( print -r -- ) fi @@ -187,7 +187,7 @@ local execute=' then print -u2 -r -- "$call" fi eval "{ - \$call + \"\${(@)call}\" } $bg"' local ret=0 analyze=' case $? in @@ -275,11 +275,11 @@ do ((ARGC)) || break for (( end=l; end && ${(c)#argv[1,end]} > s; end/=2 )) { } (( end > n && ( end = n ) )) - args=( $argv[1,end] ) + args=( "${(@)argv[1,end]}" ) shift $((end > ARGC ? ARGC : end)) if (( $#i )) - then call=( ${command/$i/$args} ) - else call=( $command $args ) + then call=( "${(@)command/$i/$args}" ) + else call=( "${(@)command}" "${(@)args}" ) fi if (( ${(c)#call} > s )) then |