#!/bin/sh
set -e

export DEBIAN_FRONTEND=none
. /usr/share/debconf/confmodule
. /lib/preseed/preseed.sh

SEEN=1
if [ "$1" = --unseen ]; then
	SEEN=
	shift
fi

file="$1"

OLDIFS="$IFS"
NEWLINE="
"
IFS="$NEWLINE"
CR=$(echo -en "\r")
SPACE=$(echo -en "[ \t]")
# TODO: this squashes \r elsewhere in the line too
for line in $(grep -v '^#\|^[[:space:]]*$' "$file" | sed "s/$CR//g"); do
	IFS="$OLDIFS"
	
	if [ "$line" != "${line%\\\\}" ]; then
		multiline="$multiline${line%\\\\}"
		continue
	elif [ -n "$multiline" ]; then
		line="$multiline$line"
		multiline=""
	fi
	
	echo "$line" >> $logfile

	package=""
	var=""
	type=""
	val=""
	while [ "$line" != "${line#*$SPACE}" ]; do
		if [ -n "${line%%$SPACE*}" ]; then
			if [ -z "$package" ]; then
				package="${line%%$SPACE*}"
			elif [ -z "$var" ]; then
				var="${line%%$SPACE*}"
			elif [ -z "$type" ]; then
				type="${line%%$SPACE*}"
				val="${line#*$SPACE}"
				break
			fi
		fi
		line="${line#*$SPACE}"
	done

	if [ "$type" = seen ]; then
		# Set seen flag.
		db_fset "$var" "$type" "$val" || true # how to handle this error?
	else
		if ! db_set "$var" "$val"; then
			# Question does not exist yet.
			db_register debian-installer/dummy "$var"
			db_set "$var" "$val"
			db_subst "$var" ID "$var"
		fi
		if [ "$SEEN" ]; then
			db_fset "$var" seen true
		fi
	fi
	IFS="$NEWLINE"
done
