d9773a0c5aaec092feb5cdae9decc798b5a6b714
[librecmc/librecmc.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 $EXTRA_HELP
77 EOF
78 }
79
80 # for procd
81 start_service() {
82         return 0
83 }
84
85 stop_service() {
86         return 0
87 }
88
89 service_triggers() {
90         return 0
91 }
92
93 service_data() {
94         return 0
95 }
96
97 service_running() {
98         return 0
99 }
100
101 ${INIT_TRACE:+set -x}
102
103 . "$initscript"
104
105 [ -n "$USE_PROCD" ] && {
106         EXTRA_COMMANDS="${EXTRA_COMMANDS} running trace"
107
108         . $IPKG_INSTROOT/lib/functions/procd.sh
109         basescript=$(readlink "$initscript")
110         rc_procd() {
111                 local method="set"
112                 [ -n "$2" ] && method="add"
113                 procd_open_service "$(basename ${basescript:-$initscript})" "$initscript"
114                 "$@"
115                 procd_close_service "$method"
116         }
117
118         start() {
119                 rc_procd start_service "$@"
120                 if eval "type service_started" 2>/dev/null >/dev/null; then
121                         service_started
122                 fi
123         }
124
125         trace() {
126                 TRACE_SYSCALLS=1
127                 start "$@"
128         }
129
130         stop() {
131                 procd_lock
132                 stop_service "$@"
133                 procd_kill "$(basename ${basescript:-$initscript})" "$1"
134         }
135
136         reload() {
137                 if eval "type reload_service" 2>/dev/null >/dev/null; then
138                         procd_lock
139                         reload_service "$@"
140                 else
141                         start
142                 fi
143         }
144
145         running() {
146                 service_running "$@"
147         }
148 }
149
150 ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}"
151 list_contains ALL_COMMANDS "$action" || action=help
152 $action "$@"