#!/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

# Try nodm and autologin first if configured.
for name in nodm autologin; do
	AUTOLOGIN_EXE="/usr/sbin/$name"
	AUTOLOGIN_CFG="/etc/sysconfig/$name"
	if [ -x "$AUTOLOGIN_EXE" -a -s "$AUTOLOGIN_CFG" ]; then
		EXEC_ARGS=
		. "$AUTOLOGIN_CFG"
		trap 'kill -TERM $!; exit 143' HUP INT TERM
		"$AUTOLOGIN_EXE" $EXEC_ARGS &
		wait $!
		trap - HUP INT TERM
		break
	fi
done

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" $@
}

# Run preferred X display manager

if [ -s /etc/sysconfig/desktop ]; then
	while read name; do
		case "$name" in
			AnotherLevel)	preferred=xdm ;;
			E17)		preferred=entrance ;;
			GNOME)		preferred=gdm ;;
			KDE)		preferred=kdm log=1 ;;
			LDM)		preferred=lightdm ;;
			LXDE)		preferred=lxdm ;;
			MATE)		preferred=mdm ;;
			WindowMaker)	preferred=wdm ;;
			*) 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 mdm; then
	preferred=mdm
elif finddm wdm; then
	preferred=wdm
elif finddm lxdm; then
	preferred=lxdm
elif finddm lightdm; then
	preferred=lightdm
elif finddm entrance; then
	preferred=entrance
elif finddm xdm; then
	preferred=xdm
fi

rundm $@
exit 1
