[arch-projects] [INITSCRIPTS][PATCH 4/4] rc.d: list [started|stopped|auto|noauto|daemon]
Seblu
seblu at seblu.net
Fri Aug 12 13:40:46 EDT 2011
On Fri, Aug 12, 2011 at 6:59 PM, Elvis Stansvik <elvstone at gmail.com> wrote:
> Ah, I was just procrastinating about not having updated the patch to
> add a manpage for rc.d that I sent a while back. Now it seems I'll
> have to extend/rewrite it a bit anyway ;)
>
> I'll do that as soon as I can, a bit busy finishing up my gsoc work atm.
Yeah i searched it when i wrote bash/zsh copletion scripts to update it.
>
> Cheers,
> Elvis
>
> 2011/8/9 Sebastien Luttringer <seblu at seblu.net>:
>> list command can take new arguments auto/noauto.
>> list command can take a list of daemon to list.
>>
>> All kind of arguments can be mixed to obtain the proper output.
>>
>> zsh and bash completion are updated
>>
>> Signed-off-by: Sebastien Luttringer <seblu at seblu.net>
>> ---
>> bash-completion | 2 +-
>> rc.d | 65 +++++++++++++++++++++++++++++++++++++-----------------
>> zsh-completion | 2 +-
>> 3 files changed, 46 insertions(+), 23 deletions(-)
>>
>> diff --git a/bash-completion b/bash-completion
>> index d78484e..718df6d 100644
>> --- a/bash-completion
>> +++ b/bash-completion
>> @@ -10,7 +10,7 @@ _rc_d()
>> elif [[ "$prev" == help ]]; then
>> COMPREPLY=()
>> elif [[ "$prev" == list ]]; then
>> - ((COMP_CWORD == 2)) && COMPREPLY=($(compgen -W "started stopped" -- "$cur")) || COMPREPLY=()
>> + COMPREPLY=($(compgen -W "started stopped auto noauto $(cd /etc/rc.d && compgen -f -X 'functions*')" -- "$cur"))
>> elif [[ "$prev" == start ]]; then
>> COMPREPLY=($(comm -23 <(cd /etc/rc.d && compgen -f -X 'functions*' "$cur"|sort) <(cd /run/daemons/ && compgen -f "$cur"|sort)))
>> elif [[ "$prev" =~ stop|restart|reload ]]; then
>> diff --git a/rc.d b/rc.d
>> index 3d34edf..bb44ae1 100755
>> --- a/rc.d
>> +++ b/rc.d
>> @@ -4,11 +4,12 @@ NEED_ROOT=0 # this script can be run without be root
>> . /etc/rc.conf
>> . /etc/rc.d/functions
>>
>> +# print usage and exit
>> usage() {
>> local name=${0##*/}
>> cat >&2 << EOF
>> usage: $name <action> <daemon> [daemon] ...
>> - $name list [started|stopped]
>> + $name list [started|stopped|auto|noauto|daemon]
>> $name help
>>
>> <daemon> is the name of a script in /etc/rc.d
>> @@ -17,40 +18,62 @@ WARNING: initscripts are free to implement or not the above actions.
>>
>> e.g: $name list
>> $name list started
>> + $name list sshd gpm
>> $name help
>> $name start sshd gpm
>> EOF
>> exit 1
>> }
>>
>> +# list action
>> +list() {
>> + local mode daemons s_status s_auto
>> + # parse arguments
>> + for p; do
>> + case "$p" in
>> + started) mode=started;;
>> + stopped) mode=stopped;;
>> + auto) mode=auto;;
>> + noauto) mode=noauto;;
>> + *) daemons="$daemons $p";;
>> + esac
>> + done
>> + # if no daemon are specified take all
>> + [[ $daemons ]] || daemons=$(cd /etc/rc.d/ && echo *)
>> + # building string to display
>> + for d in $daemons; do
>> + # check if d is a valid daemon name
>> + have_daemon "$d" || continue
>> + # print running / stopped satus
>> + if ! ck_daemon "$d"; then
>> + [[ $mode == stopped ]] && continue
>> + s_status="${C_OTHER}[${C_DONE}STARTED${C_OTHER}]"
>> + else
>> + [[ $mode == started ]] && continue
>> + s_status="${C_OTHER}[${C_FAIL}STOPPED${C_OTHER}]"
>> + fi
>> + # print auto / manual status
>> + if ! ck_autostart "$d"; then
>> + [[ $mode == noauto ]] && continue
>> + s_auto="${C_OTHER}[${C_DONE}AUTO${C_OTHER}]"
>> + else
>> + [[ $mode == auto ]] && continue
>> + s_auto="${C_OTHER}[${C_FAIL} ${C_OTHER}]"
>> + fi
>> + printf "$s_status$s_auto${C_CLEAR} $d\n"
>> + done
>> +}
>> +
>> (( $# < 1 )) && usage
>>
>> declare -i ret=0
>> case $1 in
>> help)
>> usage
>> - ;;
>> + ;;
>> list)
>> shift
>> - cd /etc/rc.d/
>> - for d in *; do
>> - have_daemon "$d" || continue
>> - # print running / stopped satus
>> - if ! ck_daemon "$d"; then
>> - [[ "$1" == stopped ]] && continue
>> - printf "${C_OTHER}[${C_DONE}STARTED${C_OTHER}]"
>> - else
>> - [[ "$1" == started ]] && continue
>> - printf "${C_OTHER}[${C_FAIL}STOPPED${C_OTHER}]"
>> - fi
>> - # print auto / manual status
>> - if ! ck_autostart "$d"; then
>> - printf "${C_OTHER}[${C_DONE}AUTO${C_OTHER}]"
>> - else
>> - printf "${C_OTHER}[${C_FAIL} ${C_OTHER}]"
>> - fi
>> - printf " ${C_CLEAR}$d\n"
>> - done
>> + list "$@"
>> ;;
>> *)
>> # check min args count
>> diff --git a/zsh-completion b/zsh-completion
>> index e5c2850..b324e5c 100644
>> --- a/zsh-completion
>> +++ b/zsh-completion
>> @@ -19,7 +19,7 @@ _rc.d () {
>> _arguments "*: :"
>> ;;
>> list)
>> - _arguments "2: :(started stopped)"
>> + _arguments "*: :(started stopped auto noauto $(echo /etc/rc.d/*(N-*:t)))"
>> ;;
>> start)
>> _arguments "*: :($(comm -23 <(echo /etc/rc.d/*(N-*:t)|tr ' ' '\n') <(echo /run/daemons/*(N:t)|tr ' ' '\n')))"
>> --
>> Sebastien "Seblu" Luttringer
>>
>>
>
--
Sébastien Luttringer
www.seblu.net
More information about the arch-projects
mailing list