#!/bin/sh
# vim: syntax=sh
#
# serio.rc	mostly to recover lost boot-time serio hotplug events
#

PATH=/sbin:/bin:/usr/sbin:/usr/bin

cd /etc/hotplug
. ./hotplug.functions

serio_boot_events ()
{
    # make sure serio.agent will run
    ACTION=add
    SERIO_TYPE=0
    SERIO_PROTO=0
    SERIO_ID=0
    SERIO_EXTRA=0
    export ACTION SERIO_TYPE SERIO_PROTO SERIO_ID SERIO_EXTRA

    if [ -d /sys/bus/serio/devices/ ]; then
	for SERIO_DEVICE in /sys/bus/serio/devices/*; do
	    SERIO_TYPE=`cat $SERIO_DEVICE/id_type`
	    SERIO_PROTO=`cat $SERIO_DEVICE/id_proto`
	    SERIO_ID=`cat $SERIO_DEVICE/id_id`
	    SERIO_EXTRA=`cat $SERIO_DEVICE/id_extra`
	    /sbin/hotplug serio
	done
    fi

    return 0
}

# See how we were called.
case "$1" in
  start)
	serio_boot_events
        ;;
  stop)
	# echo $"serio stop -- ignored"
        ;;
  status)
	echo $"SERIO Status for kernel: "  `uname -srm`
	echo ''

	DEV_COUNT=0
	if [ -d /sys/bus/serio/devices/ ]; then
	    DEV_COUNT=`ls /sys/bus/serio/devices/ | wc -l`
	fi
	DRV_COUNT=0
	if [ -d /sys/bus/serio/devices/ ]; then
	    DRV_COUNT=`ls /sys/bus/serio/drivers/ | wc -l`
	fi
	echo $"$DEV_COUNT ports registered; $DRV_COUNT drivers loaded"
	echo ''
	;;
  restart)
	# always invoke by absolute path, else PATH=$PATH:
	$0 stop && $0 start
	;;
  *)
        echo $"Usage: $0 {start|stop|status|restart}"
        exit 1
esac
