diff --git a/src/etc/rc.d/rc.subr b/src/etc/rc.d/rc.subr index c98bb2ae..cab274d6 100644 --- a/src/etc/rc.d/rc.subr +++ b/src/etc/rc.d/rc.subr @@ -1,4 +1,4 @@ -# $OpenBSD: rc.subr,v 1.14 2010/12/13 16:06:45 ajacoutot Exp $ +# $OpenBSD: rc.subr,v 1.15 2010/12/24 10:37:24 ajacoutot Exp $ [ -z "${local_rcconf}" ] && . /etc/rc.conf @@ -9,8 +9,8 @@ rc_err() { rc_start() { type rc_pre >/dev/null && rc_pre - su -l -c ${daemon_class:-daemon} -s ${daemon_shell:-/bin/sh} \ - ${daemon_user:-root} -c "${daemon} ${daemon_flags}" >/dev/null + su -l -c ${daemon_class} -s ${daemon_shell} ${daemon_user} \ + -c "${daemon} ${daemon_flags}" >/dev/null } rc_check() { @@ -26,26 +26,35 @@ rc_stop() { type rc_post >/dev/null && rc_post || return 0 } -rc_cmd() { - _name=`basename $0` +rc_conf() { + [ -n "${daemon}" ] || rc_err "$0: daemon is not set" - eval _enotsup=\${rc_${1}} + _name=`basename $0` eval _rcflags=\${${_name}_flags} eval _rcuser=\${${_name}_user} eval _rcclass=\${${_name}_class} eval _rcshell=\${${_name}_shell} - [ X"${_enotsup}" != X"NO" ] || rc_err "$0: $1 is not supported" - [ `id -u` -eq 0 -o X"$1" = "Xcheck" ] || \ - rc_err "$0: need root privileges" - [ -n "${daemon}" ] || rc_err "$0: daemon is not set" + [ -z "${daemon_class}" ] && daemon_class=daemon + [ -z "${daemon_shell}" ] && daemon_shell=/bin/sh + [ -z "${daemon_user}" ] && daemon_user=root + [ -n "${_rcflags}" ] && daemon_flags=${_rcflags} - [ -n "${_rcflags}" ] && daemon_flags=`echo ${_rcflags} | tr -s "[:space:]"` [ -n "${_rcuser}" ] && daemon_user=${_rcuser} [ -n "${_rcclass}" ] && daemon_class=${_rcclass} [ -n "${_rcshell}" ] && daemon_shell=${_rcshell} - [ -n "${pexp}" ] || \ - pexp="${daemon}${daemon_flags:+ ${daemon_flags}}" + + daemon_flags=`echo ${daemon_flags} | tr -s "[:space:]"` + + pexp="${daemon}${daemon_flags:+ ${daemon_flags}}" +} + +rc_cmd() { + [ `id -u` -eq 0 -o X"$1" = "Xcheck" ] || \ + rc_err "$0: need root privileges" + + eval _enotsup=\${rc_${1}} + [ X"${_enotsup}" != X"NO" ] || rc_err "$0: $1 is not supported" case "$1" in check)