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()
