Hi everyone,

there's a few commands that take N arguments in daemontools and only one in s6 - which is a perfectly fine choice, except that most of them (think "svstat *") will reject no arguments and accept N arguments, but only using the 1st one.

These commands are:
- svc
- supervise,svok,svscan? (do the same in the original, so ok)
- svstat
- svscanctl (not in the original)

Here's a boring patch that rejects unused arguments (except for svscan).

---
 src/supervision/s6-supervise.c | 2 +-
 src/supervision/s6-svc.c       | 2 +-
 src/supervision/s6-svok.c      | 2 +-
 src/supervision/s6-svscanctl.c | 2 +-
 src/supervision/s6-svstat.c    | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/supervision/s6-supervise.c b/src/supervision/s6-supervise.c
index 4aaf371..02cdd21 100644
--- a/src/supervision/s6-supervise.c
+++ b/src/supervision/s6-supervise.c
@@ -430,7 +430,7 @@ int main (int argc, char const *const *argv)
 {
   iopause_fd x[2] = { { -1, IOPAUSE_READ, 0 }, { -1, IOPAUSE_READ, 0 } } ;
   PROG = "s6-supervise" ;
-  if (argc < 2) strerr_dieusage(100, USAGE) ;
+  if (argc != 2) strerr_dieusage(100, USAGE) ;
   if (chdir(argv[1]) < 0) strerr_diefu2sys(111, "chdir to ", argv[1]) ;
   {
     register unsigned int proglen = str_len(PROG) ;
diff --git a/src/supervision/s6-svc.c b/src/supervision/s6-svc.c
index e9396de..1433f79 100644
--- a/src/supervision/s6-svc.c
+++ b/src/supervision/s6-svc.c
@@ -57,7 +57,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
     }
     argc -= l.ind ; argv += l.ind ;
   }
-  if (!argc) dieusage() ;
+  if (argc != 1) dieusage() ;
   if (updown[1])
   {
     char const *newargv[11] ;
diff --git a/src/supervision/s6-svok.c b/src/supervision/s6-svok.c
index 4a615e9..7fbe061 100644
--- a/src/supervision/s6-svok.c
+++ b/src/supervision/s6-svok.c
@@ -11,7 +11,7 @@
 int main (int argc, char const *const *argv)
 {
   PROG = "s6-svok" ;
-  if (argc < 2) strerr_dieusage(100, USAGE) ;
+  if (argc != 2) strerr_dieusage(100, USAGE) ;
   argv++ ; argc-- ;
   {
     int fd ;
diff --git a/src/supervision/s6-svscanctl.c b/src/supervision/s6-svscanctl.c
index 6529e9c..13cee5e 100644
--- a/src/supervision/s6-svscanctl.c
+++ b/src/supervision/s6-svscanctl.c
@@ -50,7 +50,7 @@ int main (int argc, char const *const *argv)
     }
     argc -= l.ind ; argv += l.ind ;
   }
-  if (!argc) dieusage() ;
+  if (argc != 1) dieusage() ;

   {
     unsigned int arglen = str_len(*argv) ;
diff --git a/src/supervision/s6-svstat.c b/src/supervision/s6-svstat.c
index de8fe0d..b67a2fe 100644
--- a/src/supervision/s6-svstat.c
+++ b/src/supervision/s6-svstat.c
@@ -40,7 +40,7 @@ int main (int argc, char const *const *argv)
     }
     argc -= l.ind ; argv += l.ind ;
   }
-  if (!argc) dieusage() ;
+  if (argc != 1) dieusage() ;

   if (!s6_svstatus_read(*argv, &status))
     strerr_diefu2sys(111, "read status for ", *argv) ;
--
2.1.4

Reply via email to