mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 21:58:04 +00:00
0b1fa809d0
In current state, if there is START but no STOP, enbale() will return 1 (failure), which is wrong. Moreover there is no need to check for START/STOP twice. Instead, add err variable to save success state and and return it's value. Also eliminate the need to disable() by using 'ln -sf', which will first delete the old symlink if one exists. Changes from v1: - fixed description Signed-off-by: Roman Yeryomin <roman@advem.lv>
150 lines
2.3 KiB
Bash
Executable File
150 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# Copyright (C) 2006-2012 OpenWrt.org
|
|
|
|
. $IPKG_INSTROOT/lib/functions.sh
|
|
. $IPKG_INSTROOT/lib/functions/service.sh
|
|
|
|
initscript=$1
|
|
action=${2:-help}
|
|
shift 2
|
|
|
|
start() {
|
|
return 0
|
|
}
|
|
|
|
stop() {
|
|
return 0
|
|
}
|
|
|
|
reload() {
|
|
restart
|
|
}
|
|
|
|
restart() {
|
|
trap '' TERM
|
|
stop "$@"
|
|
start "$@"
|
|
}
|
|
|
|
boot() {
|
|
start "$@"
|
|
}
|
|
|
|
shutdown() {
|
|
stop
|
|
}
|
|
|
|
disable() {
|
|
name="$(basename "${initscript}")"
|
|
rm -f "$IPKG_INSTROOT"/etc/rc.d/S??$name
|
|
rm -f "$IPKG_INSTROOT"/etc/rc.d/K??$name
|
|
}
|
|
|
|
enable() {
|
|
err=1
|
|
name="$(basename "${initscript}")"
|
|
[ "$START" ] && \
|
|
ln -sf "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}" && \
|
|
err=0
|
|
[ "$STOP" ] && \
|
|
ln -sf "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/K${STOP}${name##K[0-9][0-9]}" && \
|
|
err=0
|
|
return $err
|
|
}
|
|
|
|
enabled() {
|
|
name="$(basename "${initscript}")"
|
|
[ -x "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}" ]
|
|
}
|
|
|
|
depends() {
|
|
return 0
|
|
}
|
|
|
|
help() {
|
|
cat <<EOF
|
|
Syntax: $initscript [command]
|
|
|
|
Available commands:
|
|
start Start the service
|
|
stop Stop the service
|
|
restart Restart the service
|
|
reload Reload configuration files (or restart if service does not implement reload)
|
|
enable Enable service autostart
|
|
disable Disable service autostart
|
|
$EXTRA_HELP
|
|
EOF
|
|
}
|
|
|
|
# for procd
|
|
start_service() {
|
|
return 0
|
|
}
|
|
|
|
stop_service() {
|
|
return 0
|
|
}
|
|
|
|
service_triggers() {
|
|
return 0
|
|
}
|
|
|
|
service_data() {
|
|
return 0
|
|
}
|
|
|
|
service_running() {
|
|
return 0
|
|
}
|
|
|
|
${INIT_TRACE:+set -x}
|
|
|
|
. "$initscript"
|
|
|
|
[ -n "$USE_PROCD" ] && {
|
|
EXTRA_COMMANDS="${EXTRA_COMMANDS} running trace"
|
|
|
|
. $IPKG_INSTROOT/lib/functions/procd.sh
|
|
basescript=$(readlink "$initscript")
|
|
rc_procd() {
|
|
local method="set"
|
|
[ -n "$2" ] && method="add"
|
|
procd_open_service "$(basename ${basescript:-$initscript})" "$initscript"
|
|
"$@"
|
|
procd_close_service "$method"
|
|
}
|
|
|
|
start() {
|
|
rc_procd start_service "$@"
|
|
if eval "type service_started" 2>/dev/null >/dev/null; then
|
|
service_started
|
|
fi
|
|
}
|
|
|
|
trace() {
|
|
TRACE_SYSCALLS=1
|
|
start "$@"
|
|
}
|
|
|
|
stop() {
|
|
stop_service "$@"
|
|
procd_kill "$(basename ${basescript:-$initscript})" "$1"
|
|
}
|
|
|
|
reload() {
|
|
if eval "type reload_service" 2>/dev/null >/dev/null; then
|
|
reload_service "$@"
|
|
else
|
|
start
|
|
fi
|
|
}
|
|
|
|
running() {
|
|
service_running "$@"
|
|
}
|
|
}
|
|
|
|
ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}"
|
|
list_contains ALL_COMMANDS "$action" || action=help
|
|
$action "$@"
|