aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2016-12-15 14:43:34 -0800
committerRobin H. Johnson <robbat2@gentoo.org>2016-12-17 14:50:11 -0800
commitf27d60add9ee1ef8a90ea0034edf6f4e4e6d0ed8 (patch)
tree5cfbfaca3c1397bd63916100a6798492f651e6b6
parent8ad460c54ce66aa0900cf872d9ebfacf0c03f9da (diff)
sh/openrc-run.sh: expose default start/stop/status
Supervisor setups break easily when start/stop/status functions are not default. Applications that write multiple PIDs to a pidfile (eg HAProxy as described in bug 601540), can also benefit from being able to call the default start/stop/status with modified environment variables. Expose the default start/stop/status functions as default_start/stop/status, and use them for the defaults start/stop/status. Trivial usage example: ``` stop() { t=$(mktemp) for pid in $(cat $pidfile) ; do echo $pid >$t pidfile=$t default_stop done rm -f $t } ``` X-Gentoo-Bug: 601540 X-Gentoo-Bug-URL: https://bugs.gentoo.org/601540 Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
-rw-r--r--sh/openrc-run.sh.in27
1 files changed, 23 insertions, 4 deletions
diff --git a/sh/openrc-run.sh.in b/sh/openrc-run.sh.in
index 4cbfb162..f5ffe17e 100644
--- a/sh/openrc-run.sh.in
+++ b/sh/openrc-run.sh.in
@@ -146,10 +146,9 @@ _status()
fi
}
-# Template start / stop / status functions
# These functions select the appropriate function to call from the
# supervisor modules
-start()
+default_start()
{
local func=ssd_start
case "$supervisor" in
@@ -163,7 +162,7 @@ start()
$func
}
-stop()
+default_stop()
{
local func=ssd_stop
case "$supervisor" in
@@ -177,7 +176,7 @@ stop()
$func
}
-status()
+default_status()
{
local func=ssd_status
case "$supervisor" in
@@ -191,6 +190,26 @@ status()
$func
}
+# Template start / stop / status functions
+# package init scripts may override these, but the bodies are as minimal as
+# possible, so that the init scripts can creatively wrap default_*
+# functions.
+start()
+{
+ default_start
+}
+
+stop()
+{
+ default_stop
+}
+
+status()
+{
+ default_status
+}
+
+# Start debug output
yesno $RC_DEBUG && set -x
# Load configuration settings. First the global ones, then any