#!/bin/bash
#
# firstboot:         Starts the firstboot druid if it hasn't been run before
#
# chkconfig: 35 99 95
#
# description:       Firstboot is a druid style program that runs on the first time \
#                    a machine is booted after install.  It checks for the existence \
#                    of an /etc/sysconfig/firstboot file.  If it doesn't find the file, \
#                    then the firstboot program needs to run.  If it finds the file, \
#                    firstboot will not be run.
#                    If /etc/reconfigSys exists, run the reconfiguration
#             program and remove /etc/reconfigSys when done.
#
#                    Also will run if 'reconfig' is on the kernel cmdline.
#

# Source function library.
. /etc/init.d/functions

FILENAME=/etc/sysconfig/firstboot
LOCKFILE=/var/lock/subsys/firstboot

[ -z "$HOME" ] && export HOME=/

case "$1" in
 start)
    action=run

    [ -f "$LOCKFILE" ] && exit 0

    if [ -f "$FILENAME" ] && ! grep -q '^RUN_FIRSTBOOT=YES' "$FILENAME"; then
        action=skip
    fi

    if grep -i reconfig /proc/cmdline >/dev/null || [ -f /etc/reconfigSys ]; then
        action=reconfig
    fi

    [ $action = skip ] && exit 0

    runlevel=$(set -- $(runlevel); eval "echo \$$#" )
    if grep -q "^id:5:initdefault:" /etc/inittab && [ "x$runlevel" = x5 ]; then
        . /etc/sysconfig/i18n
        if [ ! -f /etc/X11/xorg.conf -a ! -f /etc/X11/XF86Config ] ; then
        echo -n $"X is not configured.  Running system-config-display"
        /usr/bin/system-config-display
        echo -n $"X is now configured.  Starting Setup Agent"
        fi
    fi

    if [ $action = reconfig ]; then
        echo -n $"Running system reconfiguration tool"
        /usr/sbin/firstboot --reconfig
        exit 0
    fi

    touch $LOCKFILE
    /usr/sbin/firstboot
    RETVAL=$?

    if [ "$RETVAL" -eq 0 ]; then
        action "" /bin/true
    else
        action "" /bin/false
    fi

    exit 0
    ;;

 stop)
   rm -f $LOCKFILE
   ;;

 *)
   echo $"Usage: $0 {start|stop}"
   RETVAL=1
esac

exit $RETVAL