#! /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>

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

unset TMPDIR

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

mkdir -p /run/cups/certs
[ -x /sbin/restorecon ] && /sbin/restorecon -R /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.
. /lib/lsb/init-functions

# Get the timezone set.
if [ -z "$TZ" -a -e /etc/timezone ]; then
    TZ=`cat /etc/timezone`
    export TZ
fi

coldplug_usb_printers() {
    if type udevadm > /dev/null 2>&1 && [ -x /lib/udev/udev-configure-printer ]; then
	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`; do
	    /lib/udev/udev-configure-printer add "${printer#/sys}"
	done
    fi
}

case "$1" in
  start)
	log_daemon_msg "Starting $DESC" "$NAME"

	mkdir -p `dirname "$PIDFILE"`
	start-stop-daemon --start --quiet --oknodo --pidfile "$PIDFILE" --exec $DAEMON
	status=$?
	[ $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
	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
       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; then
		start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec $DAEMON
	fi
	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
	;;
esac

exit 0
