Index: etc/rc.d/sysctl =================================================================== --- etc/rc.d/sysctl (revision 243747) +++ etc/rc.d/sysctl (working copy) @@ -19,33 +19,36 @@ # parse_file() { - if [ -f $1 ]; then - while read var comments - do - case ${var} in - \#*|'') - ;; - *) - mib=${var%=*} - val=${var#*=} + if [ ! -f "$1" ]; then + return 0 + fi + local IFS=" +" + while read line + do + case "${line%\#*}" in + '') + continue + ;; + esac + line="${line%\ *}" - if current_value=`${SYSCTL} -n ${mib} 2>/dev/null`; then - case ${current_value} in - ${val}) - ;; - *) - if ! sysctl "${var}" >/dev/null 2>&1; then - warn "unable to set ${var}" - fi - ;; - esac - elif [ "$2" = "last" ]; then - warn "sysctl ${mib} does not exist." - fi - ;; - esac - done < $1 - fi + mib="${line%=*}" + val="${line#*=}" + val="${val#\"*}" + val="${val%%\"*}" + + if current_value=`${SYSCTL} -n "${mib}" 2>/dev/null`; then + if [ "${current_value}" = "${val}" ]; then + continue + fi + if ! sysctl "${mib}=${val}" >/dev/null 2>&1; then + warn "unable to set ${mib}=${val}" + fi + elif [ "$2" = "last" ]; then + warn "sysctl ${mib} does not exist." + fi + done < "$1" } sysctl_start()