svn commit: r316487 - head/etc
Dag-Erling Smørgrav
des at FreeBSD.org
Tue Apr 4 11:43:32 UTC 2017
Author: des
Date: Tue Apr 4 11:43:31 2017
New Revision: 316487
URL: https://svnweb.freebsd.org/changeset/base/316487
Log:
Allow command modifiers (fast, quiet etc.) to be stacked in any order.
Add a "debug" modifier that sets rc_debug.
MFC after: 3 weeks
Modified:
head/etc/rc.subr
Modified: head/etc/rc.subr
==============================================================================
--- head/etc/rc.subr Tue Apr 4 08:17:03 2017 (r316486)
+++ head/etc/rc.subr Tue Apr 4 11:43:31 2017 (r316487)
@@ -703,10 +703,11 @@ check_startmsgs()
# If argument has a given prefix, then change the operation as follows:
# Prefix Operation
# ------ ---------
-# fast Skip the pid check, and set rc_fast=yes, rc_quiet=yes
-# force Set ${rcvar} to YES, and set rc_force=yes
-# one Set ${rcvar} to YES
-# quiet Don't output some diagnostics, and set rc_quiet=yes
+# debug Enable debugging messages and set rc_debug to yes
+# fast Skip the pid check and set rc_fast and rc_quiet to yes
+# force Skip sanity checks and set ${rcvar} and rc_force to yes
+# one Set ${rcvar} and set rc_one to yes
+# quiet Don't output some diagnostics, and set rc_quiet to yes
#
# The following globals are used:
#
@@ -856,6 +857,8 @@ check_startmsgs()
# rc_arg Argument to command, after fast/force/one processing
# performed
#
+# rc_debug True if "debug" was provided
+#
# rc_flags Flags to start the default command with.
# Defaults to ${name}_flags, unless overridden
# by $flags from the environment.
@@ -863,9 +866,11 @@ check_startmsgs()
#
# rc_pid PID of command (if appropriate)
#
-# rc_fast Not empty if "fast" was provided (q.v.)
+# rc_fast Not empty if "fast" was provided
+#
+# rc_force Not empty if "force" was provided
#
-# rc_force Not empty if "force" was provided (q.v.)
+# rc_one Not empty if "one" was provided
#
# rc_quiet Not empty if "quiet" was provided
#
@@ -884,34 +889,47 @@ run_rc_command()
shift 1
rc_extra_args="$*"
- _rc_prefix=
- case "$rc_arg" in
- fast*) # "fast" prefix; don't check pid
- rc_arg=${rc_arg#fast}
- rc_fast=yes
- rc_quiet=yes
- ;;
- force*) # "force" prefix; always run
- rc_force=yes
- _rc_prefix=force
- rc_arg=${rc_arg#${_rc_prefix}}
- if [ -n "${rcvar}" ]; then
- eval ${rcvar}=YES
- fi
- ;;
- one*) # "one" prefix; set ${rcvar}=yes
- _rc_prefix=one
- rc_arg=${rc_arg#${_rc_prefix}}
+ : ${rc_debug:=no} ${rc_fast:=no} ${rc_force:=no} ${rc_one:=no} ${rc_quiet:=no}
+ while :; do
+ case "$rc_arg" in
+ debug*) # "debug" prefix; enable debugging
+ rc_debug=yes
+ rc_quiet=no
+ rc_arg=${rc_arg#debug}
+ _rc_prefix="${_rc_prefix}debug"
+ ;;
+ fast*) # "fast" prefix; don't check pid
+ rc_fast=yes
+ rc_quiet=yes
+ rc_arg=${rc_arg#fast}
+ _rc_prefix="${_rc_prefix}fast"
+ ;;
+ force*) # "force" prefix; always run
+ rc_force=yes
+ rc_arg=${rc_arg#force}
+ _rc_prefix="${_rc_prefix}force"
+ ;;
+ one*) # "one" prefix; set ${rcvar}=yes
+ rc_one=yes
+ rc_arg=${rc_arg#one}
+ _rc_prefix="${_rc_prefix}one"
+ ;;
+ quiet*) # "quiet" prefix; omit some messages
+ rc_quiet=yes
+ rc_arg=${rc_arg#quiet}
+ _rc_prefix="${_rc_prefix}quiet"
+ ;;
+ *)
+ break
+ ;;
+ esac
+ done
+ if checkyesno rc_force || checkyesno rc_one ; then
if [ -n "${rcvar}" ]; then
eval ${rcvar}=YES
fi
- ;;
- quiet*) # "quiet" prefix; omit some messages
- _rc_prefix=quiet
- rc_arg=${rc_arg#${_rc_prefix}}
- rc_quiet=yes
- ;;
- esac
+ fi
+ debug "_rc_prefix=${_rc_prefix}"
eval _override_command=\$${name}_program
command=${_override_command:-$command}
More information about the svn-src-all
mailing list