summaryrefslogtreecommitdiffstats
path: root/debian/firmware-ivtv.preinst
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--debian/firmware-ivtv.preinst76
1 files changed, 76 insertions, 0 deletions
diff --git a/debian/firmware-ivtv.preinst b/debian/firmware-ivtv.preinst
new file mode 100644
index 0000000..b4cedce
--- /dev/null
+++ b/debian/firmware-ivtv.preinst
@@ -0,0 +1,76 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+db_version 2.0
+db_capb backup
+
+#Valid values are "required" and "no-preseed"
+license_accept=required
+
+errmsg()
+{
+ echo >&2 ''
+ echo >&2 "$@"
+ echo >&2 "try 'dpkg-reconfigure debconf' to select a frontend other than noninteractive"
+ echo >&2 ''
+}
+
+ask()
+{
+ # facilitate backup capability per debconf-devel(7)
+ STATE=1
+ while true; do
+ case "$STATE" in
+ 0) # ensure going back from license presentment is harmless
+ STATE=1
+ continue
+ ;;
+ 1) # present license
+ db_get firmware-ivtv/license/accepted
+ if [ "$RET" != true -o "${license_accept}" = "no-preseed" ]; then
+ db_fset firmware-ivtv/license/accepted seen false
+ if ! db_input critical firmware-ivtv/license/accepted ; then
+ errmsg "firmware-ivtv agree question could not be asked"
+ exit 2
+ fi
+ fi
+ ;;
+ 2) # determine users' choice
+ db_get firmware-ivtv/license/accepted
+ if [ "$RET" = "true" ]; then
+ exit 0
+ fi
+ # error on decline license (give user chance to back up)
+ db_input critical firmware-ivtv/license/error
+ ;;
+ 3)
+ echo "user did not accept the firmware-ivtv license" >&2
+ exit 1
+ ;;
+ *) # unknown state
+ echo "firmware-ivtv license state unknown: $STATE" >&2
+ exit 2
+ ;;
+ esac
+ if db_go; then
+ STATE=$(($STATE + 1))
+ else
+ STATE=$(($STATE - 1))
+ fi
+ done
+}
+
+if [ "$FIRMWARE_IVTV_LICENSE_READ_AND_ACCEPTED" = yes ]; then
+ db_set firmware-ivtv/license/accepted true
+fi
+
+db_get firmware-ivtv/license/accepted
+if [ "$RET" != "true" ]; then
+ ask
+ RESULT=$?
+ [ "$RESULT" = 0 ] || exit $RESULT
+fi
+
+#DEBHELPER#
+
+exit 0