commit:     f27d60add9ee1ef8a90ea0034edf6f4e4e6d0ed8
Author:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 15 22:43:34 2016 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Sat Dec 17 22:50:11 2016 +0000
URL:        https://gitweb.gentoo.org/proj/openrc.git/commit/?id=f27d60ad

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 <AT> gentoo.org>

 sh/openrc-run.sh.in | 27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/sh/openrc-run.sh.in b/sh/openrc-run.sh.in
index 4cbfb16..f5ffe17 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

Reply via email to