rc.subr revision 1.16
1# $OpenBSD: rc.subr,v 1.16 2010/12/27 14:49:05 ajacoutot Exp $ 2 3rc_err() { 4 echo $1 5 exit 1 6} 7 8rc_start() { 9 type rc_pre >/dev/null && rc_pre 10 su -l -c ${daemon_class} -s ${daemon_shell} ${daemon_user} \ 11 -c "${daemon} ${daemon_flags}" >/dev/null 12} 13 14rc_check() { 15 pgrep -f "^${pexp}" >/dev/null 16} 17 18rc_reload() { 19 pkill -HUP -f "^${pexp}" 20} 21 22rc_stop() { 23 pkill -f "^${pexp}" 24 type rc_post >/dev/null && rc_post || return 0 25} 26 27rc_conf() { 28 [ -n "${daemon}" ] || rc_err "$0: daemon is not set" 29 30 _name=`basename $0` 31 eval _rcflags=\${${_name}_flags} 32 eval _rcuser=\${${_name}_user} 33 eval _rcclass=\${${_name}_class} 34 eval _rcshell=\${${_name}_shell} 35 36 [ -z "${daemon_class}" ] && daemon_class=daemon 37 [ -z "${daemon_shell}" ] && daemon_shell=/bin/sh 38 [ -z "${daemon_user}" ] && daemon_user=root 39 40 [ -n "${_rcflags}" ] && daemon_flags=${_rcflags} 41 [ -n "${_rcuser}" ] && daemon_user=${_rcuser} 42 [ -n "${_rcclass}" ] && daemon_class=${_rcclass} 43 [ -n "${_rcshell}" ] && daemon_shell=${_rcshell} 44 45 daemon_flags=`echo ${daemon_flags} | tr -s "[:space:]"` 46 47 pexp="${daemon}${daemon_flags:+ ${daemon_flags}}" 48} 49 50rc_cmd() { 51 [ `id -u` -eq 0 -o X"$1" = "Xcheck" ] || \ 52 rc_err "$0: need root privileges" 53 54 eval _enotsup=\${rc_${1}} 55 [ X"${_enotsup}" != X"NO" ] || rc_err "$0: $1 is not supported" 56 57 case "$1" in 58 check) 59 rc_check 60 ;; 61 start) 62 rc_check || rc_start 63 ;; 64 stop) 65 rc_stop 66 ;; 67 reload) 68 rc_check && rc_reload 69 ;; 70 restart) 71 rc_stop 72 while rc_check; do 73 sleep 1 74 done 75 rc_start 76 ;; 77 *) 78 rc_err "usage: $0 {start|check|reload|restart|stop}" 79 esac 80} 81 82[ -z "${local_rcconf}" ] && . /etc/rc.conf 83rc_conf 84