#! /bin/bash
#
# Startup/shutdown script for HPLIP 
#
# Note, this script file must start before cupsd.
#
# For chkconfig the HPLIP priority (ie: 50) must be less the cupsd 
# priority (ie: 55).
#
# For LSB install_initd the cups script file should have "hplip" in the
# Should-Start field.
# 
#   chkconfig: 2345 50 10
#   description: Start/stop script for HP Linux Imaging and Printing (HPLIP).
#
# (c) 2004 Copyright Hewlett-Packard Development Company, LP
#
# This sript adopted by Serge Volkov for ALT Linux Sisyphus
#
### BEGIN INIT INFO
# Provides: hplip
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 3 5
# Default-Stop: 
# Description: Start/stop script for HP Linux Imaging and Printing (HPLIP)
### END INIT INFO

# Do not load RH compatibility interface.
WITHOUT_RC_COMPAT=1

# Source function library.
. /etc/init.d/functions

HPIOD_PIDFILE=/var/run/hpiod.pid
HPSSD_PIDFILE=/var/run/hpssd.pid
HPLIP_PORTFILE=/var/run/hpiod.port
HPSSD_PORTFILE=/var/run/hpssd.port
HPIOD_LOCKFILE=/var/lock/subsys/hpiod
HPSSD_LOCKFILE=/var/lock/subsys/hpssd
HPIOD=/usr/sbin/hpiod
HPSSD=/usr/share/hplip/hpssd.py
#HPIODDIR=/usr/sbin
#HPSSDDIR=/usr/share/hplip
PYTHON=/usr/bin/python
HPSSD_DISPLAY=hpssd.py
RETVAL=0

start()
{
	start_daemon --pidfile "$HPIOD_PIDFILE" --lockfile "$HPIOD_LOCKFILE" --expect-user root -- $HPIOD
	start_daemon --pidfile "$HPSSD_PIDFILE" --lockfile "$HPSSD_LOCKFILE" --expect-user root -- $HPSSD
	RETVAL=$?
	return $RETVAL
}

stop()
{
	stop_daemon --pidfile "$HPIOD_PIDFILE" --lockfile "$HPIOD_LOCKFILE" --expect-user root -- $HPIOD
	stop_daemon --pidfile "$HPSSD_PIDFILE" --lockfile "$HPSSD_LOCKFILE" --expect-user root --displayname "$HPSSD_DISPLAY" -- $PYTHON
    RETVAL=$?
	[ $RETVAL -eq 0 ] && ( rm -vf $HPSSD_PORTFILE && rm -vf $HPIOD_PORTFILE )
    return $RETVAL
}

restart() {
        stop
        start
}       

debug() {
        # Allow core dumps.
        ulimit -c unlimited
	start
}

reload()
{
        msg_reloading HPIOD
       	stop_daemon --pidfile "$HPIOD_PIDFILE" --expect-user root -HUP -- $HPIOD
		msg_reloading HPIOD
        stop_daemon --pidfile "$HPSSD_PIDFILE" --expect-user root -HUP -- $HPSSD
        RETVAL=$?
        return $RETVAL
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  status)
        status --pidfile "$HPIOD_PIDFILE" --expect-user root -- $HPIOD
        status --pidfile "$HPSSD_PIDFILE" --expect-user root --displayname "$HPSSD_DISPLAY" -- $PYTHON
        RETVAL=$?
        ;;
  reload)
        reload
        ;;
  condstop)
        [ -f "$HPIOD_LOCKFILE" -a -f "$HPSSD_LOCKFILE" ] && stop || :
        ;;
  condrestart)
        [ -f "$HPIOD_LOCKFILE" -a -f "$HPSSD_LOCKFILE" ] && restart || :
        ;;
  condreload)
        [ -f "$HPIOD_LOCKFILE" -a -f "$HPSSD_LOCKFILE" ] && reload || :
        ;;
  debug)
        debug
        ;;
  *)
        msg_usage "${0##*/} {start|stop|reload|restart|condstop|condrestart|condreload|status}"
        RETVAL=1
esac
exit $RETVAL
