Some notes to demo the diff below:

# -=-=-=-=-=-=-= Assignment:

me$ _STATIC_RCCONF='/etc/rc.conf'
me$ _RCCONF="${_STATIC_RCCONF}.local"


# -=-=-=-=-=-=-= Test 1:

me$ print ${_STATIC_RCCONF} ${_RCCONF}
/etc/rc.conf /etc/rc.conf.local

me$ print ${_RCCONF%/*} ${_RCCONF##*/}
/etc rc.conf.local


# -=-=-=-=-=-=-= Test 2:

me$ _TMP_RCCONF=$(mktemp -p ${_RCCONF%/*} -t ${_RCCONF##*/}.XXXXXXXXXX) || 
print $?
mktemp: cannot make temp file /etc/rc.conf.local.luzxGjy18I: Permission denied
1


# -=-=-=-=-=-=-= Reassignment:

me$ _STATIC_RCCONF='/tmp/rc.conf'
me$ _RCCONF="${_STATIC_RCCONF}.local"


# -=-=-=-=-=-=-= Test 3:

me$ _TMP_RCCONF=$(mktemp -p ${_RCCONF%/*} -t ${_RCCONF##*/}.XXXXXXXXXX) || 
print $?
me$ ls ${_TMP_RCCONF}
/tmp/rc.conf.local.ZLyVBCNMtk





Index: rcctl.sh
===================================================================
RCS file: /cvs/src/usr.sbin/rcctl/rcctl.sh,v
retrieving revision 1.41
diff -u -p -r1.41 rcctl.sh
--- rcctl.sh    10 Oct 2014 15:59:36 -0000      1.41
+++ rcctl.sh    11 Oct 2014 12:41:22 -0000
@@ -18,7 +18,9 @@
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 _special_services="accounting check_quotas ipsec multicast_host 
multicast_router pf spamd_black"
-readonly _special_services
+_STATIC_RCCONF='/etc/rc.conf'
+_RCCONF="${_STATIC_RCCONF}.local"
+readonly _special_services _STATIC_RCCONF _RCCONF
 
 # get local functions from rc.subr(8)
 FUNCS_ONLY=1
@@ -38,21 +40,21 @@ needs_root()
 
 rcconf_edit_begin()
 {
-       _TMP_RCCONF=$(mktemp -p /etc -t rc.conf.local.XXXXXXXXXX) || exit 1
-       if [ -f /etc/rc.conf.local ]; then
+       _TMP_RCCONF=$(mktemp -p ${_RCCONF%/*} -t ${_RCCONF##*/}.XXXXXXXXXX) || 
exit
+       if [ -f ${_RCCONF} ]; then
                # only to keep permissions (file content is not needed)
-               cp -p /etc/rc.conf.local ${_TMP_RCCONF} || exit 1
+               cp -p ${_RCCONF} ${_TMP_RCCONF} || exit 1
        else
-               touch /etc/rc.conf.local || exit 1
+               touch ${_RCCONF} || exit 1
        fi
 }
 
 rcconf_edit_end()
 {
        sort -u -o ${_TMP_RCCONF} ${_TMP_RCCONF} || exit 1
-       mv ${_TMP_RCCONF} /etc/rc.conf.local || exit 1
-       if [ ! -s /etc/rc.conf.local ]; then
-               rm /etc/rc.conf.local || exit 1
+       mv ${_TMP_RCCONF} ${_RCCONF} || exit 1
+       if [ ! -s ${_RCCONF} ]; then
+               rm ${_RCCONF} || exit 1
        fi
 }
 
@@ -62,7 +64,7 @@ svc_default_enabled()
        [ -n "${_svc}" ] || return
        local _ret=1
 
-       _rc_parse_conf /etc/rc.conf
+       _rc_parse_conf ${_STATIC_RCCONF}
        svc_is_enabled ${_svc} && _ret=0
        _rc_parse_conf
 
@@ -166,7 +168,7 @@ append_to_pkg_scripts()
        if [ -z "${pkg_scripts}" ]; then
                echo pkg_scripts="${_svc}" >>${_TMP_RCCONF}
        elif ! echo ${pkg_scripts} | grep -qw ${_svc}; then
-               grep -v "^pkg_scripts.*=" /etc/rc.conf.local >${_TMP_RCCONF}
+               grep -v "^pkg_scripts.*=" ${_RCCONF} >${_TMP_RCCONF}
                echo pkg_scripts="${pkg_scripts} ${_svc}" >>${_TMP_RCCONF}
        fi
        rcconf_edit_end
@@ -182,7 +184,7 @@ rm_from_pkg_scripts()
        rcconf_edit_begin
        sed "/^pkg_scripts[[:>:]]/{s/[[:<:]]${_svc}[[:>:]]//g
            s/['\"]//g;s/ *= */=/;s/   */ /g;s/ $//;/=$/d;}" \
-           /etc/rc.conf.local >${_TMP_RCCONF}
+           ${_RCCONF} >${_TMP_RCCONF}
        rcconf_edit_end
 }
 
@@ -193,7 +195,7 @@ add_flags()
 
        if svc_is_special ${_svc}; then
                rcconf_edit_begin
-               grep -v "^${_svc}.*=" /etc/rc.conf.local >${_TMP_RCCONF}
+               grep -v "^${_svc}.*=" ${_RCCONF} >${_TMP_RCCONF}
                if ! svc_default_enabled ${_svc}; then
                        echo "${_svc}=YES" >>${_TMP_RCCONF}
                fi
@@ -219,7 +221,7 @@ add_flags()
        fi
 
        rcconf_edit_begin
-       grep -v "^${_svc}_flags.*=" /etc/rc.conf.local >${_TMP_RCCONF}
+       grep -v "^${_svc}_flags.*=" ${_RCCONF} >${_TMP_RCCONF}
        if [ -n "${_flags}" ] || \
           ( svc_is_base ${_svc} && ! svc_default_enabled ${_svc} ); then
                echo ${_svc}_flags=${_flags} >>${_TMP_RCCONF}
@@ -234,12 +236,12 @@ rm_flags()
 
        rcconf_edit_begin
        if svc_is_special ${_svc}; then
-               grep -v "^${_svc}.*=" /etc/rc.conf.local >${_TMP_RCCONF}
+               grep -v "^${_svc}.*=" ${_RCCONF} >${_TMP_RCCONF}
                if svc_default_enabled ${_svc}; then
                        echo "${_svc}=NO" >>${_TMP_RCCONF}
                fi
        else
-               grep -v "^${_svc}_flags.*=" /etc/rc.conf.local >${_TMP_RCCONF}
+               grep -v "^${_svc}_flags.*=" ${_RCCONF} >${_TMP_RCCONF}
                if svc_default_enabled ${_svc}; then
                        echo "${_svc}_flags=NO" >>${_TMP_RCCONF}
                fi

Reply via email to