1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
#!/bin/sh
# Import foo/bar=baz from environment variables into the debconf db.
set -e
export DEBIAN_FRONTEND=none
. /usr/share/debconf/confmodule
NEWLINE='
'
OLDIFS=$IFS
IFS=$NEWLINE
for line in $(set); do
var="${line%%=*}"
val="${line#[!=]*=}"
# support preseeding without forcing seen flag
if [ "${var%\?}" != "$var" ]; then
var="${var%\?}"
seen=
else
seen=1
fi
# grep out the normal variables with no slashes
varnoslash="${var##*/*}"
if [ "$val" != "" ]; then
if [ "$varnoslash" != "" ]; then
var=$(grep "^$varnoslash[[:space:]]" /etc/preseed_aliases) || true
var=${var#*[[:space:]]}
fi
if [ "$var" != "" ]; then
owner="${var%:*}"
if [ "$owner" = "$var" ]; then
owner="d-i"
fi
var="${var#*:}"
# remove single quotes from around value
val="${val#\'}"
val="${val%\'}"
# remove double quotes (user can type those for values
# with spaces)
val="${val#\"}"
val="${val%\"}"
IFS=$OLDIFS
if ! db_set "$var" "$val"; then
db_register debian-installer/dummy "$var"
db_set "$var" "$val"
db_subst "$var" ID "$var"
fi
if db_metaget "$var" type; then
type="$RET"
else
type=unknown
fi
echo "$owner $var $type $val" >> /var/lib/preseed/log
if [ "$seen" ]; then
db_fset "$var" seen true
else
echo "$owner $var seen false" >> /var/lib/preseed/log
fi
IFS=$NEWLINE
fi
fi
done
|