#!/bin/bash

#
# configure SCSI scanner (Lederer/CONET)
#

### BEGIN INIT INFO
# Provides:          sc_hardware_scanner
# Required-Start:    $local_fs $syslog
# Should-Start:      $remote_fs hwscan resmgr sc_hardware_prepare
# Required-Stop:     $local_fs
# Should-Stop:       $null
# Default-Start:     2 3 5
# Default-Stop:
# Description:       create device node for scsi scanner
### END INIT INFO

. /etc/rc.status
rc_reset

. /etc/smartclient/sc_hardware

statusfile=/var/tmp/sc_hardware_scanner
udev_permissions=/etc/udev/permissions.d/40-scanner.permissions
sane_conf=/etc/sane.d/dll.conf
sane_usermap=/etc/hotplug/usb/sane-hardcoded.usermap



mangle_sane_config()
{
	[ -d /etc/sane.d ] || return 1
    #SCANNER="hp epson avision plustek"
    for i in $SC_HARDWARE_SCANNER_DLLS; do
	   grep -q "^${i}$" $sane_conf || echo $i >>$sane_conf
    done
}



mangle_hotplug()
{
	grep -q desktopdev $sane_usermap || return 0
	# Hotplug-Klasse fuer USB-Scanner aendern
	sed -i 's/desktopdev/desktopscanner/' $sane_usermap
	# hotplug-Skript fuer scanner anlegen
	cat >/etc/hotplug/usb/desktopscanner <<EOF
#!/bin/bash
if [ -x /sbin/resmgr -a ! -z "\$DEVICE" ]; then
	if [ "\${ACTION}" = "add" ]; then
		chmod a+rw \$DEVICE
		ln -sf \$DEVICE /dev/usbscanner
		/sbin/resmgr \${ACTION} \${DEVICE} desktop usb && exit 0
	else
		/sbin/resmgr \${ACTION} \${DEVICE} desktop && exit 0
		rm /dev/usbscanner
	fi
fi
EOF
        chmod a+x /etc/hotplug/usb/desktopscanner
}




load_storage_ctrl()
{
    #
    # activate all storage controllers
    #
    STORAGE_CTRL_DRIVER_ACTIVATION=`hwinfo --storage-ctrl | sed -n 's/Driver Activation Cmd: \"\(.*\)\"/\1;/p'`
    eval $STORAGE_CTRL_DRIVER_ACTIVATION
}



set_scsi_scanner_permission()
{
    #
    # detect scsi scanners
    #
    devs=`hwinfo --scanner | sed -n 's/\s*Device File:\s\(.*\)/\1/p'`
    for dev in $devs; do
        echo -n " $dev "
        echo "$dev" >$statusfile

        # let everybody can access the scanner 
        # (logindevperm not necessary)
        chmod ugo+rw $dev

        #
        # mangle_logindevperm
        #
        if ! grep -q $dev /etc/logindevperm; then
            echo "# sc_hardware_scanner $dev" >>/etc/logindevperm
            echo ":0 0600 $dev" >>/etc/logindevperm
        fi
    done
}


case "$1" in
    start)
        echo -n "SmartClient scanner configuration "

        load_storage_ctrl

	#if [ -f $statusfile ]; then
        #    rc_status -s
        #else
            mangle_sane_config
            #mangle_hotplug
            set_scsi_scanner_permission

            rc_status -v
        #fi
        ;;

    stop)
        ;;
	
    restart)
	rm -f $statusfile
	$0 start
	;;
    *)
	echo "Usage: $0 {start|stop|restart}"
	exit 1
esac

