#!/bin/bash

export LD_LIBRARY_PATH=./opt/tbupddlx:$LD_LIBRARY_PATH

echo Processing... ;

if [ "$DISPLAY" == "" ] ; then
	echo "You must use \"su\" or \"kdesu\" to become the root user before installing";
	exit;
fi

## SE Linux processing and library installation needed for install to work
if [ -d /selinux ] ; then
	chcon -f -t texrel_shlib_t ./opt/tbupddlx/*.so >& /dev/null;
fi

if [ -d /usr/local/lib64 ] ; then
    cp ./opt/tbupddlx/*.so /usr/local/lib64 >& /dev/null
    cp libACE.so.5.6.0 /usr/local/lib64 >& /dev/null
    /sbin/ldconfig /usr/local/lib64 >& /dev/null
else
    cp ./opt/tbupddlx/*.so /usr/local/lib >& /dev/null
    cp libACE.so.5.6.0 /usr/local/lib >& /dev/null
    /sbin/ldconfig /usr/local/lib >& /dev/null
fi

if [ -d /selinux ] ; then
	if [ -d /usr/local/lib ] ; then
		chcon -f -t texrel_shlib_t /usr/local/lib/*.so >& /dev/null;
	fi
	if [ -d /usr/local/lib64 ] ; then
		chcon -f -t texrel_shlib_t /usr/local/lib64/*.so >& /dev/null;
	fi
fi

## Copying of tmp files and killing of old UPDD processes that could interfere with install

rm -r /tmp/tbtemp >& /dev/null;
mkdir -p /tmp/tbtemp/opt >& /dev/null;
cp -R ./opt/tbupddlx /tmp/tbtemp/opt >& /dev/null;
chmod a+w /tmp/tbtemp/opt/tbupddlx/tbupdd.ini >& /dev/null;
killall tbupddwu >& /dev/null;

## Run dcu to allow user to select controller and distribution	       
./opt/tbupddlx/dcu /setup >& /dev/null
script_exit_value=$?
if [ "${script_exit_value}" -ne "0" ] ; then
        echo "Install failed"
else

## Ok! Lets copy some files and run some processes...       	
	rm /tbupddlx/tbupddlx >& /dev/null
	cp -R /tmp/tbtemp/opt/tbupddlx /opt >& /dev/null
				
	if [ -d /usr/lib/xorg/modules/input ] ; then
	    cp /opt/tbupddlx/xf86_tbupddlx_drv.so /usr/lib/xorg/modules/input >& /dev/null
	    chcon -t texrel_shlib_t /usr/lib/xorg/modules/input/xf86_tbupddlx_drv.so >& /dev/null
	fi

	if [ -d /usr/lib64/xorg/modules/input ] ; then
	    cp /opt/tbupddlx/xf86_tbupddlx_drv.so /usr/lib64/xorg/modules/input >& /dev/null
	    chcon -t texrel_shlib_t /usr/lib64/xorg/modules/input/xf86_tbupddlx_drv.so >& /dev/null
	fi

	if [ -d /usr/X11R6/lib/modules/input ] ; then
	    cp /opt/tbupddlx/xf86_tbupddlx.o /usr/X11R6/lib/modules/input >& /dev/null	    
	fi	

	if [ -d /usr/X11R6/lib64/modules/input ] ; then	
	    cp /opt/tbupddlx/xf86_tbupddlx.o /usr/X11R6/lib64/modules/input >& /dev/null
	fi

	cp /opt/tbupddlx/10x11-updd /etc/X11/Xsession.d >& /dev/null
	cp /opt/tbupddlx/tblinuxmouse /usr/bin >& /dev/null
	
	#cp /opt/tbupddlx/*.so /usr/local/lib
	mkfifo /opt/tbupddlx/comReadPipe >& /dev/null
	chmod 666 /opt/tbupddlx/comReadPipe >& /dev/null
	chmod -R a+r /opt/tbupddlx >& /dev/null
	chmod -R a+x /opt/tbupddlx >& /dev/null
	chmod a+w /opt/tbupddlx/Calibrate >& /dev/null
	chmod a+w /opt/tbupddlx/Console >& /dev/null
	perl /opt/tbupddlx/xins  >& /dev/null #note that distribution scripts are executed in xins

	/opt/tbupddlx/tbupddwu >& /dev/null &

## Run success dialogue
	./opt/tbupddlx/dcu /setup2  >& /dev/null
fi
