OpenWrt – Rev 4

Subversion Repositories:
Rev:
#!/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() {
                procd_lock
                stop_service "$@"
                procd_kill "$(basename ${basescript:-$initscript})" "$1"
        }

        reload() {
                if eval "type reload_service" 2>/dev/null >/dev/null; then
                        procd_lock
                        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 "$@"