+# == business-logic of command line parameter-processing
+
+# source configuration file in <confdir> if supplied. {{{
+[ "$_opt_confdir" ] && {
+ CONFFILES=$_opt_confdir
+ einfo "Using config files under $CONFFILES/."
+ if ! [ -r "$CONFFILES/config" ] ; then
+ eerror "Error: config file $CONFFILES/config not found."; eend 1; exit 1
+ fi
+ if ! . "$CONFFILES/config" ; then
+ eerror "Error reading config file $CONFFILES/config" ; eend 1 ; exit 1
+ fi
+ # restore the command line parameter value
+ CONFFILES=$_opt_confdir
+}
+# }}}
+
+[ "$_opt_mirror" ] && MIRROR=$_opt_mirror
+[ "$_opt_iso" ] && ISO=$_opt_iso
+[ "$_opt_release" ] && RELEASE=$_opt_release
+[ "$_opt_target" ] && TARGET=$_opt_target
+[ "$_opt_mntpoint" ] && MNTPOINT=$_opt_mntpoint
+[ "$_opt_debopt" ] && DEBOOTSTRAP_OPT=$_opt_debopt
+[ "$_opt_interactive" ] && INTERACTIVE=1
+[ "$_opt_config" ] && CONFIGFILE=$_opt_config
+[ "$_opt_packages_set" ] && PACKAGES='yes'
+[ "$_opt_debconf_set" ] && DEBCONF='yes'
+[ "$_opt_keep_src_list" ] && KEEP_SRC_LIST='yes'
+[ "$_opt_hostname" ] && HOSTNAME=$_opt_hostname
+[ "$_opt_password" ] && ROOTPASSWORD=$_opt_password
+[ "$_opt_bootappend" ] && BOOT_APPEND=$_opt_bootappend
+[ "$_opt_groot" ] && GROOT=$_opt_groot
+[ "$_opt_grub" ] && GRUB=$_opt_grub
+[ "$_opt_verbose" ] && VERBOSE="-v"
+
+[ "$_opt_help" ] && {
+ usage ; eend 0
+ eend 0
+ exit 0
+}
+
+[ "$_opt_version" ] && {
+ einfo "$PN - version $VERSION"
+ einfo "Send bug reports to bugs@grml.org or http://grml.org/bugs/"
+ eend 0
+ exit 0
+}
+# }}}
+
+# welcome screen {{{
+welcome_dialog()
+{
+ dialog --title "$PN" --yesno "Welcome to the interactive configuration of ${PN}.
+Do you want to continue installing Debian using this frontend?" 0 0
+}
+# }}}
+
+# ask for target {{{
+prompt_for_target()
+{
+ AVAILABLE_PARTITIONS=$(LANG=C fdisk -l 2>/dev/null | \
+ sed 's/*//' | \
+ grep -v 'Extended$' | \
+ gawk -v num=0 -v ORS=' ' '/^\/dev\// {print $1}')
+
+ if [ -z "$AVAILABLE_PARTITIONS" ] ; then
+ dialog --title "$PN" --trim \
+ --msgbox "Sorry, no partitions found. Please configure your
+ harddisks (see /proc/partitions) using a tool like fdisk,
+ cfdisk, gpart, gparted,..." 0 0
+ exit 0
+ fi
+
+ PARTITION_LIST=$(for i in $(echo $AVAILABLE_PARTITIONS) ; do
+ echo "$i $(vol_id --type $i 2>/dev/null || echo [no_filesystem_yet])"
+ done)
+
+ TARGET=$(dialog --title "$PN" --single-quoted --stdout \
+ --menu "Please select the target partition:" 0 0 0 \
+ $PARTITION_LIST)
+}
+# }}}
+
+# ask for bootmanager {{{
+prompt_for_bootmanager()
+{
+ ADDITIONAL_PARAMS=""
+ for device in sda hda; do
+ if [ /dev/$device != ${TARGET%[0-9]} ]; then
+ grep -q $device /proc/partitions && \
+ ADDITIONAL_PARAMS=:$device:"install bootmanager grub into MBR of /dev/${device}"
+ fi
+ done
+ ADDITIONAL_PARAMS=${ADDITIONAL_PARAMS#:}
+
+ OIFS="$IFS"; IFS=:
+
+ if echo $TARGET | grep -q "/dev/md" ; then
+ MBRPART="all disks of Software RAID $TARGET"
+ else
+ MBRPART="MBR of ${TARGET%[0-9]}"
+ fi
+
+ GETMBR=$(dialog --stdout --title "$PN" --default-item mbr \
+ --menu "Where do you want to install the bootmanager grub?" 0 0 0 \
+ mbr "install bootmanager into $MBRPART" \
+ partition "install bootmanager into partition $TARGET" \
+ nowhere "do not install bootmanager at all" \
+ ${ADDITIONAL_PARAMS})
+ [ $? -eq 0 ] || bailout 3
+ IFS="$OIFS"
+
+ case "$GETMBR" in
+ mbr)
+ # /dev/md0: has to be installed in MBR of /dev/md0 and not in /dev/md:
+ if echo $TARGET | grep -q "*md*" ; then
+ BOOT_PARTITION="${TARGET}"
+ else
+ BOOT_PARTITION="${TARGET%[0-9]}"
+ fi
+ ;;
+ partition)
+ BOOT_PARTITION="$TARGET"
+ ;;
+ hda)
+ BOOT_PARTITION="/dev/hda"
+ ;;
+ sda)
+ BOOT_PARTITION="/dev/sda"
+ ;;
+ nowhere)
+ BOOT_PARTITION=''
+ ;;
+ esac