Add ${name}_env and ${name}_prepend. ${name}_env is an argument list which

will be passed to env(1).  ${name}_prepend is simply prepended to the command
line for $command.
This commit is contained in:
hrs 2014-10-11 23:49:27 +00:00
parent fde7fd8dbc
commit 77616d41a2
2 changed files with 36 additions and 2 deletions

View File

@ -749,6 +749,8 @@ check_startmsgs()
# NOTE: $flags from the parent environment
# can be used to override this.
#
# ${name}_env n Environment variables to run ${command} with.
#
# ${name}_fib n Routing table number to run ${command} with.
#
# ${name}_nice n Nice level to run ${command} at.
@ -764,6 +766,8 @@ check_startmsgs()
# to run the chrooted ${command} with.
# Requires /usr to be mounted.
#
# ${name}_prepend n Command added before ${command}.
#
# ${rc_arg}_cmd n If set, use this as the method when invoked;
# Otherwise, use default command (see below)
#
@ -937,7 +941,8 @@ run_rc_command()
eval _chdir=\$${name}_chdir _chroot=\$${name}_chroot \
_nice=\$${name}_nice _user=\$${name}_user \
_group=\$${name}_group _groups=\$${name}_groups \
_fib=\$${name}_fib
_fib=\$${name}_fib _env=\$${name}_env \
_prepend=\$${name}_prepend
if [ -n "$_user" ]; then # unset $_user if running as that user
if [ "$_user" = "$(eval $IDCMD)" ]; then
@ -1022,12 +1027,14 @@ run_rc_command()
_doit="\
${_nice:+nice -n $_nice }\
${_fib:+setfib -F $_fib }\
${_env:+env $_env }\
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 }\
${_env:+env $_env }\
$command $rc_flags $command_args"
if [ -n "$_user" ]; then
_doit="su -m $_user -c 'sh -c \"$_doit\"'"
@ -1038,6 +1045,9 @@ $command $rc_flags $command_args"
fi
_doit="nice -n $_nice $_doit"
fi
if [ -n "$_prepend" ]; then
_doit="$_prepend $_doit"
fi
fi
# run the full command

View File

@ -29,7 +29,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd September 23, 2012
.Dd October 12, 2014
.Dt RC.SUBR 8
.Os
.Sh NAME
@ -568,6 +568,22 @@ to before running
Only supported after
.Pa /usr
is mounted.
.It Va ${name}_env
A list of environment variables to run
.Va command
with.
This will be passed as arguments to
.Xr env 1
utility.
.It Va ${name}_fib
FIB
.Pa Routing Table
number to run
.Va command
with.
See
.Xr setfib 1
for more details.
.It Va ${name}_flags
Arguments to call
.Va command
@ -622,6 +638,14 @@ as.
Comma separated list of supplementary groups to run the chrooted
.Va command
with.
.It Va ${name}_prepend
Commands to be prepended to
.Va command .
This is a generic version of
.Va ${name}_env ,
.Va ${name}_fib ,
or
.Va ${name}_nice .
.It Ar argument Ns Va _cmd
Shell commands which override the default method for
.Ar argument .