chiark / gitweb /
adnshost: Support --reverse in -f mode input stream
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 10 Dec 2016 01:21:23 +0000 (01:21 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 11 Jun 2020 15:13:02 +0000 (16:13 +0100)
Previously this would spuriously fail an assertion.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
client/adh-main.c

index 93fe26908becb2175eefb75042d4c5ed682a20b0..0d1d57e3d10e5157d4f8cbab5b4a6304b3bd5463 100644 (file)
@@ -129,7 +129,7 @@ void of_type(const struct optioninfo *oi, const char *arg, const char *arg2) {
 
 static void process_optarg(const char *arg,
                           const char *const **argv_p,
-                          const char *value) {
+                          char *value) {
   const struct optioninfo *oip;
   const char *arg2;
   int invert;
@@ -148,9 +148,17 @@ static void process_optarg(const char *arg,
        if (!arg) usageerr("option --%s requires a value argument",oip->lopt);
        arg2= 0;
       } else if (oip->type == ot_funcarg2) {
-       assert(argv_p);
-       arg= *++(*argv_p);
-       arg2= arg ? *++(*argv_p) : 0;
+       if (argv_p) {
+         arg= *++(*argv_p);
+         arg2= arg ? *++(*argv_p) : 0;
+       } else if (value) {
+         arg= value;
+         char *space= strchr(value,' ');
+         if (space) *space++= 0;
+         arg2= space;
+       } else {
+         arg= 0;
+       }
        if (!arg || !arg2)
          usageerr("option --%s requires two more arguments", oip->lopt);
       } else {