summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Shahaf <d.s@daniel.shahaf.name>2016-11-24 07:02:11 +0000
committerDaniel Shahaf <d.s@daniel.shahaf.name>2016-11-28 07:16:39 +0000
commit1955cceec79107b6571646b695d334df8e4a6cd8 (patch)
tree4acf7ec7315d5361561254e1d2088886342c2c47
parenta81f280bfa185ba1df9c5ffee535631e4f1736f4 (diff)
downloadzsh-1955cceec79107b6571646b695d334df8e4a6cd8.tar.gz
zsh-1955cceec79107b6571646b695d334df8e4a6cd8.zip
40011: Make $_comp_priv_prefix only declared when required, and use that to have chgrp offer all groups under doas, ssh, etc as well.
-rw-r--r--ChangeLog8
-rw-r--r--Completion/Base/Core/_main_complete4
-rw-r--r--Completion/Solaris/Command/_pfexec1
-rw-r--r--Completion/Solaris/Command/_zlogin3
-rw-r--r--Completion/Unix/Command/_chown4
-rw-r--r--Completion/Unix/Command/_doas1
-rw-r--r--Completion/Unix/Command/_sudo1
7 files changed, 17 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 53dcc07de..1c0d3673c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2016-11-28 Daniel Shahaf <d.s@daniel.shahaf.name>
+ * 40011: Completion/Base/Core/_main_complete,
+ Completion/Solaris/Command/_pfexec,
+ Completion/Solaris/Command/_zlogin,
+ Completion/Unix/Command/_chown, Completion/Unix/Command/_doas,
+ Completion/Unix/Command/_sudo: Make $_comp_priv_prefix only
+ declared when required, and use that to have chgrp offer all
+ groups under doas, ssh, etc as well.
+
* 40010: Src/builtin.c, Test/A02alias.ztst: builtins: Say
'bad option: +x', not 'bad option: -x', when +x was passed.
diff --git a/Completion/Base/Core/_main_complete b/Completion/Base/Core/_main_complete
index c292ce7d7..aa2486236 100644
--- a/Completion/Base/Core/_main_complete
+++ b/Completion/Base/Core/_main_complete
@@ -38,7 +38,9 @@ local func funcs ret=1 tmp _compskip format nm call match min max i num\
_saved_colors="$ZLS_COLORS" \
_saved_colors_set=${+ZLS_COLORS} \
_ambiguous_color=''
-local -a _comp_priv_prefix
+# Hide any '_comp_priv_prefix' variable that happens to be defined in the calling scope.
+local _comp_priv_prefix
+unset _comp_priv_prefix
# _precommand sets this to indicate we are following a precommand modifier
local -a precommands
diff --git a/Completion/Solaris/Command/_pfexec b/Completion/Solaris/Command/_pfexec
index 2afaf317b..2519c3cdc 100644
--- a/Completion/Solaris/Command/_pfexec
+++ b/Completion/Solaris/Command/_pfexec
@@ -22,6 +22,7 @@ _privset() {
}
_pfexec() {
+ local -a _comp_priv_prefix
_arguments \
'-P[privileges to acquire]:privspec:_privset' \
'(-):command name: _command_names -e' \
diff --git a/Completion/Solaris/Command/_zlogin b/Completion/Solaris/Command/_zlogin
index 065f55b03..74cbafe82 100644
--- a/Completion/Solaris/Command/_zlogin
+++ b/Completion/Solaris/Command/_zlogin
@@ -1,9 +1,8 @@
#compdef zlogin
# Synced with the Nevada build 162 man page
-local -a _comp_priv_prefix
-
_zlogin() {
+ local -a _comp_priv_prefix
_arguments -s \
'-E[Disable escape character]' \
'-e[Specify escape character]:character:' \
diff --git a/Completion/Unix/Command/_chown b/Completion/Unix/Command/_chown
index 641b5a773..5750c65ab 100644
--- a/Completion/Unix/Command/_chown
+++ b/Completion/Unix/Command/_chown
@@ -45,8 +45,8 @@ _arguments -C -s "$args[@]" '*:files:->files' && ret=0
case $state in
owner)
if [[ $service = chgrp ]] || compset -P '*[:.]'; then
- if (( EGID && $+commands[groups] && ! $+funcstack[(r)_sudo] )); then # except for root
- _wanted groups expl 'group' compadd $(groups) && return 0
+ if (( EGID && $+commands[groups] && ! $+_comp_priv_prefix )); then # except for sudo
+ _wanted groups expl 'group' compadd -- $(groups) && return 0
fi
_groups && ret=0
else
diff --git a/Completion/Unix/Command/_doas b/Completion/Unix/Command/_doas
index b36388ead..94395557c 100644
--- a/Completion/Unix/Command/_doas
+++ b/Completion/Unix/Command/_doas
@@ -1,6 +1,7 @@
#compdef doas
local environ e cmd
+local -a _comp_priv_prefix
zstyle -a ":completion:${curcontext}:" environ environ
diff --git a/Completion/Unix/Command/_sudo b/Completion/Unix/Command/_sudo
index 0a212b723..aa7a1a498 100644
--- a/Completion/Unix/Command/_sudo
+++ b/Completion/Unix/Command/_sudo
@@ -4,6 +4,7 @@ setopt localoptions extended_glob
local environ e cmd
local -a args
+local -a _comp_priv_prefix
zstyle -a ":completion:${curcontext}:" environ environ