diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | Completion/BSD/Command/_kld | 43 | ||||
-rw-r--r-- | Completion/Unix/Command/_sysctl | 37 |
3 files changed, 69 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog index 6a2832f76..47aaec0ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2001-07-06 Oliver Kiddle <opk@zsh.org> + + * 15252 (and Akinori Musha: 15245): Completion/BSD/Command/_kld, + Completion/Unix/Command/_sysctl: Add exclusion lists and use + _multi_parts for BSD completion of sysctl. + 2001-07-06 Sven Wischnowsky <wischnow@zsh.org> * 15283: Completion/Unix/Type/_path_files: when looking for diff --git a/Completion/BSD/Command/_kld b/Completion/BSD/Command/_kld new file mode 100644 index 000000000..dd71f7a58 --- /dev/null +++ b/Completion/BSD/Command/_kld @@ -0,0 +1,43 @@ +#compdef kldload kldunload + +(( $+functions[_kld_module] )) || +_kld_module() { + local ret=1 + + compadd "$@" - /boot/kernel/*.ko(:t) /modules/*.ko(:t) && ret=0 + _files "$@" -g \*.ko && ret=0 + + return ret +} + +(( $+functions[_kld_unload] )) || +_kld_unload() { + compadd "$@" - $( /sbin/kldstat | awk '($1 ~ /^[0-9]/) { print $5 }' ) +} + +(( $+functions[_kld_unload_id] )) || +_kld_unload_id() { + compadd "$@" - $( /sbin/kldstat | awk '($1 ~ /^[0-9]/) { print $1 }' ) +} + +_kld() { + unset _cache_sysctlvars + + case "$service" in + kldload) + _arguments -s \ + '-v[be verbose]' \ + '*:module to load:_kld_module' + ;; + + kldunload) + _arguments -s \ + '-v[be verbose]' \ + '(-n)-i:module id to unload:_kld_unload_id' \ + '(-i)-n:module to unload:_kld_unload' \ + '*:module to unload:_kld_unload' + ;; + esac +} + +_kld "$@" diff --git a/Completion/Unix/Command/_sysctl b/Completion/Unix/Command/_sysctl index 4a2eaaf87..1ac0394e7 100644 --- a/Completion/Unix/Command/_sysctl +++ b/Completion/Unix/Command/_sysctl @@ -1,25 +1,28 @@ #compdef sysctl case $OSTYPE in - freebsd[0-4]*) - _arguments -s \ - '-a[list all]' \ - '-A[show all opaques (values suppressed)]' \ - '-b[binary output]' \ - '-n[show only variable values]' \ - '-w[write mode]' \ - '-X[show all opaques (entire values)]' \ - "*:sysctl variable:compadd ${words[(r)-w]:+-S =} $(sysctl -A | sed 's/:.*//')" + freebsd[0-4].*) + : ${(A)_cache_sysctlvars:=${${$(sysctl -A):#[^a-z]*}%%:*}} + _arguments -s -A "-*" \ + '(-w -X *)-a[list all]' \ + '(-w -X *)-A[show all opaques (values suppressed)]' \ + '(-w)-b[binary output]' \ + '(-w)-n[show only variable values]' \ + '(-a -A -b -n -X)-w[write mode]' \ + '(-a -A -w *)-X[show all opaques (entire values)]' \ + '(-a -A -X)*:sysctl variable:_multi_parts ${words[(r)-w]:+-S=} -i . _cache_sysctlvars' ;; - freebsd[5-9]*) - _arguments -s \ - '-a[list all]' \ + freebsd[5-9].*) + local -a sysctlvars + sysctlvars=( $(sysctl -aN) ) + _arguments -s -A "-*" \ + '(*)-a[list all]' \ '-b[binary output]' \ - '-N[show only variable names]' \ - '-n[show only variable values]' \ - '-o[show opaques as well (values suppressed)]' \ - '-x[show opaques as well (entire values)]' \ - '*:sysctl variable:compadd -S "" - $(sysctl -aN)' + '(-n)-N[show only variable names]' \ + '(-N)-n[show only variable values]' \ + '(-x)-o[show opaques as well (values suppressed)]' \ + '(-o)-x[show opaques as well (entire values)]' \ + '(-a)*:sysctl variable:_multi_parts -i . sysctlvars' ;; linux*) _arguments -A "-*" \ |