Date: Tue, 4 Apr 2017 11:43:31 +0000 (UTC) From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= <des@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r316487 - head/etc Message-ID: <201704041143.v34BhVNA046204@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201704041143.v34BhVNA046204>