#!/bin/sh

TEMPLATES=/etc/haps/templates
CONFIG=/etc/haps/config
DEVFS=NO
mount | grep "^devfs " > /dev/null && DEVFS=YES

. $1

case "$CLASS" in

    BIOS)
	for mod in $KERNEL_MODULES
	do
	    echo $mod >> $CONFIG/mb.modules
	done
	echo $MAINBOARD_SENSORS_OPTS >> $CONFIG/mb.modules.conf
	echo $MAINBOARD_APM_OPTS >> $CONFIG/mb.modules.conf
        ;;  
    AUDIO)
        cat $TEMPLATES/alsa9.modules.conf | \
	    sed "s|@DRIVER@|$DRIVER|" >\
	    $CONFIG/$CONN.modules.conf
        ;;  
    NETWORK)
	ETHNUM=0;
	if [ -f $CONFIG/net.modules.conf ]
	then
	    while grep $DEVICE$ETHNUM $CONFIG/net.modules.conf > /dev/null
	    do
		ETHNUM=$(($ETHNUM+1))
	    done
	fi
	DEVICE2=$DEVICE$ETHNUM
	echo "alias $DEVICE2 $DRIVER" >> $CONFIG/net.modules.conf

	[ -z "$BOOTPROTO" ] && BOOTPROTO=pump

        cat $TEMPLATES/$DEVICE.ifcfg |\
	    sed "s|@BOOTPROTO@|$BOOTPROTO|" |\
	    sed "s|@DEVICE@|$DEVICE2|" >\
	    $CONFIG/ifcfg-$DEVICE2
        ;;  
    VIDEO)
	CONN2=`echo $CONN | tr "." "_"`
        cat $TEMPLATES/video.XF86Config |\
	    sed "s|@DRIVER@|$DRIVER|" |\
	    sed "s|@DESC@|$DESC|" |\
	    sed "s|@CONN@|$CONN2|" |\
	    sed "s|@XMODULE@|$XMODULE|" |\
	    sed "s|@DEVICE@|$DEVICE|" >\
	    $CONFIG/$CONN.XF86Config
        ;;  
    KEYBOARD)
        cat $TEMPLATES/kb.XF86Config |\
	    sed "s|@NAME@|$CONN|" >\
	    $CONFIG/$CONN.XF86Config
        ;;  
    MOUSE)
	NAME=`basename $DEVICE`
        cat $TEMPLATES/mouse |\
	    sed "s|@DRIVER@|$DRIVER|" |\
	    sed "s#@DESC@#$DESC#" |\
	    sed "s|@NAME@|$NAME|" |\
	    sed "s|@MOUSETYPE@|$MOUSETYPE|" |\
	    sed "s|@XMOUSETYPE@|$XMOUSETYPE|" |\
	    sed "s|@DEVICE@|$DEVICE|" >\
	    $CONFIG/$CONN.mouse

        cat $TEMPLATES/mouse.XF86Config |\
	    sed "s|@DRIVER@|$DRIVER|" |\
	    sed "s#@DESC@#$DESC#" |\
	    sed "s|@NAME@|$NAME|" |\
	    sed "s|@MOUSETYPE@|$MOUSETYPE|" |\
	    sed "s|@XMOUSETYPE@|$XMOUSETYPE|" |\
	    sed "s|@DEVICE@|$DEVICE|" >\
	    $CONFIG/$CONN.XF86Config
        ;;  
    USB)
	echo "alias usb-controller $DRIVER" >> $CONFIG/usb.modules.conf
        ;;  
    CDROM)
	CDROMNUM=0;
	if [ -f $CONFIG/fstab ]
	then
	    while grep " /mnt/cdrom$CDROMNUM " $CONFIG/fstab > /dev/null
	    do
		CDROMNUM=$(($CDROMNUM+1))
	    done
	fi
        MNTPOINT="/mnt/cdrom$CDROMNUM"
	if [ "$DEVFS" == "YES" ]
	then
	    echo /dev/cdroms/cdrom$CDROMNUM $MNTPOINT iso9660 defaults 0 0 >> $CONFIG/fstab
	    [ ! -d $MNTPOINT ] && mkdir $MNTPOINT
	else
	    echo $DEVICE $MNTPOINT iso9660 defaults 0 0 >> $CONFIG/fstab
	fi
	;;
    PARTITION)
	if [ -z "$MNTPOINT" ]
	then
	    if mount | grep "$DEVICE on / " > /dev/null
	    then
	        MNTPOINT=/
	    else
		MNTPOINT=`echo $DEVICE | sed 's@^/dev/@/mnt/@'`
	    fi
	fi

	case "$FSTABTYPE" in
	    swap)
		echo $DEVICE swap $FSTABTYPE defaults 0 0 >> $CONFIG/fstab
		;;
	    auto)
		echo $DEVICE $MNTPOINT $FSTABTYPE defaults 0 0 >> $CONFIG/fstab
	        [ ! -d $MNTPOINT ] && mkdir $MNTPOINT
		;;
	    vfat)
	        echo $DEVICE $MNTPOINT $FSTABTYPE codepage=852,iocharset=iso8859-2,user,gid=1002,showexec,umask=0002,quiet 0 0 >> $CONFIG/fstab
		[ ! -d $MNTPOINT ] && mkdir $MNTPOINT
		;;
	    *)
	esac
        ;;  
    *)
#      echo $CLASS
esac
