Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Completion function patches
- X-seq: zsh-workers 27308
- From: Peter Stephenson <p.w.stephenson@xxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: Re: Completion function patches
- Date: Sun, 4 Oct 2009 19:13:29 +0100
- In-reply-to: <4AC89D4E.6050608@xxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <4AC89D4E.6050608@xxxxxxxxx>
On Sun, 04 Oct 2009 08:04:14 -0500
Edgar Merino <donvodka@xxxxxxxxx> wrote:
> Hello, I recently had to work with two utility functions for the
> completion system: _services and _init_d. I'm running archlinux and here
> services are under the /etc/rc.d directory, instead of the default
> directory that appears in those 2 scripts (/etc/init.d). Attached I
> provide you with pataches for both scripts, so that they work fine when
> running a system with an init framework similar to mine. Please let me
> know if I should do something else to contribute this code.
Thanks, I'll commit the following.
Index: Completion/Unix/Command/_init_d
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_init_d,v
retrieving revision 1.8
diff -u -r1.8 _init_d
--- Completion/Unix/Command/_init_d 8 Oct 2007 08:40:14 -0000 1.8
+++ Completion/Unix/Command/_init_d 4 Oct 2009 18:10:02 -0000
@@ -7,7 +7,20 @@
# 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 <space>foo|bar) with the words in $what.
Index: Completion/Unix/Type/_services
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Type/_services,v
retrieving revision 1.4
diff -u -r1.4 _services
--- Completion/Unix/Type/_services 8 Jun 2005 12:45:36 -0000 1.4
+++ Completion/Unix/Type/_services 4 Oct 2009 18:10:02 -0000
@@ -12,7 +12,19 @@
'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
--
Peter Stephenson <p.w.stephenson@xxxxxxxxxxxx>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/
Messages sorted by:
Reverse Date,
Date,
Thread,
Author