#! /bin/sh
### BEGIN INIT INFO
# Provides:          cups
# Required-Start:    $syslog $remote_fs
# Required-Stop:     $syslog $remote_fs
# Should-Start:      $network avahi-daemon slapd nslcd
# Should-Stop:       $network
# X-Start-Before:    samba
# X-Stop-After:      samba
# Default-Start:     2 3 4 5
# Default-Stop:      1
# Short-Description: CUPS Printing spooler and server
# Description:       Manage the CUPS Printing spooler and server;
#                    make it's web interface accessible on http://localhost:631/
### END INIT INFO

# Author: Debian Printing Team <debian-printing@lists.debian.org>

setvar PATH = "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
setvar DAEMON = "/usr/sbin/cupsd"
setvar NAME = 'cupsd'
setvar PIDFILE = "/var/run/cups/$NAME.pid"
setvar DESC = ""Common Unix Printing System""
setvar SCRIPTNAME = "/etc/init.d/cups"

unset TMPDIR

# Exit if the package is not installed
test -x $DAEMON || exit 0

mkdir -p /var/run/cups/certs
test -x /sbin/restorecon && /sbin/restorecon -R /var/run/cups

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
source /lib/lsb/init-functions

# Get the timezone set.
if test -z $TZ -a -e /etc/timezone {
    setvar TZ = $(cat /etc/timezone)
    export TZ
}

proc coldplug_usb_printers {
    if type udevadm > /dev/null 2>&1 && test -x /lib/udev/udev-configure-printer {
	for printer in `udevadm trigger --verbose --dry-run --subsystem-match=usb \
		--attr-match=bInterfaceClass=07 --attr-match=bInterfaceSubClass=01 2>/dev/null || true; \
	                udevadm trigger --verbose --dry-run --subsystem-match=usb \
		--sysname-match='lp[0-9]*' 2>/dev/null || true` {
	    /lib/udev/udev-configure-printer add ${printer#/sys}
	}
    }
}

case (1) {
  start {
	log_daemon_msg "Starting $DESC" $NAME

	mkdir -p $(dirname $PIDFILE)
	start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
	setvar status = ""$?
	test $status = 0 && coldplug_usb_printers
	log_end_msg $status
	}
  stop {
	log_daemon_msg "Stopping $DESC" $NAME
	start-stop-daemon --stop --quiet --retry 5 --oknodo --pidfile $PIDFILE --name $NAME
	setvar status = ""$?
	log_end_msg $status
	}
  reload|force-reload {
       log_daemon_msg "Reloading $DESC" $NAME
       start-stop-daemon --stop --quiet --pidfile $PIDFILE --name $NAME --signal 1
       setvar status = ""$?
       log_end_msg $status
       }
  restart {
	log_daemon_msg "Restarting $DESC" $NAME
	if start-stop-daemon --stop --quiet --retry 5 --oknodo --pidfile $PIDFILE --name $NAME {
		start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON
	}
	setvar status = ""$?
	log_end_msg $status
	}
  status {
	status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
	}
  * {
	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2
	exit 3
	}
}

exit 0