source: trunk/package/base-files/files/etc/rc.common

Last change on this file was 45009, checked in by blogic, 18 months ago

base-files: add a init.d option that will start the syscall tracer

Signed-off-by: John Crispin <blogic@…>

  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 2.4 KB
Line 
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
7initscript=$1
8action=${2:-help}
9shift 2
10
11start() {
12        return 0
13}
14
15stop() {
16        return 0
17}
18
19reload() {
20        return 1
21}
22
23restart() {
24        trap '' TERM
25        stop "$@"
26        start "$@"
27}
28
29boot() {
30        start "$@"
31}
32
33shutdown() {
34        stop
35}
36
37disable() {
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
43enable() {
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
54enabled() {
55        name="$(basename "${initscript}")"
56        [ -x "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}" ]
57}
58
59depends() {
60        return 0
61}
62
63help() {
64        cat <<EOF
65Syntax: $initscript [command]
66
67Available 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
75EOF
76}
77
78# for procd
79start_service() {
80        return 0
81}
82
83stop_service() {
84        return 0
85}
86
87service_triggers() {
88        return 0
89}
90
91service_running() {
92        return 0
93}
94
95${INIT_TRACE:+set -x}
96
97. "$initscript"
98
99[ -n "$USE_PROCD" ] && {
100        EXTRA_COMMANDS="${EXTRA_COMMANDS} running trace"
101
102        . $IPKG_INSTROOT/lib/functions/procd.sh
103        basescript=$(readlink "$initscript")
104        rc_procd() {
105                procd_open_service "$(basename ${basescript:-$initscript})" "$initscript"
106                "$@"
107                procd_close_service
108        }
109
110        start() {
111                rc_procd start_service "$@"
112                if eval "type service_started" 2>/dev/null >/dev/null; then
113                        service_started
114                fi
115        }
116
117        trace() {
118                TRACE_SYSCALLS=1
119                start "$@"
120        }
121
122        stop() {
123                stop_service "$@"
124                procd_kill "$(basename ${basescript:-$initscript})" "$1"
125        }
126
127        reload() {
128                if eval "type reload_service" 2>/dev/null >/dev/null; then
129                        reload_service "$@"
130                else
131                        start
132                fi
133        }
134
135        running() {
136                service_running "$@"
137        }
138}
139
140ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}"
141list_contains ALL_COMMANDS "$action" || action=help
142[ "$action" = "reload" ] && action='eval reload "$@" || restart "$@" && :'
143$action "$@"
Note: See TracBrowser for help on using the repository browser.