summaryrefslogtreecommitdiffstats
path: root/debian/preinst
diff options
context:
space:
mode:
Diffstat (limited to 'debian/preinst')
-rw-r--r--debian/preinst62
1 files changed, 62 insertions, 0 deletions
diff --git a/debian/preinst b/debian/preinst
new file mode 100644
index 0000000..9ff6b11
--- /dev/null
+++ b/debian/preinst
@@ -0,0 +1,62 @@
+#!/bin/sh
+set -e
+
+#DEBHELPER#
+
+# Source debconf library.
+. /usr/share/debconf/confmodule
+
+errmsg()
+{
+ echo >&2 ''
+ echo >&2 "$@"
+ echo >&2 "try 'dpkg-reconfigure debconf' to select a frontend other than noninteractive"
+ echo >&2 ''
+}
+
+db_get virtualbox-ext-pack/license
+if [ "$RET" = "true" ]; then
+ echo "License has already been accepted." >&2
+ exit 0
+else
+ # show license again
+ db_fset virtualbox-ext-pack/license seen false
+fi
+
+# 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
+ if ! db_get virtualbox-ext-pack/license ; then
+ errmsg "Could not display license."
+ exit 1
+ fi
+ if [ "$RET" = "true" ]; then
+ # license accepted
+ exit 0
+ fi
+ ;;
+ 2) # user has confirmed declining license
+ echo "User did not accept the license." >&2
+ exit 1
+ ;;
+ *) # unknown state
+ echo "State unknown: $STATE" >&2
+ exit 2
+ ;;
+ esac
+ if db_go; then
+ STATE=$(($STATE + 1))
+ else
+ STATE=$(($STATE - 1))
+ fi
+done
+
+# proper exit (0 or 1) above
+errmsg "License could not be presented / was not accepted."
+exit 2