xref: /OK3568_Linux_fs/debian/overlay/etc/Powermanager/triggerhappy (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/sh
2*4882a593Smuzhiyun### BEGIN INIT INFO
3*4882a593Smuzhiyun# Provides:          triggerhappy
4*4882a593Smuzhiyun# Required-Start:    $local_fs $remote_fs
5*4882a593Smuzhiyun# Required-Stop:     $remote_fs
6*4882a593Smuzhiyun# Default-Start:     2 3 4 5
7*4882a593Smuzhiyun# Default-Stop:      0 1 6
8*4882a593Smuzhiyun# Short-Description: triggerhappy hotkey daemon
9*4882a593Smuzhiyun# Description:       triggerhappy hotkey daemon
10*4882a593Smuzhiyun### END INIT INFO
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun# Author: Stefan Tomanek <stefan.tomanek+th@wertarbyte.de>
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunPATH=/sbin:/usr/sbin:/bin:/usr/bin
15*4882a593SmuzhiyunDESC="input event daemon"
16*4882a593SmuzhiyunNAME=thd
17*4882a593SmuzhiyunPNAME=triggerhappy
18*4882a593SmuzhiyunDAEMON=/usr/sbin/thd
19*4882a593SmuzhiyunPIDFILE=/var/run/$NAME.pid
20*4882a593SmuzhiyunDAEMON_ARGS="--daemon --triggers /etc/triggerhappy/triggers.d/ --socket /var/run/thd.socket --pidfile $PIDFILE --user root /dev/input/event*"
21*4882a593SmuzhiyunDAEMON_OPTS="--user root"
22*4882a593SmuzhiyunSCRIPTNAME=/etc/init.d/$PNAME
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun# Exit if the package is not installed
25*4882a593Smuzhiyun# [ -x $DAEMON ] || exit 0
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun# Read configuration variable file if it is present
28*4882a593Smuzhiyun[ -r /etc/default/$PNAME ] && . /etc/default/$PNAME
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun# Load the VERBOSE setting and other rcS variables
31*4882a593Smuzhiyun. /lib/init/vars.sh
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun# Define LSB log_* functions.
34*4882a593Smuzhiyun# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
35*4882a593Smuzhiyun. /lib/lsb/init-functions
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun#
38*4882a593Smuzhiyun# Function that starts the daemon/service
39*4882a593Smuzhiyun#
40*4882a593Smuzhiyundo_start()
41*4882a593Smuzhiyun{
42*4882a593Smuzhiyun	# Return
43*4882a593Smuzhiyun	#   0 if daemon has been started
44*4882a593Smuzhiyun	#   1 if daemon was already running
45*4882a593Smuzhiyun	#   2 if daemon could not be started
46*4882a593Smuzhiyun	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec /usr/sbin/thd --test > /dev/null \
47*4882a593Smuzhiyun		|| return 1
48*4882a593Smuzhiyun	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec /usr/sbin/thd -- \
49*4882a593Smuzhiyun		$DAEMON_ARGS $DAEMON_OPTS \
50*4882a593Smuzhiyun		|| return 2
51*4882a593Smuzhiyun}
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun#
54*4882a593Smuzhiyun# Function that stops the daemon/service
55*4882a593Smuzhiyun#
56*4882a593Smuzhiyundo_stop()
57*4882a593Smuzhiyun{
58*4882a593Smuzhiyun	# Return
59*4882a593Smuzhiyun	#   0 if daemon has been stopped
60*4882a593Smuzhiyun	#   1 if daemon was already stopped
61*4882a593Smuzhiyun	#   2 if daemon could not be stopped
62*4882a593Smuzhiyun	#   other if a failure occurred
63*4882a593Smuzhiyun	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
64*4882a593Smuzhiyun	RETVAL="$?"
65*4882a593Smuzhiyun	[ "$RETVAL" = 2 ] && return 2
66*4882a593Smuzhiyun	# Many daemons don't delete their pidfiles when they exit.
67*4882a593Smuzhiyun	rm -f $PIDFILE
68*4882a593Smuzhiyun	return "$RETVAL"
69*4882a593Smuzhiyun}
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun#
72*4882a593Smuzhiyun# Function that sends a SIGHUP to the daemon/service
73*4882a593Smuzhiyun#
74*4882a593Smuzhiyundo_reload() {
75*4882a593Smuzhiyun	#
76*4882a593Smuzhiyun	# If the daemon can reload its configuration without
77*4882a593Smuzhiyun	# restarting (for example, when it is sent a SIGHUP),
78*4882a593Smuzhiyun	# then implement that here.
79*4882a593Smuzhiyun	#
80*4882a593Smuzhiyun	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
81*4882a593Smuzhiyun	return 0
82*4882a593Smuzhiyun}
83*4882a593Smuzhiyun
84*4882a593Smuzhiyuncase "$1" in
85*4882a593Smuzhiyun  start)
86*4882a593Smuzhiyun    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
87*4882a593Smuzhiyun    do_start
88*4882a593Smuzhiyun    case "$?" in
89*4882a593Smuzhiyun		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
90*4882a593Smuzhiyun		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
91*4882a593Smuzhiyun	esac
92*4882a593Smuzhiyun  ;;
93*4882a593Smuzhiyun  stop)
94*4882a593Smuzhiyun	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
95*4882a593Smuzhiyun	do_stop
96*4882a593Smuzhiyun	case "$?" in
97*4882a593Smuzhiyun		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
98*4882a593Smuzhiyun		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
99*4882a593Smuzhiyun	esac
100*4882a593Smuzhiyun	;;
101*4882a593Smuzhiyun  status)
102*4882a593Smuzhiyun       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
103*4882a593Smuzhiyun       ;;
104*4882a593Smuzhiyun  reload|force-reload)
105*4882a593Smuzhiyun	log_daemon_msg "Reloading $DESC" "$NAME"
106*4882a593Smuzhiyun	do_reload
107*4882a593Smuzhiyun	log_end_msg $?
108*4882a593Smuzhiyun	;;
109*4882a593Smuzhiyun  restart)
110*4882a593Smuzhiyun	log_daemon_msg "Restarting $DESC" "$NAME"
111*4882a593Smuzhiyun	do_stop
112*4882a593Smuzhiyun	case "$?" in
113*4882a593Smuzhiyun	  0|1)
114*4882a593Smuzhiyun		do_start
115*4882a593Smuzhiyun		case "$?" in
116*4882a593Smuzhiyun			0) log_end_msg 0 ;;
117*4882a593Smuzhiyun			1) log_end_msg 1 ;; # Old process is still running
118*4882a593Smuzhiyun			*) log_end_msg 1 ;; # Failed to start
119*4882a593Smuzhiyun		esac
120*4882a593Smuzhiyun		;;
121*4882a593Smuzhiyun	  *)
122*4882a593Smuzhiyun	  	# Failed to stop
123*4882a593Smuzhiyun		log_end_msg 1
124*4882a593Smuzhiyun		;;
125*4882a593Smuzhiyun	esac
126*4882a593Smuzhiyun	;;
127*4882a593Smuzhiyun  *)
128*4882a593Smuzhiyun	echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2
129*4882a593Smuzhiyun	exit 3
130*4882a593Smuzhiyun	;;
131*4882a593Smuzhiyunesac
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun:
134