diff options
Diffstat (limited to 'prefdm')
-rwxr-xr-x | prefdm | 37 |
1 files changed, 32 insertions, 5 deletions
@@ -2,7 +2,6 @@ PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin - # shut down any graphical boot that might exist if [ -x /usr/bin/rhgb-client ]; then /usr/bin/rhgb-client -quit @@ -26,12 +25,40 @@ fi shopt -s execfail -[ -n "$preferred" ] && exec $preferred "$@" >/dev/null 2>&1 +# If we're in early-login mode and something is running, bail out +if grep -q early-login /proc/cmdline 2> /dev/null ; then + if [ -n "$preferred" ]; then + pidof $preferred >/dev/null 2>&1 && exit 0 + fi + pidof gdm-binary >/dev/null 2>&1 && exit 0 + pidof kdm >/dev/null 2>&1 && exit 0 + pidof xdm >/dev/null 2>&1 && exit 0 +fi + +if [ -n "$preferred" ]; then + $preferred "$@" >/dev/null 2>&1 + if [ $? -ne 127 ]; then + exec $0 "$@" + exit $? + fi +fi # Fallbacks, in order -exec gdm "$@" >/dev/null 2>&1 -exec kdm "$@" >/dev/null 2>&1 -exec xdm "$@" >/dev/null 2>&1 +gdm "$@" >/dev/null 2>&1 +if [ $? -ne 127 ]; then + exec $0 "$@" + exit $? +fi +kdm "$@" >/dev/null 2>&1 +if [ $? -ne 127 ]; then + exec $0 "$@" + exit $? +fi +xdm "$@" >/dev/null 2>&1 +if [ $? -ne 127 ]; then + exec $0 "$@" + exit $? +fi # catch all exit error exit 1 |