base-files: add enabled commands to service rc.common
[openwrt/staging/wigyori.git] / package / base-files / files / etc / rc.common
1 #!/bin/sh
2 # Copyright (C) 2006-2012 OpenWrt.org
3
4 . $IPKG_INSTROOT/lib/functions.sh
5 . $IPKG_INSTROOT/lib/functions/service.sh
6
7 initscript=$1
8 action=${2:-help}
9 shift 2
10
11 start() {
12 return 0
13 }
14
15 stop() {
16 return 0
17 }
18
19 reload() {
20 restart
21 }
22
23 restart() {
24 trap '' TERM
25 stop "$@"
26 trap - TERM
27 start "$@"
28 }
29
30 boot() {
31 start "$@"
32 }
33
34 shutdown() {
35 stop
36 }
37
38 disable() {
39 name="$(basename "${initscript}")"
40 rm -f "$IPKG_INSTROOT"/etc/rc.d/S??$name
41 rm -f "$IPKG_INSTROOT"/etc/rc.d/K??$name
42 }
43
44 enable() {
45 err=1
46 name="$(basename "${initscript}")"
47 [ "$START" ] && \
48 ln -sf "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}" && \
49 err=0
50 [ "$STOP" ] && \
51 ln -sf "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/K${STOP}${name##K[0-9][0-9]}" && \
52 err=0
53 return $err
54 }
55
56 enabled() {
57 name="$(basename "${initscript}")"
58 [ -x "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}" ]
59 }
60
61 depends() {
62 return 0
63 }
64
65 help() {
66 cat <<EOF
67 Syntax: $initscript [command]
68
69 Available commands:
70 start Start the service
71 stop Stop the service
72 restart Restart the service
73 reload Reload configuration files (or restart if service does not implement reload)
74 enable Enable service autostart
75 disable Disable service autostart
76 enabled Check if service is started on boot
77 $EXTRA_HELP
78 EOF
79 }
80
81 # for procd
82 start_service() {
83 return 0
84 }
85
86 stop_service() {
87 return 0
88 }
89
90 service_triggers() {
91 return 0
92 }
93
94 service_data() {
95 return 0
96 }
97
98 service_running() {
99 local service="${1:-$(basename $initscript)}"
100 local instance="${2:-*}"
101 procd_running "$service" "$instance" "$@"
102 }
103
104 ${INIT_TRACE:+set -x}
105
106 . "$initscript"
107
108 [ -n "$USE_PROCD" ] && {
109 EXTRA_COMMANDS="${EXTRA_COMMANDS} running status trace"
110 EXTRA_HELP="\
111 running Check if service is running
112 status Service status
113 ${EXTRA_HELP}"
114
115 . $IPKG_INSTROOT/lib/functions/procd.sh
116 basescript=$(readlink "$initscript")
117 rc_procd() {
118 local method="set"
119 [ -n "$2" ] && method="add"
120 procd_open_service "$(basename ${basescript:-$initscript})" "$initscript"
121 "$@"
122 procd_close_service "$method"
123 }
124
125 start() {
126 rc_procd start_service "$@"
127 if eval "type service_started" 2>/dev/null >/dev/null; then
128 service_started
129 fi
130 }
131
132 trace() {
133 TRACE_SYSCALLS=1
134 start "$@"
135 }
136
137 stop() {
138 procd_lock
139 stop_service "$@"
140 procd_kill "$(basename ${basescript:-$initscript})" "$1"
141 if eval "type service_stopped" 2>/dev/null >/dev/null; then
142 service_stopped
143 fi
144 }
145
146 reload() {
147 if eval "type reload_service" 2>/dev/null >/dev/null; then
148 procd_lock
149 reload_service "$@"
150 else
151 start
152 fi
153 }
154
155 running() {
156 service_running "$@"
157 }
158
159 status() {
160 if eval "type status_service" 2>/dev/null >/dev/null; then
161 status_service "$@"
162 else
163 _procd_status "$(basename ${basescript:-$initscript})" "$1"
164 fi
165 }
166 }
167
168 ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}"
169 list_contains ALL_COMMANDS "$action" || action=help
170 $action "$@"