From 803eb463a54c54bb623176573c51f382f52ee9a9 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Sun, 25 Jun 2023 18:16:43 +0000 Subject: Loosen nonzero servicedirs requirement on s6-svwait/s6-svlisten Signed-off-by: Laurent Bercot --- doc/s6-svlisten.html | 2 ++ doc/s6-svwait.html | 2 +- src/supervision/s6-svlisten.c | 4 +++- src/supervision/s6-svwait.c | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/s6-svlisten.html b/doc/s6-svlisten.html index 8fdbc88..96d3f74 100644 --- a/doc/s6-svlisten.html +++ b/doc/s6-svlisten.html @@ -52,6 +52,8 @@ their state changes.
  • It spawns prog... as a child right after getting the initial state of all the monitored services.
  • It then blocks until the wanted state happens.
  • +
  • If no service directories are listed (the block is empty), then +instead of doing all that, it immediately execs into prog....

    Exit codes

    diff --git a/doc/s6-svwait.html b/doc/s6-svwait.html index 553201b..daa497f 100644 --- a/doc/s6-svwait.html +++ b/doc/s6-svwait.html @@ -35,7 +35,7 @@ s6-svwait only waits for notifications; it never polls.

    s6-svwait monitors one or more service directories given as its arguments, waiting for a state (ready, up or down) to -happen. +happen. If no service directories are listed, it immediately exits 0.

    Exit codes

    diff --git a/src/supervision/s6-svlisten.c b/src/supervision/s6-svlisten.c index 205a382..2ab1d9b 100644 --- a/src/supervision/s6-svlisten.c +++ b/src/supervision/s6-svlisten.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include "s6-svlisten.h" @@ -49,8 +50,9 @@ int main (int argc, char const **argv, char const *const *envp) } if (argc < 3) dieusage() ; argc1 = s6_el_semicolon(argv) ; - if (!argc1 || argc == argc1 + 1) dieusage() ; + if (argc == argc1 + 1) dieusage() ; if (argc1 >= argc) strerr_dief1x(100, "unterminated servicedir block") ; + if (!argc1) xexec(argv + argc1 + 1) ; if (wantup == 2 && or) { or = 0 ; diff --git a/src/supervision/s6-svwait.c b/src/supervision/s6-svwait.c index 2c7a312..78f5c3f 100644 --- a/src/supervision/s6-svwait.c +++ b/src/supervision/s6-svwait.c @@ -45,7 +45,7 @@ int main (int argc, char const *const *argv) argc -= l.ind ; argv += l.ind ; if (t) tain_from_millisecs(&deadline, t) ; else deadline = tain_infinite_relative ; } - if (!argc) dieusage() ; + if (!argc) return 0 ; tain_now_set_stopwatch_g() ; tain_add_g(&deadline, &deadline) ; -- cgit v1.3.1