#!/bin/sh
#
# Bochsconf -- Bochs configuration script for Debian
#
# Copyright (c) 2002 Robert Millan
#
# Protected by GNU GPL, See /usr/share/common-licenses/GPL for license terms

set -e

echo "
Bochsconf -- Bochs configuration script for Debian
"
if test -e $HOME/.bochs && test ! -d $HOME/.bochs ; then
  echo "Error: $HOME/.bochs exists and is not a directory!" ; exit 1
elif test ! -e $HOME/.bochs ; then
  mkdir $HOME/.bochs
fi

echo -n "
Bochs is configured by default to provide a virtual hard disk for use within
the emulator. Your guest operating system will handle it like a real hard disk.

In order to do that, Bochs requires a fixed size disk image.

Do you want to generate a virtual disk image for Bochs? [yes] "
image="" ; read image
if ! [ "$image" = "n" ] && ! [ "$image" = "no" ] ; then
  echo -n "Pick a size in MB for your image: [504] "

  # we do some work while user thinks
  if which bximage >/dev/null ; then generator=bximage
  elif which createdisk >/dev/null ; then generator=createdisk
  else generator=none
  fi

  # and get response
  size="" ; read size

  # location default
  location=$HOME/.bochs/guest.hd0

  # size default
  if test -z $size ; then size=504 ; fi

  # we get a random location
  bximage_wrap=`tempfile`

  # and put our wrap codes there
  cat <<EOF > $bximage_wrap
hd
$size
$location
EOF
  if test ! -e $location ; then
    if test $generator = bximage ; then
      echo "creating disk image..."
      cylinders=`cat $bximage_wrap | bximage | grep "  cyl=" | cut -c 7-`
    elif test $generator = createdisk ; then
      echo "creating disk image..."
      cylinders=`createdisk $location $size | grep "C\: " | rev | cut -f 1 -d " " | rev`
    else
      echo "
Neither bximage or createdisk found. Please install one of these packages."
      exit 1
    fi
  else
    echo "
$location already exists, not recreating"
  fi
else
  echo "
Exiting.."
  exit 0
fi

# time to build ~/.bochsrc

if test -f $HOME/.bochsrc; then
  echo -n "Found existant configuration in $HOME/.bochsrc, overwrite? [no] "
  overwrite="" ; read overwrite
  if ! [ "$overwrite" = "y" ] && ! [ "$overwrite" = "yes" ] ; then
    echo "
Exiting.."
    exit 0
  fi
fi
echo "copying bochsrc template to your home directory..."
if test -f /usr/share/doc/bochs/examples/bochsrc.gz ; then
  gunzip -c /usr/share/doc/bochs/examples/bochsrc.gz |\
  sed s/\#size\#/$size/g |\
  sed s/\#cylinders\#/$cylinders/g > $HOME/.bochsrc
else
  cat /usr/share/doc/bochs/examples/bochsrc |\
  sed s/\#size\#/$size/g |\
  sed s/\#cylinders\#/$cylinders/g > $HOME/.bochsrc
fi

# clean up
rm -f $bximage_wrap

echo "
Bochs has been succesfully configured for user `whoami`!"

exit 0
