s6

Mirror/fork of https://skarnet.org/software/s6/
git clone https://ccx.te2000.cz/git/s6
Log | Files | Refs | README | LICENSE

commit dd74c73772894c6988582eb4aec0fbaf6ed558d5
parent e1b328e6da656b241e706600a50a699cddc1703c
Author: Laurent Bercot <ska-skaware@skarnet.org>
Date:   Mon, 16 Mar 2015 16:05:54 +0000

 - doc fixes
 - added -X to s6-notifywhenup

Diffstat:
Mdoc/s6-notifywhenup.html | 5++++-
Mdoc/s6-svc.html | 8++++----
Msrc/supervision/s6-notifywhenup.c | 14++++++++++----
Msrc/supervision/s6-svc.c | 2+-
4 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/doc/s6-notifywhenup.html b/doc/s6-notifywhenup.html @@ -31,7 +31,7 @@ needed. <h2> Interface </h2> <pre> - s6-notifywhenup [ -d <em>fd</em> ] [ -e <em>fifodir</em> ] [ -f ] [ -t <em>timeout</em> ] <em>prog...</em> + s6-notifywhenup [ -d <em>fd</em> ] [ -e <em>fifodir</em> ] [ -f ] [ -X ] [ -t <em>timeout</em> ] <em>prog...</em> </pre> <ul> @@ -59,6 +59,9 @@ set if <em>prog</em> reaps even children it doesn't know it has. </li> <li> <tt>-t&nbsp;<em>timeout</em></tt>&nbsp;: if no EOF has been received after <em>timeout</em> milliseconds, exit without sending the event. Default is 0, meaning infinite. </li> + <li> <tt>-X</tt>&nbsp;: fake readiness. s6-notifywhenup will actually send +the newline itself before executing <em>prog</em>. This option should in +principle never be used. </li> </ul> <h2> Notes </h2> diff --git a/doc/s6-svc.html b/doc/s6-svc.html @@ -27,7 +27,7 @@ knowing their PIDs, and without using horrible hacks such as .pid files. <h2> Interface </h2> <pre> - s6-svc [ -D | -U ] [ -t <em>timeout</em> ] [ -abqhkti12pcoduxO ] <em>servicedir</em> + s6-svc [ -D | -U ] [ -T <em>timeout</em> ] [ -abqhkti12pcoduxO ] <em>servicedir</em> </pre> <p> @@ -62,8 +62,8 @@ normally never be used on a working system. </li> <li> <tt>-O</tt>&nbsp;: Once at most. Do not restart the supervised process when it dies. If it is down when the command is received, do not even start it. </li> - <li> <tt>-t&nbsp;<em>timeout</em></tt>&nbsp;: if the <tt>-D</tt> or -<tt>-U</tt> option has been given, <tt>-t</tt> specifies a timeout + <li> <tt>-T&nbsp;<em>timeout</em></tt>&nbsp;: if the <tt>-D</tt> or +<tt>-U</tt> option has been given, <tt>-T</tt> specifies a timeout (in milliseconds) after which s6-svc will exit 1 with an error message if the service still hasn't reached the desired state. By default, the timeout is 0, which means that s6-svc will block indefinitely. </li> @@ -96,7 +96,7 @@ typically the sshd server. Take down the ftpd server and block until the process is really down. </p> -<pre> s6-svc -Uu -t 5000 /service/ftpd </pre> +<pre> s6-svc -Uu -T 5000 /service/ftpd </pre> <p> Bring up the ftpd server and block until it has sent notification that it is ready. Exit 1 if it is still not ready after 5 seconds. diff --git a/src/supervision/s6-notifywhenup.c b/src/supervision/s6-notifywhenup.c @@ -13,7 +13,7 @@ #include <s6/ftrigw.h> #include <s6/s6-supervise.h> -#define USAGE "s6-notifywhenup [ -d fd ] [ -e fifodir ] [ -f ] [ -t timeout ] prog..." +#define USAGE "s6-notifywhenup [ -d fd ] [ -e fifodir ] [ -f ] [ -X ] [ -t timeout ] prog..." #define dieusage() strerr_dieusage(100, USAGE) static int run_child (int fd, char const *fifodir, unsigned int timeout) @@ -50,17 +50,18 @@ int main (int argc, char const *const *argv, char const *const *envp) { unsigned int fd = 1 ; char const *fifodir = "event" ; - int df = 1 ; + int df = 1, fake = 0 ; unsigned int timeout = 0 ; PROG = "s6-notifywhenup" ; { subgetopt_t l = SUBGETOPT_ZERO ; for (;;) { - register int opt = subgetopt_r(argc, argv, "d:e:ft:", &l) ; + register int opt = subgetopt_r(argc, argv, "Xd:e:ft:", &l) ; if (opt == -1) break ; switch (opt) { + case 'X' : fake = 1 ; break ; case 'd' : if (!uint0_scan(l.arg, &fd)) dieusage() ; break ; case 'e' : fifodir = l.arg ; break ; case 'f' : df = 0 ; break ; @@ -87,6 +88,11 @@ int main (int argc, char const *const *argv, char const *const *envp) close(p[0]) ; if (fd_move((int)fd, p[1]) < 0) strerr_diefu1sys(111, "fd_move") ; } + if (fake) + { + write(fd, "\n", 1) ; + close(fd) ; + } pathexec_run(argv[0], argv, envp) ; - strerr_dieexec(111, argv[1]) ; + strerr_dieexec(111, argv[0]) ; } diff --git a/src/supervision/s6-svc.c b/src/supervision/s6-svc.c @@ -8,7 +8,7 @@ #include <s6/config.h> #include <s6/s6-supervise.h> -#define USAGE "s6-svc [ -D | -U ] [ -t timeout ] [ -abqhkti12pcoduxO ] servicedir" +#define USAGE "s6-svc [ -D | -U ] [ -T timeout ] [ -abqhkti12pcoduxO ] servicedir" #define dieusage() strerr_dieusage(100, USAGE) #define DATASIZE 63