X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=client%2Fadh-main.c;h=0d1d57e3d10e5157d4f8cbab5b4a6304b3bd5463;hb=fc440c64836370db9d8cb1a25f09c9df0786f865;hp=31335b70dd11cb22b09691aa89c8f58d8a11e805;hpb=72c6bfd77dfdb34457a792874fd1c3030fca90ac;p=adns.git diff --git a/client/adh-main.c b/client/adh-main.c index 31335b7..0d1d57e 100644 --- a/client/adh-main.c +++ b/client/adh-main.c @@ -5,7 +5,7 @@ */ /* * This file is part of adns, which is - * Copyright (C) 1997-2000,2003,2006,2014-2016 Ian Jackson + * Copyright (C) 1997-2000,2003,2006,2014-2016,2020 Ian Jackson * Copyright (C) 2014 Mark Wooding * Copyright (C) 1999-2000,2003,2006 Tony Finch * Copyright (C) 1991 Massachusetts Institute of Technology @@ -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 {