summaryrefslogtreecommitdiff
path: root/Completion/Unix/Command/_su
diff options
context:
space:
mode:
authordana <dana@dana.is>2020-03-11 16:26:41 -0500
committerdana <dana@dana.is>2020-03-11 16:26:41 -0500
commit359e0dae2bded75eebf7fe3b3cf919e1dd44c333 (patch)
treee177397b30d61ffbb61658c894e7d5a4c821ee72 /Completion/Unix/Command/_su
parent0d7f888945bd487d6458807684883b22dc3b31b8 (diff)
downloadzsh-359e0dae2bded75eebf7fe3b3cf919e1dd44c333.tar.gz
zsh-359e0dae2bded75eebf7fe3b3cf919e1dd44c333.zip
45424: completion: Add **/sbin to PATH when completing commands like sudo
* Update _command_names to add **/sbin to PATH when not otherwise overridden and _comp_priv_prefix is set. This ensures that, on systems where unprivileged users don't have **/sbin in their PATHs, we can still complete those commands when they try to run them with e.g. sudo * Update functions for privilege-gaining commands to use the aforementioned mechanism * Fix some other minor issues in _pfexec and _doas Changes from the posted diff: * Fix a minor redundancy in _doas * Add _c_p_p=( '' ) hack to _su
Diffstat (limited to 'Completion/Unix/Command/_su')
-rw-r--r--Completion/Unix/Command/_su6
1 files changed, 6 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_su b/Completion/Unix/Command/_su
index 032f867f4..066f5c3b6 100644
--- a/Completion/Unix/Command/_su
+++ b/Completion/Unix/Command/_su
@@ -63,6 +63,12 @@ if (( $words[(i)-] < CURRENT )); then
norm=2
fi
+# This is set so that _command_names will understand that we're completing for
+# a privileged command, but _call_program won't actually prepend anything to
+# commands if gain-privileges is enabled (which would be undesirable here since
+# su always prompts for a password). We delay setting it until this point so it
+# doesn't cause issues for the check above
+local -a _comp_priv_prefix=( '' )
_arguments $args ${(e)first} "*:shell arguments:= ->rest" && return
usr=${${(Q)line[norm]}/--/root}