#!/bin/sh

msg=

unquote() {
	local var="$1" out="$2"
	if [ -z "${out##*\'}${out%%\'*}" ]; then
		out="${out#\'}"
		out="${out%\'}"
	elif [ -z "${out##*\"}${out%%\"*}" ]; then
		out="${out#\"}"
		out="${out%\"}"
	fi
	eval "$var=\"\$out\""
}


parse_attrs() {
	multival=
	case "$n" in
		*:m) multival=1 ;;
	esac
	n="${n%:*}"
}

export_multi() {
	local i= n="$1" v="$2"
	eval "i=\${$n:-0}"
	eval export "$n$i=\"\$v\""
	eval export "$n=$(($i+1))"
}

run() {
	local x s n v l=
	local CMDLINE_PARAMS

	read CMDLINE </proc/cmdline
	export CMDLINE

	for x in /etc/initrd/*; do
		if [ -s "$x" ]; then
			. "$x"
			l="$l ${CMDLINE_PARAMS-}"
		fi
	done

	for x in $CMDLINE; do
		s="$(replace -s= "[a-z]-." "[A-Z]__" "$x")"
		for n in $l; do
			parse_attrs
			case "$s" in
				RW)	readonly=	;;
				RO)	readonly=1	;;
				$n)	export "$s=1"	;;
				$n=*)
					v="${s#*=}"
					unquote v "$v"
					[ -n "$multival" ] &&
						export_multi "$n" "$v" ||
						eval export "$n=\"\$v\""
					;;
			esac
		done
	done

	[ -z "$DEBUG" ] || QUIET=
	STOP=",$STOP,"
	IGNORE=",$IGNORE,"
}
