diff options
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | bash-completion | 22 | ||||
-rw-r--r-- | functions | 47 | ||||
-rwxr-xr-x | rc.d | 3 | ||||
-rwxr-xr-x | rc.sysinit | 4 | ||||
-rw-r--r-- | zsh-completion | 37 |
6 files changed, 94 insertions, 23 deletions
@@ -1,5 +1,5 @@ VER := $(shell git describe) -DIRS := /etc/rc.d /etc/conf.d /etc/rc.d/functions.d /etc/cron.hourly /sbin /etc/modprobe.d +DIRS := /etc/rc.d /etc/conf.d /etc/rc.d/functions.d /etc/cron.hourly /sbin /etc/modprobe.d /etc/bash_completion.d /usr/share/zsh/site-functions minilogd: minilogd.o @@ -14,6 +14,8 @@ install: minilogd installdirs install -m755 -t $(DESTDIR)/etc/rc.d hwclock network netfs install -m755 -t $(DESTDIR)/sbin minilogd rc.d modprobe-blacklist ln -s /run/initscripts/modprobe-blacklist.conf $(DESTDIR)/etc/modprobe.d/arch-blacklist.conf + install -m644 -T bash-completion $(DESTDIR)/etc/bash_completion.d/rc.d + install -m644 -T zsh-completion $(DESTDIR)/usr/share/zsh/site-functions/_rc.d clean: rm -f minilogd minilogd.o diff --git a/bash-completion b/bash-completion new file mode 100644 index 0000000..5151972 --- /dev/null +++ b/bash-completion @@ -0,0 +1,22 @@ +# rc.d bash completion by Seblu <seblu@seblu.net> + +_rc.d () +{ + local action="help list start stop reload restart" + local cur="${COMP_WORDS[COMP_CWORD]}" + local caction="${COMP_WORDS[1]}" + if ((${COMP_CWORD} == 1)); then + COMPREPLY=($(compgen -W "${action}" -- "$cur")) + elif [[ "$caction" =~ help|list ]]; then + COMPREPLY=() + elif [[ "$caction" == start ]]; then + COMPREPLY=($(comm -23 <(cd /etc/rc.d && compgen -f -X 'functions*' "$cur"|sort) <(cd /run/daemons/ && compgen -f "$cur"|sort))) + elif [[ "$caction" =~ stop|restart|reload ]]; then + COMPREPLY=($(cd /run/daemons/ && compgen -f "$cur"|sort)) + elif ((${COMP_CWORD} > 1)); then + COMPREPLY=($(cd /etc/rc.d && compgen -f -X 'functions*' "$cur"|sort)) + fi +} +complete -F _rc.d rc.d + +# vim: set ts=2 sw=2 ft=sh noet: @@ -49,28 +49,37 @@ else export LANG=C fi -# colors: -if [[ $USECOLOR = YES || $USECOLOR = yes ]]; then - C_MAIN="\033[1;37;40m" # main text - - C_OTHER="\033[1;34;40m" # prefix & brackets - C_SEPARATOR="\033[1;30;40m" # separator - - C_BUSY="\033[0;36;40m" # busy - C_FAIL="\033[1;31;40m" # failed - C_DONE="\033[1;37;40m" # completed - C_BKGD="\033[1;35;40m" # backgrounded - - C_H1="\033[1;37;40m" # highlight text 1 - C_H2="\033[1;36;40m" # highlight text 2 - - C_CLEAR="\033[1;0m" +# set colors +if [[ $USECOLOR =~ yes|YES ]]; then + if /bin/tput setaf 0 &>/dev/null; then + C_CLEAR="$(tput sgr0)" # clear text + C_MAIN="${C_CLEAR}$(/bin/tput bold)" # main text + C_OTHER="${C_MAIN}$(/bin/tput setaf 4)" # prefix & brackets + C_SEPARATOR="${C_MAIN}$(/bin/tput setaf 0)" # separator + C_BUSY="${C_CLEAR}$(/bin/tput setaf 6)" # busy + C_FAIL="${C_MAIN}$(/bin/tput setaf 1)" # failed + C_DONE="${C_MAIN}" # completed + C_BKGD="${C_MAIN}$(/bin/tput setaf 5)" # backgrounded + C_H1="${C_MAIN}" # highlight text 1 + C_H2="${C_MAIN}$(/bin/tput setaf 6)" # highlight text 2 + else + C_CLEAR="\e[m" # clear text + C_MAIN="\e[;1m" # main text + C_OTHER="\e[1;34m" # prefix & brackets + C_SEPARATOR="\e[1;30m" # separator + C_BUSY="\e[;36m" # busy + C_FAIL="\e[1;31m" # failed + C_DONE="${C_MAIN}" # completed + C_BKGD="\e[1;35m" # backgrounded + C_H1="${$C_MAIN}" # highlight text 1 + C_H2="\e[1;36m" # highlight text 2 + fi fi if [[ -t 1 ]]; then - SAVE_POSITION="\033[s" - RESTORE_POSITION="\033[u" - DEL_TEXT="\033[$(($STAT_COL+4))G" + SAVE_POSITION="\e[s" + RESTORE_POSITION="\e[u" + DEL_TEXT="\e[$(($STAT_COL+4))G" else SAVE_POSITION="" RESTORE_POSITION="" @@ -50,6 +50,7 @@ case $1 in ENV+=" PREVLEVEL='${runlevel:0:1}'" ENV+=" RUNLEVEL='${runlevel:2:1}'" ENV+=" CONSOLE='${CONSOLE:-/dev/console}'" + ENV+=" TERM='${TERM}'" for i; do [[ -x "/etc/rc.d/$i" ]] && cd / && eval /usr/bin/env -i $ENV "/etc/rc.d/$i" "$action" (( ret += !! $? )) # clamp exit value to 0/1 @@ -58,4 +59,4 @@ esac exit $ret -# vim: set ts=2 sw=2 noet: +# vim: set ts=2 sw=2 ft=sh noet: @@ -354,7 +354,7 @@ if [[ ${LOCALE,,} =~ utf ]]; then # but also when user has set vt.default_utf8=0 but LOCALE is *.UTF-8. for i in /dev/tty[0-9]*; do /usr/bin/kbd_mode -u < ${i} - printf "\033%%G" > ${i} + printf "\e%%G" > ${i} done echo 1 > /sys/module/vt/parameters/default_utf8 stat_done @@ -364,7 +364,7 @@ else # make non-UTF-8 consoles work on 2.6.24 and newer kernels for i in /dev/tty[0-9]*; do /usr/bin/kbd_mode -a < ${i} - printf "\033%%@" > ${i} + printf "\e%%@" > ${i} done echo 0 > /sys/module/vt/parameters/default_utf8 stat_done diff --git a/zsh-completion b/zsh-completion new file mode 100644 index 0000000..f1b7165 --- /dev/null +++ b/zsh-completion @@ -0,0 +1,37 @@ +#compdef rc.d + +_rc.d () { + local curcontext="$curcontext" state line + typeset -A opt_args + + _arguments "1: :->action" "*: :->service" + + case $state in + action) + _arguments "1:action:(list help start stop restart)" + ;; + service) + local action="$words[2]" + curcontext="${curcontext%:*:*}:rc.d-${action}:" + + case $action in + list|help) + _arguments "*: :" + ;; + start) + _arguments "*: :($(comm -23 <(echo /etc/rc.d/*(N-*:t)|tr ' ' '\n') <(echo /run/daemons/*(N:t)|tr ' ' '\n')))" + ;; + stop|restart|reload) + _arguments "*: :(/run/daemons/*(N:t))" + ;; + *) + _arguments "*: :(/etc/rc.d/*(N-*:t))" + ;; + esac + ;; + esac +} + +_rc.d "$@" + +# vim: set ts=2 sw=2 ft=sh noet: |