*/
/*
* This file is part of adns, which is
- * Copyright (C) 1997-2000,2003,2006 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
* (See the file INSTALL for full details.)
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with this program; if not, write to the Free Software Foundation.
*/
#include "adnshost.h"
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;
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 {
if (r == 0) {
if (used) {
/* fake up final newline */
- buf[used++]= '\n';
+ buf[used]= '\n';
r= 1;
} else {
ov_pipe= 0;