base-files: fix mount-utils incompatibility
[openwrt.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         return 1
21 }
22
23 restart() {
24         trap '' TERM
25         stop "$@"
26         start "$@"
27 }
28
29 boot() {
30         start "$@"
31 }
32
33 shutdown() {
34         stop
35 }
36
37 disable() {
38         name="$(basename "${initscript}")"
39         rm -f "$IPKG_INSTROOT"/etc/rc.d/S??$name
40         rm -f "$IPKG_INSTROOT"/etc/rc.d/K??$name
41 }
42
43 enable() {
44         name="$(basename "${initscript}")"
45         disable
46         [ -n "$START" -o -n "$STOP" ] || {
47                 echo "/etc/init.d/$name does not have a START or STOP value"
48                 return 1
49         }
50         [ "$START" ] && ln -s "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}"
51         [ "$STOP"  ] && ln -s "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/K${STOP}${name##K[0-9][0-9]}"
52 }
53
54 enabled() {
55         name="$(basename "${initscript}")"
56         [ -x "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}" ]
57 }
58
59 depends() {
60         return 0
61 }
62
63 help() {
64         cat <<EOF
65 Syntax: $initscript [command]
66
67 Available commands:
68         start   Start the service
69         stop    Stop the service
70         restart Restart the service
71         reload  Reload configuration files (or restart if that fails)
72         enable  Enable service autostart
73         disable Disable service autostart
74 $EXTRA_HELP
75 EOF
76 }
77
78 # for procd
79 start_service() {
80         return 0
81 }
82
83 stop_service() {
84         return 0
85 }
86
87 service_triggers() {
88         return 0
89 }
90
91 service_running() {
92         return 0
93 }
94
95 stop_service() {
96         return 0
97 }
98
99 ${INIT_TRACE:+set -x}
100
101 . "$initscript"
102
103 [ -n "$USE_PROCD" ] && {
104         EXTRA_COMMANDS="${EXTRA_COMMANDS} running"
105
106         . $IPKG_INSTROOT/lib/functions/procd.sh
107         basescript=$(readlink "$initscript")
108         rc_procd() {
109                 procd_open_service "$(basename ${basescript:-$initscript})" "$initscript"
110                 "$@"
111                 procd_close_service
112         }
113
114         start() {
115                 rc_procd start_service "$@"
116         }
117
118         stop() {
119                 procd_kill "$(basename ${basescript:-$initscript})" "$1"
120                 stop_service "$@"
121         }
122
123         reload() {
124                 if eval "type reload_service" 2>/dev/null >/dev/null; then
125                         reload_service "$@"
126                 else
127                         restart
128                 fi
129         }
130
131         running() {
132                 service_running "$@"
133         }
134 }
135
136 ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}"
137 list_contains ALL_COMMANDS "$action" || action=help
138 [ "$action" = "reload" ] && action='eval reload "$@" || restart "$@" && :'
139 $action "$@"