#!/bin/bash
#
# firstboot:         Starts the firstboot druid if it hasn't been run before
#
# chkconfig: 35 95 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.
#

unset LC_MESSAGES
[ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
[ -z "${CONSOLETYPE:-}" ] && CONSOLETYPE="`/sbin/consoletype`"
export LANG

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