From 20eba9a34fb4218533e7aee7d9a9a5b0e6031dfc Mon Sep 17 00:00:00 2001 From: zhuk <> Date: Thu, 4 Apr 2013 06:50:44 +0000 Subject: [PATCH] Show only available actions in RC script usage messages. Also, prettify representation of actions list a bit. a lot of input and ok halex@ aja@ also ok schwarze@ small nit spotted by marc@ "makes a lot of sense to me" todd@ --- src/etc/rc.d/rc.subr | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/etc/rc.d/rc.subr b/src/etc/rc.d/rc.subr index e61ca53e..040a0e93 100644 --- a/src/etc/rc.d/rc.subr +++ b/src/etc/rc.d/rc.subr @@ -1,4 +1,4 @@ -# $OpenBSD: rc.subr,v 1.68 2012/11/19 07:10:59 ajacoutot Exp $ +# $OpenBSD: rc.subr,v 1.69 2013/04/04 06:50:44 zhuk Exp $ # # Copyright (c) 2010, 2011 Antoine Jacoutot # Copyright (c) 2010, 2011 Ingo Schwarze @@ -24,8 +24,18 @@ rc_err() { exit 1 } +rc_is_supported() { + local _enotsup + eval _enotsup=\${rc_$1} + [ X"${_enotsup}" != X"NO" ] +} + rc_usage() { - rc_err "usage: $0 [-df] {start|check|reload|restart|stop}" + local _a _allsup + for _a in start stop restart reload check; do + rc_is_supported ${_a} && _allsup="${_allsup:+$_allsup|}${_a}" + done + rc_err "usage: $0 [-df] (${_allsup})" } rc_write_runfile() { @@ -95,14 +105,17 @@ rc_wait() { } rc_cmd() { - local _bg _enotsup _n + local _bg _n [ "$(id -u)" -eq 0 ] || \ [ X"${rc_usercheck}" != X"NO" -a X"$1" = "Xcheck" ] || \ rc_err "$0: need root privileges" - eval _enotsup=\${rc_${1}} - if [ X"${_enotsup}" = X"NO" ]; then + if ! (rc_is_supported start && rc_is_supported stop); then + rc_restart=NO + fi + + if ! rc_is_supported $1; then [ -n "${INRC}" ] && exit 1 rc_err "$0: $1 is not supported" fi