[Midnightbsd-cvs] src [6616] trunk/etc/rc.subr: reserved vars

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sun Mar 16 17:28:10 EDT 2014


Revision: 6616
          http://svnweb.midnightbsd.org/src/?rev=6616
Author:   laffer1
Date:     2014-03-16 17:28:10 -0400 (Sun, 16 Mar 2014)
Log Message:
-----------
reserved vars

Modified Paths:
--------------
    trunk/etc/rc.subr

Modified: trunk/etc/rc.subr
===================================================================
--- trunk/etc/rc.subr	2014-03-08 21:36:04 UTC (rev 6615)
+++ trunk/etc/rc.subr	2014-03-16 21:28:10 UTC (rev 6616)
@@ -32,7 +32,6 @@
 #	functions used by various rc scripts
 #
 
-: ${rcvar_manpage:='rc.conf(5)'}
 : ${RC_PID:=$$}; export RC_PID
 
 #
@@ -108,10 +107,7 @@
 
 	rcvars_obsolete="${rcvars_obsolete# } $1"
 	eval ${1}_newvar=\"$2\"
-	case $# in
-	  2)
-	    shift 2
-	esac
+	shift 2
 	eval ${_var}_obsolete_msg=\"$*\"
 }
 
@@ -162,7 +158,7 @@
 		return 1
 		;;
 	*)
-		warn "\$${1} is not set properly - see ${rcvar_manpage}."
+		warn "\$${1} is not set properly - see rc.conf(5)."
 		return 1
 		;;
 	esac
@@ -306,8 +302,8 @@
 
 	_pref=
 	if [ $_interpreter != "." ]; then	# an interpreted script
-		_script=${_chroot}${_chroot:+"/"}$_procname
-		if [ -r $_script ]; then
+		_script="${_chroot}${_chroot:+/}$_procname"
+		if [ -r "$_script" ]; then
 			read _interp < $_script	# read interpreter name
 			case "$_interp" in
 			\#!*)
@@ -335,7 +331,7 @@
 		_interpbn=${1##*/}
 		_fp_args='_argv'
 		_fp_match='case "$_argv" in
-		    ${_interp}|"${_interp} "*|"${_interpbn}: ${_procname}"*)'
+		    ${_interp}|"${_interp} "*|"[${_interpbn}]"|"${_interpbn}: ${_procname}"*)'
 	else					# a normal daemon
 		_procnamebn=${_procname##*/}
 		_fp_args='_arg0 _argv'
@@ -507,6 +503,8 @@
 #				NOTE:	$flags from the parent environment
 #					can be used to override this.
 #
+#	${name}_fib	n	Routing table number to run ${command} with.
+#
 #	${name}_nice	n	Nice level to run ${command} at.
 #
 #	${name}_user	n	User to run ${command} as, using su(1) if not
@@ -685,7 +683,8 @@
 	fi
 	eval _chdir=\$${name}_chdir	_chroot=\$${name}_chroot \
 	    _nice=\$${name}_nice	_user=\$${name}_user \
-	    _group=\$${name}_group	_groups=\$${name}_groups
+	    _group=\$${name}_group	_groups=\$${name}_groups \
+	    _fib=\$${name}_fib
 
 	if [ -n "$_user" ]; then	# unset $_user if running as that user
 		if [ "$_user" = "$(eval $IDCMD)" ]; then
@@ -746,11 +745,14 @@
 
 		start)
 			if [ -z "$rc_fast" -a -n "$rc_pid" ]; then
-				echo 1>&2 "${name} already running? (pid=$rc_pid)."
+				if [ -z "$rc_quiet" ]; then
+					echo 1>&2 "${name} already running? " \
+					    "(pid=$rc_pid)."
+				fi
 				return 1
 			fi
 
-			if [ ! -x ${_chroot}${_chroot:+"/"}${command} ]; then
+			if [ ! -x "${_chroot}${_chroot:+/}${command}" ]; then
 				warn "run_rc_command: cannot run $command"
 				return 1
 			fi
@@ -766,11 +768,13 @@
 			if [ -n "$_chroot" ]; then
 				_doit="\
 ${_nice:+nice -n $_nice }\
+${_fib:+setfib -F $_fib }\
 chroot ${_user:+-u $_user }${_group:+-g $_group }${_groups:+-G $_groups }\
 $_chroot $command $rc_flags $command_args"
 			else
 				_doit="\
 ${_chdir:+cd $_chdir && }\
+${_fib:+setfib -F $_fib }\
 $command $rc_flags $command_args"
 				if [ -n "$_user" ]; then
 				    _doit="su -m $_user -c 'sh -c \"$_doit\"'"
@@ -1322,7 +1326,7 @@
 #
 devfs_rulesets_from_file()
 {
-	local file _err _me
+	local file _err _me _opts
 	file="$1"
 	_me="devfs_rulesets_from_file"
 	_err=0
@@ -1335,6 +1339,11 @@
 		debug "$_me: no such file ($file)"
 		return 0
 	fi
+
+	# Disable globbing so that the rule patterns are not expanded
+	# by accident with matching filesystem entries.
+	_opts=$-; set -f
+
 	debug "reading rulesets from file ($file)"
 	{ while read line
 	do
@@ -1381,6 +1390,7 @@
 			break
 		fi
 	done } < $file
+	case $_opts in *f*) ;; *) set +f ;; esac
 	return $_err
 }
 
@@ -1764,6 +1774,23 @@
 	fi
 }
 
+# check_namevarlist var
+#	Return "0" if ${name}_var is reserved in rc.subr.
+
+_rc_namevarlist="program chroot chdir flags fib nice user group groups"
+check_namevarlist()
+{
+	local _v
+
+	for _v in $_rc_namevarlist; do
+	case $1 in
+	$_v)	return 0 ;;
+	esac
+	done
+
+	return 1
+}
+
 # _echoonce var msg mode
 #	mode=0: Echo $msg if ${$var} is empty.
 #	        After doing echo, a string is set to ${$var}.



More information about the Midnightbsd-cvs mailing list