#!/bin/sh

HOME=/root
PATH=/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
export HOME PATH

# We need to source this so that the login screens get translated
HOME=/var/empty . /etc/profile.d/lang.sh

signal_handler() {
	local rc=$?
	kill -TERM $!
	exit $rc
}

# trap signals to be able to kill autologin
trap signal_handler HUP PIPE INT TERM

# Run preferred X display manager

# Try autologin first, if wanted...
AUTOLOGIN_EXE=/usr/sbin/autologin
AUTOLOGIN_CFG=/etc/sysconfig/autologin
if [ -x "$AUTOLOGIN_EXE" -a -s "$AUTOLOGIN_CFG" ]; then
	EXEC_ARGS=
	. "$AUTOLOGIN_CFG"
	"$AUTOLOGIN_EXE" $EXEC_ARGS &
	wait $!
fi

finddm() {
	which "$1" >/dev/null 2>&1
}

preferred=
log=
rundm() {
	[ -n "$preferred" ] && finddm "$preferred" ||
		return 0
	[ -n "$log" ] &&
		exec "$preferred" >/dev/null 2>&1 $@ ||
		exec "$preferred" $@
}

if [ -s /etc/sysconfig/desktop ]; then
	while read name; do
		case "$name" in
			GNOME)		preferred=gdm ;;
			KDE)		preferred=kdm log=1 ;;
			WindowMaker)	preferred=wdm ;;
			AnotherLevel)	preferred=xdm ;;
			*) continue ;;
		esac
		break
	done < /etc/sysconfig/desktop
	rundm $@
	log=
fi

if finddm kdm; then
	preferred=kdm
	log=1
elif finddm gdm; then
	preferred=gdm
elif finddm wdm; then
	preferred=wdm
elif finddm xdm; then
	preferred=xdm
fi

rundm $@
exit 1
