From: Sascha Wildner Date: Sun, 26 Jul 2009 21:39:27 +0000 (+0200) Subject: Repair rcenable(8) and rcdisable(8). X-Git-Tag: v2.4.0~392^2 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/6eb624aa085be3e16ad3bc94c9cc6768f41e236a Repair rcenable(8) and rcdisable(8). * rcenable(8) was not playing nicely with our three year old change to no longer depend on _enable being appended to rc variables for starting daemons etc. (i.e., foo_enable=yes and foo=yes both work). * rcdisable(8) did not properly run rcstop(8) because that needs to be run when the variable is still set to 'yes' and not after it's been set to 'no'. Noticed-by: phma on #dragonflybsd --- diff --git a/sbin/rcrun/rcrun.sh b/sbin/rcrun/rcrun.sh index 4619e4dfd8..f5b23351f9 100644 --- a/sbin/rcrun/rcrun.sh +++ b/sbin/rcrun/rcrun.sh @@ -140,18 +140,19 @@ disable|enable) elif [ `varsym -s -q rcng_$i` = "$mode" ]; then echo "$i is already $mode" else - vars=`(cd /etc/rc.d; sh $j rcvar) 2>/dev/null | egrep '_enable' | sed -e 's/\\$//g' | sed -e 's/=.*//g'` + vars=`(cd /etc/rc.d; sh $j rcvar) 2>/dev/null | grep = | sed -e 's/\\$//g' | sed -e 's/=.*//g'` cp /etc/rc.conf /etc/rc.conf.bak + if [ $arg = disable ]; then + rcstop $i + fi for k in $vars; do rm -f /etc/rc.conf.$$ - ( egrep -v "#rcrun ${k}" /etc/rc.conf; printf "${k}=${mode}\t#rcrun ${k}_enable\n" ) > /etc/rc.conf.$$ + ( egrep -v "# rcrun enable ${k}$" /etc/rc.conf; printf "${k}=${mode}\t# rcrun enable ${k}\n" ) > /etc/rc.conf.$$ mv -f /etc/rc.conf.$$ /etc/rc.conf echo "added/modified: ${k}=${mode}" done if [ $arg = enable ]; then rcstart $i - else - rcstop $i fi fi done