#!/sbin/runscript
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo/src/livecd-tools/autoconfig,v 1.23 2005/04/13 13:19:58 wolf31o2 Exp $

echo "0" > /proc/sys/kernel/printk
DHCP="noact"
DETECT="yes"
GPM="yes"
PCMCIA="no"
HOTPLUG="yes"
APM="no"
ACPI="no"
CMDLINE="`cat /proc/cmdline`"
for x in ${CMDLINE} ; do
	if [ "${x}" = "nodetect" ]; then
		DETECT="no"
		GPM="no"
		HOTPLUG="no"
		APM="no"
		ACPI="no"
	fi

	if [ "${x}" = "nodhcp" ]; then
		DHCP="no"
	fi

	if [ "${x}" = "nogpm" ]; then
		GPM="no"
	fi

	if [ "${x}" = "dopcmcia" ]; then
		PCMCIA="yes"
	fi
	
	if [ "${x}" = "doapm" ]; then
		APM="yes"
		ACPI="no"
	fi

	if [ "${x}" = "acpi=on" -o "${x}" = "acpi=force" ]; then
		APM="no"
		ACPI="yes"
	fi

	if [ "${x}" = "nohotplug" ]; then
		HOTPLUG="no"
	fi
done

depend() {
	need modules
	use alsasound
#	provide gpm pcmcia apmd acpid coldplug
}

start() {
	if [ "${DETECT}" = "yes" ]; then
		ebegin ${WARN}"Hardware detection started"
		PC=`awk -F: '/^processor/{printf "Processor"$2" is"};/^model name/{printf $2};/^vendor_id/{printf vendor};/^cpu MHz/{printf " %dMHz",int($2)};/^cache size/{printf ","$2" Cache"};/^$/{print ""}' /proc/cpuinfo 2>/dev/null`
		ebegin ${GOOD}"${PC}"
		eend		
		[ -x /usr/sbin/hwsetup ] && hwsetup -p >/dev/null
		eend
	else
		ebegin ${WARN}"Hardware detection disabled via cmdline$NORMAL"
	fi

	if [ "${APM}" = "yes" ]; then
		modprobe apm power_off=1 >/dev/null 2>&1 && ebegin ${GOOD}"APM BIOS found, power management functions enabled.${NORMAL}"
		[ -x /etc/init.d/apmd ] && /etc/init.d/apmd start
	else
		ebegin ${GOOD}"Not Loading APM Bios support.${NORMAL}"
		eend
	fi

	if [ "${ACPI}" = "yes" ]; then
		modprobe processor >/dev/null 2>&1 && ebegin ${GOOD} ACPI power management functions enabled.${NORMAL} && modprobe thermal >/dev/null
		modprobe fan >/dev/null 2>&1
		modprobe button >/dev/null 2>&1
		modprobe battery >/dev/null 2>&1
		modprobe ac >/dev/null 2>&1
		[ -x /etc/init.d/acpid ] && /etc/init.d/acpid start
		eend
	fi

	if [ "${PCMCIA}" = "yes" ]; then
		ebegin ${HILITE} "PCMCIA enabled via cmdline"
		/etc/init.d/pcmcia start
	fi

	if [ "${DHCP}" = "no" ]; then
		sed -i -e '/^ifconfig_eth/ s//^#/' \
			-e '/^iface_eth/ s//^#/' \
			/etc/conf.d/net
		ebegin ${BAD}"Skipping DHCP broadcast detection as requested on boot commandline."
	fi

	#Read in what hwsetup has found
	[ -f /etc/sysconfig/knoppix ] && . /etc/sysconfig/knoppix

	# Mouse
	if [ -n "${MOUSE_DEVICE}" ]; then
		ebegin ${GOOD}"Mouse is ${HILITE}${MOUSE_FULLNAME}${GOOD} at ${HILITE}${MOUSE_DEVICE}${NORMAL}"
		source /etc/sysconfig/mouse
		if [ -x /usr/sbin/gpm ]; then
			if [ `grep "#MOUSE=${MOUSETYPE}" /etc/conf.d/gpm` ]; then
				sed -i "\@MOUSE=${MOUSETYPE}@s@^#@@" /etc/conf.d/gpm
			else
				echo "MOUSE=${MOUSETYPE}" >>/etc/conf.d/gpm
			fi
			if [ `grep "#MOUSEDEV=${DEVICE}" /etc/conf.d/gpm` ]; then
				sed -i "\@MOUSEDEV=${DEVICE}@s@^#@@" /etc/conf.d/gpm
			else
				echo "MOUSEDEV=${DEVICE}" >>/etc/conf.d/gpm
			fi
			if [ "$GPM" = "yes" ]; then
				[ -x /etc/init.d/gpm ] && /etc/init.d/gpm start
			fi
		fi
		eend
	fi

	if [ "${HOTPLUG}" = "yes" ]; then
		#Check whether we should be using hotplug or coldplug
		if [ -x /etc/init.d/coldplug ]; then
			/etc/init.d/coldplug start
		else
			[ -x /etc/init.d/hotplug ] && /etc/init.d/hotplug start
		fi
	else
		ebegin ${BAD}"Hotplug disabled via cmdline${NORMAL}"
	fi

	if [ "${DETECT}" = "no" ]; then
		DHCP="no"
	fi

	if [ "${DETECT}" = "yes" ]; then
		NETDEVICES="`awk -F: '/eth.:|tr.:/{print $1}' /proc/net/dev 2>/dev/null`"
	fi

	if [ -n "${NETDEVICES}" ]; then
		if [ "${DHCP}" = "yes" ]; then
			ebegin ${GOOD}"Network device${HILITE}${NETDEVICES}${GOOD} detected,${WARN} DHCP broadcasting for IP.${NORMAL}"
			dhcpcd -h $(hostname) &
		fi
		eend

	else
		ebegin ${BAD}"No Network device auto detected.${NORMAL}"
	fi


	if [ -n "${SOUND_FULLNAME}" -o -n "${SOUND_DRIVER}" ]; then
		ebegin ${GOOD}"Soundcard:"
		eend
		[ -n "${SOUND_FULLNAME}" ] 
		ebegin "              ${WARN}${SOUND_FULLNAME}"
		[ -n "${SOUND_DRIVER}" ] 
		ebegin ${WARN}"              driver = ${SOUND_DRIVER}"${HILITE}
		if [ -d /proc/asound/card0 ] && [ -x /usr/bin/amixer ]; then
			amixer scontrols > /etc/amixer
			if [ -n "`grep Master /etc/amixer`" ]
			then
				amixer -q set Master 95% unmute >/dev/null 2>&1
			fi
			if [ -n "`grep PCM /etc/amixer`" ]
			then
				amixer -q set PCM 95% unmute >/dev/null 2>&1
			fi
			if [ -n "`grep Mic /etc/amixer`" ]
			then
				amixer -q set Mic 95% unmute cap >/dev/null 2>&1
			fi
			if [ -n "`grep Wave /etc/amixer`" ]
			then
				amixer -q set Wave 95% unmute >/dev/null 2>&1
			fi
			if [ -n "`grep Capture /etc/amixer`" ]
			then
				amixer -q set Capture 95% unmute cap >/dev/null 2>&1
			fi
		fi
	fi


	if [ -n "${XDESC}" -o -n "${XDESC}" ]; then
        ebegin ${GOOD}"VideoCard:   ${WARN} ${XDESC}"
        eend
	fi

	killall hwsetup 2>/dev/null
	echo "6" > /proc/sys/kernel/printk

}

# vim: ts=4
