#!/bin/sh
#
# WebcamStudio for GNU/Linux driver
# Linux kernel module init script
#
# 2009 Patrick Balleux
# 


# chkconfig: 35 30 60
# description: WebcamStudio Linux kernel module
#
### BEGIN INIT INFO
# Provides:       webcamstudio
# Required-Start: $syslog
# Required-Stop:
# Default-Start:  2 3 4 5
# Default-Stop:
# Short-Description: WebcamStudio kernel module
### END INIT INFO


KDIR="/lib/modules/`uname -r`/kernel/drivers/misc"
MODNAME=webcamstudio
LOG="/var/log/webcamstudio-install.log"
NOLSB=%NOLSB%


. /lib/lsb/init-functions

failure()
{
  echo ""
  log_failure_msg "$1"
  exit 0
}

running()
{
  lsmod | grep -q "$MODNAME[^_-]"
}

installModule(){
cd /usr/share/webcamstudio/webcamstudio-src
mkdir /tmp/webcamstudio-src
cp * /tmp/webcamstudio-src
cd /tmp/webcamstudio-src
make
make install
depmod -a
cd /
rm -R /tmp/webcamstudio-src
}

start()
{
  log_daemon_msg "Starting WebcamStudio kernel module" "$MODNAME";
  # ensure the module is loaded
  if ! running; then
    if [ ! -f "$KDIR/$MODNAME.o" -a ! -f "$KDIR/$MODNAME.ko" ]; then
      installModule 
    fi
    if ! modprobe $MODNAME > /dev/null 2>&1; then
      failure "Modprobe $MODNAME failed. Please use 'dmesg' to find out why."
    fi
    sleep .2
  fi
  # ensure the character special exists
  log_end_msg 0
}

stop()
{
  log_daemon_msg "Stopping WebcamStudio kernel module" "$MODNAME";
  if running; then
    if ! rmmod $MODNAME 2>/dev/null; then
      failure "Cannot unload module $MODNAME."
    fi
  fi
  log_end_msg 0
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload|force-reload)
    stop
    start
    ;;
  status)
    if running; then
      log_success_msg "WebcamStudio kernel module is loaded."
    else
      log_failure_msg "WebcamStudio kernel module is not loaded."
    fi
    ;;
  *)
    log_failure_msg "Usage: $0 {start|stop|restart|status}"
    exit 3
esac

exit 0
