summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/s6-notifywhenup.html5
-rw-r--r--doc/s6-svc.html8
-rw-r--r--src/supervision/s6-notifywhenup.c14
-rw-r--r--src/supervision/s6-svc.c2
4 files changed, 19 insertions, 10 deletions
diff --git a/doc/s6-notifywhenup.html b/doc/s6-notifywhenup.html
index ee5a99e..b958125 100644
--- 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
index 0ca3bd7..02ef8f0 100644
--- 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
index 98f0401..6d66fe1 100644
--- 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
index d8d2b2b..e9396de 100644
--- 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