#!/bin/bash

# This is /usr/sbin/xbase-configure; it is run whenever an X server
# configuration change might have occured.

set -e

xserverpresent=0
xconfig=0

# 0 means definitely remove reference
# 1 means definitely insert reference
# 2 means maybe insert reference
# 3 means definitely don't change
xdmserver=0

# Do we have an X server?
if [ -f /etc/X11/Xserver ]; then
  xserver=`head -1 /etc/X11/Xserver`
else
  xserver=/usr/X11R6/bin/XF86_NONE
fi

if [ -x $xserver ]; then
  xserverpresent=1
fi

if [ $xserverpresent = 0 ]; then
# We don't have an X server.
  xdmserver=0
else

# We have an X server.

# See if we need to configure the X server

if ! [ "$1" = "remove" ]
then

if [ -f /etc/X11/XF86Config ]
then
  if grep "^#debian-not-configured" /etc/X11/xdm/Xservers >/dev/null 2>&1
  then
    xdmserver=2  
  else
    xdmserver=3
  fi
else
  while true
  do
    echo
    echo -n "Do you want to create the XFree86 configuration file (y/n) [y]? "
    read input
    if [ $input = "y" ]
    then
      xconfig=1
      break
    elif [ $input = "n" ]
    then
      xconfig=0
      break
    elif [ ! $input ]
    then
      xconfig=1
      break
    else
      echo "Please answer \`y' or \`n'."
    fi 2>/dev/null
  done
fi

fi

if [ $xconfig = 1 ]
then
  if [ -f /etc/X11/XF86Config ]
  then
    echo
    echo "\`/etc/X11/XF86Config' already exists."
    echo -n "Making a backup copy: "
    cp -b -v -V numbered /etc/X11/XF86Config /etc/X11/XF86Config.bak
    echo
    echo -n "Press <ENTER> to continue: "
    read input
  fi
  /usr/bin/X11/xf86config

  if [ $? = 0 ]
  then
    echo
    echo "Okay.  The XFree86 configuration file has been created."
    echo
    xdmserver=2
  else
    echo
    echo "The XFree86 configuration file was not created. To try creating it"
    echo "at a later date, run /usr/sbin/xbase-configure as root."
    xdmserver=0
  fi
fi

fi

if [ $xdmserver = 2 ]; then
  while true
  do
    echo
    echo -n "Do you want xdm to run an X server on your display? (y/n) [y] "
    read input
    if [ $input = "y" ]
    then
      xdmserver=1
      break
    elif [ $input = "n" ]
    then
      xdmserver=0
      break
    elif [ ! $input ]
    then
      xdmserver=1
      break
    else
      echo "Please answer \`y' or \`n'."
    fi 2>/dev/null
  done
fi

if [ $xdmserver = 0 ]; then
# Remove any references to the X server in /etc/X11/xdm/Xservers
  sed '/^:0/d; /^#debian-not-configured/d' /etc/X11/xdm/Xservers \
	>/etc/X11/xdm/Xservers.new
  mv /etc/X11/xdm/Xservers /etc/X11/xdm/Xservers.bak
  mv /etc/X11/xdm/Xservers.new /etc/X11/xdm/Xservers
fi

if [ $xdmserver = 1 ]; then
# Insert / keep and X server reference in /etc/X11/xdm/Xservers
  sed '/^:0/d; /^#debian-not-configured/d' /etc/X11/xdm/Xservers \
	>/etc/X11/xdm/Xservers.new
  echo ":0 local /usr/X11R6/bin/X" >> /etc/X11/xdm/Xservers.new
  mv /etc/X11/xdm/Xservers /etc/X11/xdm/Xservers.bak
  mv /etc/X11/xdm/Xservers.new /etc/X11/xdm/Xservers
fi

exit 0
