#!/bin/sh

# $XFree86: xc/programs/Xserver/hw/xfree86/etc/preinst.sh,v 3.8.2.8 1999/08/23 08:49:50 hohndel Exp $
#
# preinst.sh  (for XFree86 3.3.3)
#
# This script should be run before installing a new version.
#
# It removes parts of an existing installation that can cause problems
# when extracting the new version.  This includes symbolic links to old
# beta versions, shared lib symlinks, and old files.
#
# $XConsortium: preinst.sh /main/5 1996/10/28 05:43:40 kaleb $
#

RUNDIR=/usr/X11R6

#
# Don't need this when using 'extract' to do the installation.
#
#LIBLIST=" \
#	libICE.so \
#	libPEX5.so \
#	libSM.so \
#	libX11.so \
#	libXIE.so \
#	libXaw.so \
#	libXext.so \
#	libXi.so \
#	libXmu.so \
#	libXp.so \
#	libXt.so \
#	libXtst.so \
#	liboldX.so \
#	libICE.so.6 \
#	libPEX5.so.6 \
#	libSM.so.6 \
#	libX11.so.6 \
#	libXIE.so.6 \
#	libXaw.so.6 \
#	libXext.so.6 \
#	libXi.so.6 \
#	libXmu.so.6 \
#	libXp.so.6 \
#	libXt.so.6 \
#	libXtst.so.6 \
#	liboldX.so.6 \
#	"

OLDFILES=" \
	lib/X11/doc/LbxproxyOnly \
	lib/X11/xkb/keycodes/sgi \
	lib/X11/xkb/symbols/de_nodead \
	"

# First, do some checks for Linux/ELF

if [ "`uname`" = Linux ]; then
	if file -L /bin/sh | grep ELF >/dev/null 2>&1; then
	    case "`arch`" in
	    i*86)
		echo ""
		if ldd /bin/sh | grep "libc.so.6" >/dev/null 2>&1; then
		    echo "You appear to have an glibc (libc-6) based system."
		    echo "Make sure you are installing the 'Linux-ix86-glibc' binary dist"
		else
		    echo "You appear to have an ELF system."
		    echo "Make sure you are installing the 'Linux-ix86-libc5' binary dist"
		    echo "and *not* the 'Linux-ix86-glibc' binary dist"
		fi
		;;
	    esac
	    # Check ldconfig
	    LDSO=`/sbin/ldconfig -v -n | awk '{ print $3 }'`
	    LDSOMIN=`echo $LDSO | awk -F[.-] '{ print $3 }'`
	    LDSOMID=`echo $LDSO | awk -F[.-] '{ print $2 }'`
	    LDSOMAJ=`echo $LDSO | awk -F[.-] '{ print $1 }'`
	    if [ "$LDSOMAJ" -gt 1 ]; then
	    	: OK
	    else
	    	if [ "$LDSOMID" -gt 7 ]; then
	    		: OK
	    	else
		    if [ "$LDSOMIN" -ge 14 ]; then
			: OK
		    else
	    		echo ""
	    		echo "Before continuing you will need to get a current version of ld.so."
	    		echo "Version 1.7.14 or newer will do."
	    		NEEDSOMETHING=YES
		    fi
		fi
	    fi
	else
	    case "`arch`" in
	    i*86)
		echo ""
		echo "You appear to have an a.out system."
		echo "a.out binaries are not available for this release"
		exit 1
		;;
	    esac
	fi
	# Check if /dev/tty0 exists
	if [ -c /dev/tty0 -o -h /dev/tty0 ]; then
	    : OK
	else
	    echo ""
	    echo "/dev/tty0 does not exist.  The X servers need this device."
	    echo "Do you want me to create it for you? (y/n)"
	    read response
	    echo ""
	    case "$response" in
	    [yY]*)
		(cd /dev; ./MAKEDEV tty0) >/dev/null 2>&1
		if [ ! -c /dev/tty0 ]; then
		    (mknod /dev/tty0 c 4 0; chown root.tty /dev/tty0;
		     chmod 622 /dev/tty0) >/dev/null 2>&1
		fi
		if [ ! -c /dev/tty0 ]; then
		    echo "Unable to create /dev/tty0"
		    echo ""
		    echo "Try to do it manually by running either of the following commands as root:"
		    echo "    cd /dev; ./MAKEDEV tty0"
		    echo "or:"
		    echo "    mknod /dev/tty0 c 4 0; chown root.tty /dev/tty0; chmod 622 /dev/tty0"
		    NEEDSOMETHING=YES
		fi
		;;
	    *)
		echo "You will need to create the device yourself before proceeding"
		NEEDSOMETHING=YES
		;;
	    esac
	fi
fi

if [ X"$NEEDSOMETHING" != X ]; then
	echo ""
	echo "When you've made the required updates, re-run this script"
	echo "before continuing with the installation"
	exit 1
fi


# If there is no previous installation, there is nothing more to do

if [ ! -d $RUNDIR/. ]; then
	echo ""
	echo Done
	exit 0
fi

echo ""
echo "You are strongly advised to backup your /usr/X11R6 directory before"
echo "proceeding with this installation, especially if you have customised"
echo "any configuration files.  This is best done by either backing"
echo "it up to tape, or making a backup copy of it.  It is not recommended"
echo "that you simply rename the existing directory because you will then"
echo "likely have problems finding other things that have been installed"
echo "there.  If you do have such a problem, and didn't follow this advice"
echo "please do not contact us about it when you find things missing."
echo ""
echo "This installation will overwrite existing files."
echo ""
echo "Do you want to continue? (y/n) "
read response
case "$response" in
	[yY]*)
		;;
	*)
		echo Aborting
		exit 1
		;;
esac

#for i in $LIBLIST; do
#	if [ -h $RUNDIR/lib/$i ]; then
#		echo Removing old library link $RUNDIR/lib/$i
#		rm -f $RUNDIR/lib/$i
#	fi
#done

for i in $OLDFILES; do
	if [ -f $RUNDIR/$i ]; then
		echo Removing old file $RUNDIR/$i
		rm -f $RUNDIR/$i
	fi
done

echo ""
echo Done

exit 0
