1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2026-01-04 09:01:06 +01:00

25755/25756: Jörg Sommer: improved handling of module arguments

25759: fix dynamic named directory crash, static named directory consistency
This commit is contained in:
Peter Stephenson 2008-09-27 19:57:25 +00:00
parent 4ba03217ca
commit 4a34c96289
5 changed files with 48 additions and 16 deletions

View file

@ -36,7 +36,7 @@ case "$service" in
'(-C --config)'{-C,--config}'[specify config file]:config file:_files' \
"(-r --remove -l --list -t --type -a --all $ign)"{-r,--remove}'[remove module (stacks)]' \
"(* -l --list -r --remove $ign)"{-l,--list}'[list matching modules]' \
"(-c $ign)1:modules:->all_modules" \
"(-c $ign)1:modules:->loadable_modules" \
"(-c -l --list -t --type $ign)*:params:->params" && ret=0
[[ -n $state ]] && (( $+opt_args[-r] )) && state=loaded_modules
@ -60,23 +60,31 @@ case "$service" in
esac
case "$state" in
loaded_modules)
loaded_modules|loadable_modules)
if [[ -r /proc/modules ]]; then
modules=(${${(f)"$(</proc/modules)"}%% *})
loaded_modules=(${${(f)"$(</proc/modules)"}%% *})
elif [[ -x /sbin/lsmod ]]; then
modules=(${${(f)"$(/sbin/lsmod)"}[2,-1]%% *})
loaded_modules=(${${(f)"$(/sbin/lsmod)"}[2,-1]%% *})
else
return 1
fi
_wanted modules expl 'loaded module' compadd -a modules && return
;;
if [[ $state = loaded_modules ]]; then
_wanted modules expl 'loaded module' compadd -a loaded_modules && return
return ret
fi
;&
all_modules)
modules=( ${${${${(f)"$(_call_program modules ${(M)words[1]##*/}modprobe -l 2>/dev/null)"}:#}##*/}%%.*} )
if [[ $state = loadable_modules ]]; then
modules=( ${modules:#(${(j:|:)~${=loaded_modules//_/-}})} )
fi
_tags files modules
while _tags; do
_requested files expl "module file" _files && ret=0
_requested files expl "module file" _files -g '*.ko' && ret=0
_requested modules expl module compadd -a modules && ret=0
done
;;