rc: save and restore $IFS

Fix another bug in 77e1ccbee3. $IFS
should be fully restored for its other users.

PR:		249192
Reported by:	jkim
MFC after:	3 weeks
X-MFC with:	77e1ccbee3
This commit is contained in:
Cy Schubert 2021-02-25 21:39:18 -08:00
parent 589e4c1df4
commit 763db58932

View File

@ -103,9 +103,10 @@ checkyesno rc_parallel_start && _rc_parallel='-p'
files=`rcorder ${skip} ${skip_firstboot} ${_rc_parallel} /etc/rc.d/* 2>/dev/null`
_rc_elem_done=' '
oldifs="$IFS"
IFS=$'\n'
for _rc_group in ${files}; do
unset IFS
IFS="$oldifs"
for _rc_elem in ${_rc_group}; do
run_rc_script ${_rc_elem} ${_boot} &
_rc_elem_done="${_rc_elem_done}${_rc_elem} "
@ -119,7 +120,7 @@ for _rc_group in ${files}; do
done
unset files local_rc
unset IFS
IFS="$oldifs"
# Now that disks are mounted, for each dir in $local_startup
# search for init scripts that use the new rc.d semantics.
@ -138,7 +139,7 @@ fi
files=`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* ${local_rc} ${_rc_parallel} 2>/dev/null`
IFS=$'\n'
for _rc_group in ${files}; do
unset IFS
IFS="$oldifs"
for _rc_elem in ${_rc_group}; do
case "$_rc_elem_done" in
*" $_rc_elem "*) continue ;;
@ -149,7 +150,7 @@ for _rc_group in ${files}; do
wait
IFS=$'\n'
done
unset IFS
IFS="$oldifs"
# Remove the firstboot sentinel, and reboot if it was requested.
# Be a bit paranoid about removing it to handle the common failure