diff options
Diffstat (limited to 'system/cdemu-daemon/rc.cdemud')
-rw-r--r-- | system/cdemu-daemon/rc.cdemud | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/system/cdemu-daemon/rc.cdemud b/system/cdemu-daemon/rc.cdemud new file mode 100644 index 0000000000..5be12abe3b --- /dev/null +++ b/system/cdemu-daemon/rc.cdemud @@ -0,0 +1,174 @@ +#!/bin/sh +# +# cdemu-daemon: CDEmu daemon +# + +### BEGIN INIT INFO +# Provides: cdemu-daemon +# Short-Description: Start the CDEmu daemon +# Description: System mode startup script for +# the CDEmu daemon. +### END INIT INFO + +# This script is based on the ubuntu and fedora init script. +# Modified by Nille Åkerström + +NAME="cdemud" +DESC="cdemu-daemon" +LOCK="/var/lock/${DESC}.lock" +PID=$(/sbin/pidof -o %PPID ${NAME}) + +# Get the configuration information from /etc/rc.d/rc.cdemud.conf: +. /etc/rc.d/rc.cdemud.conf + +start() +{ + # Check if already started + if [ -n "${PID}" ] ;then + echo "${DESC} is already running at pid: ${PID}" + return ${RETVAL} + exit + fi + + # Load module + if [ -n "${MODULE}" ]; then + echo -n "Inserting ${MODULE} kernel module" + modprobe "${MODULE}" >/dev/null 2>&1 + RETVAL=$? + if [ ${RETVAL} -eq 0 ]; then + echo -e "\t\t\t\t\t[ OK ]\r" + else + echo -e "\t\t\t\t\t[FAILED]\r" + fi + fi + + # Wait until control device is created... + if [ -n "${CTL_DEVICE}" ]; then + echo -n "Waiting for ${CTL_DEVICE} to be created" + + CTL_WAIT=30 # Wait at most 30 seconds + RETVAL=1 + until [ ${CTL_WAIT} -eq 0 ]; do + if [ -c "${CTL_DEVICE}" ]; then + CTL_WAIT=0 + RETVAL=0 + else + CTL_WAIT=$((CTL_WAIT-1)) + sleep 1 + fi + done + + if [ ${RETVAL} -eq 0 ]; then + echo -e "\t\t\t\t[ OK ]\r" + else + echo -e "\t\t\t\t[FAILED]\r" + fi + fi + + + # Daemon arguments + DAEMON_ARGS="--daemonize" + + if [ -n "${DEVICES}" ]; then + DAEMON_ARGS="${DAEMON_ARGS} --num-devices=${DEVICES}" + fi + if [ -n "${CTL_DEVICE}" ]; then + DAEMON_ARGS="${DAEMON_ARGS} --ctl-device=${CTL_DEVICE}" + fi + if [ -n "${AUDIO_DRIVER}" ]; then + DAEMON_ARGS="${DAEMON_ARGS} --audio-driver=${AUDIO_DRIVER}" + fi + if [ -n "${BUS}" ]; then + DAEMON_ARGS="${DAEMON_ARGS} --bus=${BUS}" + fi + + # Start daemon + echo -n "Starting ${DESC}" + $NAME ${DAEMON_ARGS} >/dev/null 2>&1 + RETVAL=$? + if [ ${RETVAL} -eq 0 ] && touch ${LOCK} ; then + echo -e "\t\t\t\t\t\t[ OK ]\r" + else + echo -e "\t\t\t\t\t\t[FAILED]\r" + fi + return ${RETVAL} +} + +stop() +{ + # Stopping daemon + echo -n "Stopping ${DESC}" + if [ -n "${PID}" ] ;then + $NAME -k >/dev/null 2>&1 + RETVAL=$? + if [ ${RETVAL} -eq 0 ]; then + echo -e "\t\t\t\t\t\t[ OK ]\r" + else + echo -e "\t\t\t\t\t\t[FAILED]\r" + fi + else + echo -e "\t\t\t\tWarning: ${DESC} isn't running" + RETVAL=0 + fi + + + # Unload module + echo -n "Removing ${MODULE} kernel module" + LOADED=`lsmod | grep -o -e ^${MODULE} -` + if [ "${LOADED}" = "${MODULE}" ]; then + modprobe -r "${MODULE}" >/dev/null 2>&1 + RETVAL=$? + if [ ${RETVAL} -eq 0 ]; then + echo -e "\t\t\t\t\t[ OK ]\r" + else + echo -e "\t\t\t\t\t[FAILED]\r" + fi + return ${RETVAL} + if [ $RETVAL -eq 0 ]; then + rm -f $LOCK + fi + else + echo -e "\t\t\tWarning: ${MODULE} isn't loaded" + RETVAL=0 + fi + return ${RETVAL} +} + +restart() { + stop + RETVAL=$? + if [ ${RETVAL} -eq 0 ]; then + PID=$(/sbin/pidof -o %PPID ${NAME}) + start + RETVAL=$? + if [ ${RETVAL} -ne 0 ]; then + echo "Couldn't start ${DESC} retry in 3sec." + sleep 3 + start + RETVAL=$? + fi + fi + return ${RETVAL} +} + +# See how we were called. +case "$1" in + "start") + start + ;; + "stop") + stop + ;; + "restart") + restart + ;; + "force-reload" | "reload") + echo "Warning: Not implemented" + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload|reload}" + ;; +esac + +exit ${RETVAL} + |