Allow services to define which extra commands require the service to be started
This commit is contained in:
		| @@ -29,8 +29,16 @@ command_args=${dnsmasq_args} | ||||
| pidfile=/var/run/dnsmasq.pid | ||||
| required_files=/usr/local/etc/dnsmasq.conf | ||||
|  | ||||
| extra_started_commands="reload" | ||||
|  | ||||
| depend() { | ||||
| 	provide dns | ||||
| 	need localmount net | ||||
| 	after bootmisc | ||||
| } | ||||
|  | ||||
| reload() { | ||||
| 	ebegin "Reloading ${SVCNAME}" | ||||
| 	start-stop-daemon --signal SIGHUP --pidfile "${pidfile}" | ||||
| 	eend $? | ||||
| } | ||||
|   | ||||
| @@ -27,7 +27,7 @@ command=/usr/sbin/named | ||||
| command_args=${named_args} | ||||
| pidfile=/var/run/named/pid | ||||
| name="Domain Name server" | ||||
| extra_commands="reload" | ||||
| extra_started_commands="reload" | ||||
|  | ||||
| namedb=/etc/namedb | ||||
| named_uid=${named_uid:-bind} | ||||
|   | ||||
| @@ -58,14 +58,15 @@ if [ "${RC_SYS}" = "VPS" ]; then | ||||
| fi | ||||
|  | ||||
| # If $svcdir is still mounted, preserve it if we can | ||||
|  | ||||
| mnt=$(mountinfo --node "${RC_SVCDIR}") | ||||
| if [ -n "${mnt}" -a -w "${RC_LIBDIR}" ]; then | ||||
| 	f_opts="-m -c" | ||||
| 	[ "${RC_UNAME}" = "Linux" ] && f_opts="-c" | ||||
| 	if [ -n "$(fuser ${f_opts} "${svcdir}" 2>/dev/null)" ]; then | ||||
| 		fuser -k ${f_opts} "${svcdir}" >/dev/null 2>&1 | ||||
| 		sleep 2 | ||||
| 	if type fuser >/dev/null 2>&1; then | ||||
| 		if [ -n "$(fuser ${f_opts} "${svcdir}" 2>/dev/null)" ]; then | ||||
| 			fuser -k ${f_opts} "${svcdir}" >/dev/null 2>&1 | ||||
| 			sleep 2 | ||||
| 		fi | ||||
| 	fi | ||||
| 	cp -p "${RC_SVCDIR}"/deptree "${RC_SVCDIR}"/depconfig \ | ||||
| 		"${RC_SVCDIR}"/softlevel "${RC_SVCDIR}"/nettree \ | ||||
|   | ||||
| @@ -144,7 +144,8 @@ fi | ||||
|  | ||||
| while [ -n "$1" ]; do | ||||
| 	# See if we have the required function and run it | ||||
| 	for _cmd in describe start stop ${extra_commands:-${opts}}; do | ||||
| 	for _cmd in describe start stop ${extra_commands:-${opts}} \ | ||||
| 		${extra_started_commands}; do | ||||
| 		if [ "${_cmd}" = "$1" ]; then | ||||
| 			if type "$1" >/dev/null 2>&1; then | ||||
| 				# If we're in the background, we may wish to fake some | ||||
| @@ -159,6 +160,16 @@ while [ -n "$1" ]; do | ||||
| 						fi | ||||
| 					done | ||||
| 				fi | ||||
| 				# Check to see if we need to be started before we can run | ||||
| 				# this command | ||||
| 				for _cmd in ${extra_started_commands}; do | ||||
| 					if [ "${_cmd}" = "$1" ]; then | ||||
| 						if ! service_started "${SVCNAME}"; then | ||||
| 							eerror "${SVCNAME}: cannot \`$1' as it has not been started" | ||||
| 							exit 1 | ||||
| 						fi | ||||
| 					fi | ||||
| 				done | ||||
| 				unset _cmd | ||||
| 				if type "$1"_pre >/dev/null 2>&1; then | ||||
| 					"$1"_pre || exit $? | ||||
|   | ||||
		Reference in New Issue
	
	Block a user