#!/bin/sh

# $Id: xserver-xfree86.bug.script 2186 2005-02-11 07:11:05Z branden $

PATH="/sbin:$PATH"
CONFIG_DIR=/etc/X11
SERVER_SYMLINK="$CONFIG_DIR/X"
XF86CONFIG="$CONFIG_DIR/XF86Config-4"
CONFIG_AUX_DIR=/var/lib/xfree86
SERVER_SYMLINK_CHECKSUM="$CONFIG_AUX_DIR/${SERVER_SYMLINK##*/}.md5sum"
SERVER_SYMLINK_ROSTER="$CONFIG_AUX_DIR/${SERVER_SYMLINK##*/}.roster"
XF86CONFIG_CHECKSUM="$CONFIG_AUX_DIR/${XF86CONFIG##*/}.md5sum"
XF86CONFIG_ROSTER="$CONFIG_AUX_DIR/${XF86CONFIG##*/}.roster"

if [ -e "$SERVER_SYMLINK_ROSTER" ]; then
    printf "Contents of $SERVER_SYMLINK_ROSTER:\n" >&3
    cat "$SERVER_SYMLINK_ROSTER" >&3
else
    printf "$SERVER_SYMLINK_ROSTER does not exist.\n" >&3
fi

printf "\n" >&3

if [ -e "$SERVER_SYMLINK" ]; then
    if [ -e "$SERVER_SYMLINK_CHECKSUM" ]; then
        if [ "$(readlink "$SERVER_SYMLINK" | md5sum)" = \
             "$(cat "$SERVER_SYMLINK_CHECKSUM")" ]; then
            printf "%s target unchanged from checksum in %s.\n" \
              "$SERVER_SYMLINK" "$SERVER_SYMLINK_CHECKSUM" >&3
        else
            printf "%s target does not match checksum in %s.\n" \
              "$SERVER_SYMLINK" "$SERVER_SYMLINK_CHECKSUM" >&3
        fi
    else
        printf "$SERVER_SYMLINK_CHECKSUM does not exist.\n" >&3
    fi
    printf "\n" >&3
    printf "X server symlink status:\n" >&3
    ls -dl "$SERVER_SYMLINK" >&3
    ls -dl "$(readlink "$SERVER_SYMLINK")" >&3
else
    printf "$SERVER_SYMLINK does not exist.\n" >&3
fi

if ! [ -L "$SERVER_SYMLINK" ]; then
    printf "$SERVER_SYMLINK is not a symlink.\n" >&3
fi

if ! [ -x "$SERVER_SYMLINK" ]; then
    printf "$SERVER_SYMLINK is not executable.\n" >&3
fi

printf "\n" >&3

if [ -e "$XF86CONFIG_ROSTER" ]; then
    printf "Contents of $XF86CONFIG_ROSTER:\n" >&3
    cat "$XF86CONFIG_ROSTER" >&3
else
    printf "$XF86CONFIG_ROSTER does not exist.\n" >&3
fi

printf "\n" >&3

if which lspci > /dev/null 2>&1; then
    printf "VGA-compatible devices on PCI bus:\n" >&3
    LC_ALL=C lspci | grep 'VGA compatible controller:' >&3
    LC_ALL=C lspci -n | grep 'Class 0300:' >&3
else
    printf "The lspci command was not found; not including PCI data.\n" >&3
fi

printf "\n" >&3

if [ -e "$XF86CONFIG" ]; then
    if [ -e "$XF86CONFIG_CHECKSUM" ]; then
        if [ "$(md5sum "$XF86CONFIG")" = "$(cat "$XF86CONFIG_CHECKSUM")" ]; then
            printf "%s unchanged from checksum in %s.\n" "$XF86CONFIG" \
              "$XF86CONFIG_CHECKSUM" >&3
        else
            printf "%s does not match checksum in %s.\n" "$XF86CONFIG" \
              "$XF86CONFIG_CHECKSUM" >&3
        fi
    else
        printf "$XF86CONFIG_CHECKSUM does not exist.\n" >&3
    fi
    printf "\n" >&3
    printf "XFree86 X server configuration file status:\n" >&3
    ls -dl "$XF86CONFIG" >&3
    printf "\n" >&3
    printf "Contents of $XF86CONFIG:\n" >&3
    cat "$XF86CONFIG" >&3
    printf "\n" >&3
else
    printf "$XF86CONFIG does not exist.\n" >&3
fi

printf "\n" >&3

XFREE86_LOGS=$(ls -dt /var/log/XFree86.*.log 2>/dev/null)

if [ -n "$XFREE86_LOGS" ]; then
    printf "XFree86 X server log files on system:\n" >&3
    ls -dlrt /var/log/XFree86.*.log >&3 2>/dev/null
    printf "\n" >&3
    for LOG in $XFREE86_LOGS; do
        if [ -f "$LOG" ]; then
            printf "Contents of most recent XFree86 X server log file\n" >&3
            printf "%s:\n" "$LOG" >&3
            cat "$LOG" >&3
            # the log files are large; only show the most recent
            break
        fi
    done
else
    printf "No XFree86 X server log files found.\n" >&3
fi

printf "\n" >&3

# vim:set ai et sts=4 sw=4 tw=80:
