base-files,procd: add generic service status
[openwrt/openwrt.git] / package / base-files / files / etc / rc.common
index 3e237170b4cb0809172b36c2b4fff6148930edda..d3fa3be5058dcdd146bfaa5afa63b1fe77dabeff 100755 (executable)
@@ -23,6 +23,7 @@ reload() {
 restart() {
        trap '' TERM
        stop "$@"
+       trap - TERM
        start "$@"
 }
 
@@ -94,7 +95,9 @@ service_data() {
 }
 
 service_running() {
-       return 0
+       local service="${1:-$(basename $initscript)}"
+       local instance="${2:-*}"
+       procd_running "$service" "$instance" "$@"
 }
 
 ${INIT_TRACE:+set -x}
@@ -102,7 +105,11 @@ ${INIT_TRACE:+set -x}
 . "$initscript"
 
 [ -n "$USE_PROCD" ] && {
-       EXTRA_COMMANDS="${EXTRA_COMMANDS} running trace"
+       EXTRA_COMMANDS="${EXTRA_COMMANDS} running status trace"
+       EXTRA_HELP="\
+       running Check if service is running
+       status  Service status
+       "
 
        . $IPKG_INSTROOT/lib/functions/procd.sh
        basescript=$(readlink "$initscript")
@@ -130,6 +137,9 @@ ${INIT_TRACE:+set -x}
                procd_lock
                stop_service "$@"
                procd_kill "$(basename ${basescript:-$initscript})" "$1"
+               if eval "type service_stopped" 2>/dev/null >/dev/null; then
+                       service_stopped
+               fi
        }
 
        reload() {
@@ -144,6 +154,14 @@ ${INIT_TRACE:+set -x}
        running() {
                service_running "$@"
        }
+
+       status() {
+               if eval "type status_service" 2>/dev/null >/dev/null; then
+                       status_service "$@"
+               else
+                       _procd_status "$(basename ${basescript:-$initscript})" "$1"
+               fi
+       }
 }
 
 ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}"