#!/bin/sh if test "x$UNSAFE_TO_TRANSLATE" = "xyes" ; then LANG=C unset LC_ALL unset LC_MESSAGES fi if test -x "$LIBEXECDIR/gdmtranslate" ; then GDMTRANSLATE="$LIBEXECDIR/gdmtranslate" else GDMTRANSLATE= fi gettextfunc () { if test "x$GDMTRANSLATE" != "x" ; then "$GDMTRANSLATE" "$1" else echo "$1" fi } OLD_IFS=$IFS gdmwhich () { COMMAND="$1" OUTPUT= IFS=: for dir in $PATH do if test -x "$dir/$COMMAND" ; then if test "x$OUTPUT" = "x" ; then OUTPUT="$dir/$COMMAND" fi fi done IFS=$OLD_IFS echo "$OUTPUT" } MSG3=`gettextfunc "I cannot start the X server (your graphical interface). It is likely that it is not set up correctly. You will need to log in on a console and rerun the X configuration program. Then restart GDM."` MSG4=`gettextfunc "Would you like me to try to run the X configuration program? Note that you will need the root password for this."` MSG5=`gettextfunc "Please type in the root (privileged user) password."` MSG6=`gettextfunc "I will now try to restart the X server again."` MSG7=`gettextfunc "I will disable this X server for now. Restart GDM when it is configured correctly."` MSG8=`gettextfunc "I cannot start the X server (your graphical interface). It is likely that it is not set up correctly. Would you like to view the X server output to diagnose the problem?"` MSG9=`gettextfunc "Would you like to view the detailed X server output as well?"` # there are some env vars defined: # XLOG = the log file for the X server # BINDIR = location of gdm binaries # SBINDIR = location of gdm system binaries # LIBEXECDIR = location of gdm libexec binaries (gdmaskpass, gdmopen) # return values are # 0 = try again, runs this server again # 1 = abort this display, removes this server from the list # 32 = something went very wrong, things will just get logged. # this means this script didnt work so do alternative things # to tell the user if possible # # First see if we can find an X configuration program # (first one in the list will be used) # XCONFIGURATOR= for n in \ /usr/bin/system-config-display \ /usr/bin/redhat-config-xfree86 \ /usr/sbin/XFdrake \ /usr/bin/X11/XF86Setup \ /usr/bin/X11/Xconfigurator \ /usr/bin/X11/xf86cfg \ ; do # standard shell test has no or and loops have no breaks, eek if test "x$XCONFIGURATOR" = "x" ; then if test -x "$n" ; then XCONFIGURATOR="$n" fi fi done # # Now we check for dialog and gdmaskpass # DIALOG=`gdmwhich dialog` if test "x$DIALOG" = "x" ; then DIALOG=`gdmwhich whiptail` fi if test -x "$LIBEXECDIR/gdmaskpass" ; then ASKPASS="$LIBEXECDIR/gdmaskpass" else ASKPASS= fi # # If this is a mouse problem try mouseconfig and modify some # messages # if grep '^\(Cannot open mouse\|No core pointer\)' "$XLOG" 2> /dev/null ; then MSG8=`gettextfunc "I cannot start the X server (your graphical interface). It seems that the pointer device (your mouse) is not set up correctly. Would you like to view the X server output to diagnose the problem?"` if test -x /usr/sbin/mouseconfig ; then XCONFIGURATOR=/usr/sbin/mouseconfig # Note: we know this is a mouse problem and yay we have mouseconfig MSG4=`gettextfunc "Would you like me to try to run the mouse configuration program? Note that you will need the root password for this."` fi if test -x /usr/bin/system-config-mouse ; then XCONFIGURATOR=/usr/bin/system-config-mouse # Note: we know this is a mouse problem and yay we have system-config-mouse MSG4=`gettextfunc "Would you like me to try to run the mouse configuration program? Note that you will need the root password for this."` fi fi # we require 'gdmopen', to open a console, because we really dont # have one. Perhaps someone should try to figure out some shell # black magic to get this to work on other then linux systems if test ! -x "$LIBEXECDIR/gdmopen" ; then exit 32 fi # when we run ourselves from the open we will pass a -noopen argument if test "x$1" = "x-noopen" ; then shift else # # We do a lot of work wastefully over again, but oh well, # perhaps this needs fixing. # "$LIBEXECDIR/gdmopen" -l /bin/sh -c "$0 -noopen $@" exit $? fi clear # Note, dialog required, though this script could be fixed to not require it # I suppose if test "x" = "x$DIALOG" ; then echo ======================================================================= echo cat "$XLOG" echo echo ======================================================================= echo if test -x /usr/bin/fmt ; then echo "$MSG3" | /usr/bin/fmt else echo "$MSG3" fi echo echo ======================================================================= read exit 1 fi if "$DIALOG" --yesno "$MSG8" 10 50 ; then "$DIALOG" --textbox "$XLOG" 22 76 # Support XFree86 v4 logfile thingie if grep '^(..) Log file: "' "$XLOG" 2> /dev/null ; then XLOG_DETAIL=`grep '^(..) Log file: "' "$XLOG" | sed 's/^[^"]*"\([^"]*\)".*$/\1/'` if "$DIALOG" --yesno "$MSG9" 10 50 ; then "$DIALOG" --textbox "$XLOG_DETAIL" 22 76 fi fi fi if test "x$XCONFIGURATOR" = "x" ; then "$DIALOG" --msgbox "$MSG7" 8 50 exit 1 fi if "$DIALOG" --yesno "$MSG4" 10 50 ; then clear echo echo "$MSG5" if test "x$ASKPASS" = "x" ; then # dirty trick to fool su into asking the root password even if were # root su nobody -c "su -c $XCONFIGURATOR" else if "$ASKPASS" ; then "$XCONFIGURATOR" fi fi clear "$DIALOG" --msgbox "$MSG6" 8 50 exit 0 else "$DIALOG" --msgbox "$MSG7" 8 50 exit 1 fi