From 8ed0fad414daa81c7f7232139e3022b46106437f Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Sun, 4 Oct 2009 18:20:00 +0000 Subject: 27308, based on 27305 from Edgar Merino: search for init scripts in other locations --- ChangeLog | 12 +++++++++++- Completion/Unix/Command/_init_d | 15 ++++++++++++++- Completion/Unix/Type/_services | 14 +++++++++++++- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5430676ca..eed7267ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2009-10-04 Peter Stephenson + + * 27308, based on 27305 from Edgar Merino: + Completion/Unix/Command/_init_d, Completion/Unix/Type/_services: + search for init scripts in other locations. + + * Lionel Flandrin: 27307: + Functions/VCS_Info/Backends/VCS_INFO_get_data_hg, + Doc/Zsh/contrib.yo: enhanced VCS_INFO support for Mecurial. + 2009-09-30 Peter Stephenson * http://www.opensource.apple.com/source/zsh/zsh-53/patches/utils.c.patch: @@ -12233,5 +12243,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.4790 $ +* $Revision: 1.4791 $ ***************************************************** diff --git a/Completion/Unix/Command/_init_d b/Completion/Unix/Command/_init_d index 9a5ed9ae7..72d11023f 100644 --- a/Completion/Unix/Command/_init_d +++ b/Completion/Unix/Command/_init_d @@ -7,7 +7,20 @@ _compskip=all # This should probably be system specific... script=$words[1] -[[ $script = */* ]] || script=/etc/init.d/$script +if [[ $script != */* ]]; then + local -a scriptpath + local dir + # Known locations of init scripts + # C.f. Unix/Type/_services + scriptpath=(/etc/init.d /etc/rc.d /etc/rc.d/init.d) + + for dir in $scriptpath; do + if [[ -f $dir/$script ]]; then + script=$dir/$script + break + fi + done +fi # If the file starts with `#!' we hope that this is a shell script # and get lines looking like foo|bar) with the words in $what. diff --git a/Completion/Unix/Type/_services b/Completion/Unix/Type/_services index 2965e0f3e..40136e3c1 100644 --- a/Completion/Unix/Type/_services +++ b/Completion/Unix/Type/_services @@ -12,7 +12,19 @@ if chkconfig --list > /dev/null 2>&1; then 'init:init service:compadd -a inits' \ 'xinetd:xinetd service:compadd -a xinetds' && ret=0 else - _wanted services expl service compadd "$@" - /etc/init.d/*(-*:t) && ret=0 + local -a scriptpath + local dir + # Known locations of init scripts + # C.f. Unix/Commands/_init_d + scriptpath=(/etc/init.d /etc/rc.d /etc/rc.d/init.d) + + for dir in $scriptpath; do + if [[ -d $dir ]]; then + break + fi + done + _wanted services expl service compadd "$@" - $dir/*(-*:t) && + ret=0 fi return ret -- cgit 1.4.1