aboutsummaryrefslogtreecommitdiff
path: root/japanese/mozc-server/files/mozc.in
blob: 3b5cd059e3fa7ebd0d35b0dbcb05f38fc6171b60 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/sh
: ${MOZCDIR:="${HOME}/.mozc"}

# Mozc does not run by priviledged user.  Ignore silently.
case $(id -u) in
0)	exit 0 ;;
esac

mkdir -m 0700 -p "${MOZCDIR}"
chmod 0700 "${MOZCDIR}"

cleanup_lock()
{
	rm -f "${MOZCDIR}/.session.ipc" \
	    "${MOZCDIR}/.server.lock" \
	    "${MOZCDIR}/mozc_server.pid"
}
check_lock()
{
	if [ -r "${MOZCDIR}/.server.lock" ]; then
		if [ -r "${MOZCDIR}/mozc_server.pid" ]; then
			pid=$(cat "${MOZCDIR}/mozc_server.pid")
			pid=" (PID=$pid)"
		fi
		printf "mozc_server is running%s.\n" "$pid" \
		    > /dev/stderr
		false
	fi
}
start_cmd()
{
	daemon -c -f -p "${MOZCDIR}/mozc_server.pid" \
	    "%%PREFIX%%/bin/mozc_server"
}
stop_server()
{
	if [ -r "${MOZCDIR}/mozc_server.pid" ]; then
		pkill -F "${MOZCDIR}/mozc_server.pid"
	else
		for p in $(pgrep -U $(id -u) mozc_server); do
			kill $p
		done
	fi
}

case $1 in
start)
	check_lock || exit 1
	start_cmd
;;
forcestart|restart)
	stop_server
	cleanup_lock
	start_cmd
;;
stop|forcestop)
	stop_server
	cleanup_lock
;;
status)
	pid=$(pgrep -U $(id -u) mozc_server)
	case $pid in
	[0-9]*)	echo $pid && exit 0 ;;
	*)	exit 1 ;;
	esac
;;
*)
	echo "$0 [start|stop|restart|forcestart|forcestop|status]"
	exit 1
;;
esac