commit:     ddbdb696582e9fd61995f15d6a3a53055a151e41
Author:     Julien Reichardt <mi <AT> jrei <DOT> ch>
AuthorDate: Mon Nov 20 22:45:51 2017 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Wed Nov 29 21:06:06 2017 +0000
URL:        https://gitweb.gentoo.org/proj/openrc.git/commit/?id=ddbdb696

add more variables for start-stop-daemon and supervise-daemon options

Add the following variables to expose more arguments that can be passed
to start-stop-daemon or supervise-daemon:

- directory will be passed to --chdir
- error_log will be passed to --stderr
- output_log will be passed to --stdout
- umask will be passed to umask

This is for #184.

 man/openrc-run.8        | 20 ++++++++++++++++++++
 sh/start-stop-daemon.sh |  4 ++++
 sh/supervise-daemon.sh  |  4 ++++
 3 files changed, 28 insertions(+)

diff --git a/man/openrc-run.8 b/man/openrc-run.8
index 3f4f7e81..e1db58bd 100644
--- a/man/openrc-run.8
+++ b/man/openrc-run.8
@@ -157,6 +157,24 @@ use this to change the user id before
 or
 .Xr supervise-daemon 8
 launches the daemon
+.It Ar output_log
+This is the path to a file or named pipe where the standard output from
+the service will be redirected. If you are starting this service with
+.Xr start-stop-daemon 8 ,
+,  you must set
+.Pa command_background
+to true. Keep in mind that this path will be inside the chroot if the
+.Pa chroot
+variable is set.
+.It Ar error_log
+The same thing as
+.Pa output_log
+but for the standard error output.
+.It Ar directory
+.Xr start-stop-daemon 8
+and
+.Xr supervise-daemon 8
+will chdir to this directory before starting the daemon.
 .It Ar chroot
 .Xr start-stop-daemon 8
 and
@@ -201,6 +219,8 @@ used along with in_background_fake to support re-entrant 
services.
 .It Ar in_background_fake
 Space separated list of commands which should always succeed when
 in_background is yes.
+.It Ar umask
+Set the umask of the daemon.
 .Pp
 Keep in mind that eval is used to process chroot, command, command_args_*,
 command_user, pidfile and procname. This may affect how they are

diff --git a/sh/start-stop-daemon.sh b/sh/start-stop-daemon.sh
index 0793b19a..35c642c0 100644
--- a/sh/start-stop-daemon.sh
+++ b/sh/start-stop-daemon.sh
@@ -44,9 +44,13 @@ ssd_start()
        eval start-stop-daemon --start \
                --exec $command \
                ${chroot:+--chroot} $chroot \
+               ${directory:+--chdir} $directory \
+               ${output_log+--stdout} $output_log \
+               ${error_log+--stderr} $error_log \
                ${procname:+--name} $procname \
                ${pidfile:+--pidfile} $pidfile \
                ${command_user+--user} $command_user \
+               ${umask+--umask} $umask \
                $_background $start_stop_daemon_args \
                -- $command_args $command_args_background
        if eend $? "Failed to start ${name:-$RC_SVCNAME}"; then

diff --git a/sh/supervise-daemon.sh b/sh/supervise-daemon.sh
index f6e599d5..b600b9c6 100644
--- a/sh/supervise-daemon.sh
+++ b/sh/supervise-daemon.sh
@@ -24,12 +24,16 @@ supervise_start()
        # to work properly.
        eval supervise-daemon "${RC_SVCNAME}" --start \
                ${retry:+--retry} $retry \
+               ${directory:+--chdir} $directory  \
                ${chroot:+--chroot} $chroot \
+               ${output_log+--stdout} ${output_log} \
+               ${error_log+--stderr} $error_log \
                ${pidfile:+--pidfile} $pidfile \
                ${respawn_delay:+--respawn-delay} $respawn_delay \
                ${respawn_max:+--respawn-max} $respawn_max \
                ${respawn_period:+--respawn-period} $respawn_period \
                ${command_user+--user} $command_user \
+               ${umask+--umask} $umask \
                $supervise_daemon_args \
                $command \
                -- $command_args $command_args_foreground

Reply via email to