base-files: use numerically prefixed uci-defaults names
[openwrt.git] / package / base-files / files / etc / rc.common
index ec1bb16..78e2dd4 100755 (executable)
@@ -1,94 +1,13 @@
 #!/bin/sh
-# Copyright (C) 2006-2011 OpenWrt.org
+# Copyright (C) 2006-2012 OpenWrt.org
 
-. $IPKG_INSTROOT/etc/functions.sh
+. $IPKG_INSTROOT/lib/functions.sh
+. $IPKG_INSTROOT/lib/functions/service.sh
 
 initscript=$1
 action=${2:-help}
 shift 2
 
-#
-# service: simple wrapper around start-stop-daemon
-#
-# Usage: service ACTION EXEC ARGS...
-#
-# Action:
-#   -S,--start           start EXEC, passing it ARGS as its arguments
-#   -K,--stop            stop EXEC (send it a $SERVICE_SIG_STOP signal)
-#   -R,--reload          reload EXEC (send it a $SERVICE_SIG_RELOAD signal)
-#
-# Environment variables used:
-#   SERVICE_DAEMONIZE    run EXEC in background
-#   SERVICE_WRITE_PID    create a pid file and use it
-#   SERVICE_USE_PID      assume EXEC creates its own pid file and use it
-#   SERVICE_PID_FILE     pid file to use (default to /var/run/EXEC.pid)
-#   SERVICE_SIG_RELOAD   signal used for reloading
-#   SERVICE_SIG_STOP     signal used for stopping
-#   SERVICE_UID          user EXEC should be run as
-#   SERVICE_GID          group EXEC should be run as
-#
-#   SERVICE_DEBUG        don't do anything, but show what would be done
-#   SERVICE_QUIET        don't print anything
-#
-
-SERVICE_QUIET=1
-SERVICE_SIG_RELOAD="HUP"
-SERVICE_SIG_STOP="TERM"
-
-service() {
-       local ssd
-       local ssd_pid_file
-       local ssd_sig
-       local ssd_start
-       ssd="${SERVICE_DEBUG:+echo }start-stop-daemon${SERVICE_QUIET:+ -q}"
-       case "$1" in
-         -S|--start|start)
-               ssd="$ssd -S"
-               ssd_start=1
-               ;;
-         -K|--stop|stop)
-               ssd="$ssd -K"
-               ssd_sig="$SERVICE_SIG_STOP"
-               ;;
-         -R|--reload|reload)
-               ssd="$ssd -K"
-               ssd_sig="$SERVICE_SIG_RELOAD"
-               ;;
-         *)
-               echo "ssd: unknow action '$1'" 1>&2
-               return 1
-       esac
-       shift
-       if [ -z "$1" ]; then
-               echo "ssd: missing arguments" 1>&2
-               return 1
-       fi
-       ssd="$ssd -x $1"
-       if [ -n "$SERVICE_PID_FILE$SERVICE_USE_PID$SERVICE_WRITE_PID" ]; then
-               ssd="$ssd -p ${SERVICE_PID_FILE:-/var/run/${1##*/}.pid}"
-       fi
-       ssd="$ssd${SERVICE_UID:+ -c $SERVICE_UID${SERVICE_GID:+:$SERVICE_GID}}"
-       if [ -n "$ssd_start" ]; then
-               ssd="$ssd${SERVICE_DAEMONIZE:+ -b}${SERVICE_WRITE_PID:+ -m}"
-       else
-               ssd="$ssd${ssd_sig:+ -s $ssd_sig}"
-       fi
-       shift
-       $ssd${1:+ -- "$@"}
-}
-
-service_start() {
-       service -S "$@"
-}
-
-service_stop() {
-       service -K "$@"
-}
-
-service_reload() {
-       service -R "$@"
-}
-
 start() {
        return 0
 }
@@ -156,8 +75,41 @@ $EXTRA_HELP
 EOF
 }
 
+# for procd
+start_service() {
+       return 0
+}
+
+stop_service() {
+       return 0
+}
+
+${INIT_TRACE:+set -x}
+
 . "$initscript"
 
+[ -n "$USE_PROCD" ] && {
+       . $IPKG_INSTROOT/lib/functions/procd.sh
+
+       rc_procd() {
+               procd_open_service "$(basename "$initscript")" "$initscript"
+               "$@"
+               procd_close_service
+       }
+
+       start() {
+               rc_procd start_service "$@"
+       }
+
+       stop() {
+               procd_kill "$(basename "$initscript")" "$1"
+       }
+
+       reload() {
+               start
+       }
+}
+
 ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}"
 list_contains ALL_COMMANDS "$action" || action=help
 [ "$action" = "reload" ] && action='eval reload "$@" || restart "$@" && :'