*/
/*
* This file is
- * Copyright (C) 1997-1999 Ian Jackson <ian@davenant.greenend.org.uk>
+ * Copyright (C) 1997-2000 Ian Jackson <ian@davenant.greenend.org.uk>
*
* It is part of adns, which is
- * Copyright (C) 1997-1999 Ian Jackson <ian@davenant.greenend.org.uk>
+ * Copyright (C) 1997-2000 Ian Jackson <ian@davenant.greenend.org.uk>
* Copyright (C) 1999 Tony Finch <dot@dotat.at>
*
* This program is free software; you can redistribute it and/or modify
return p;
}
-void of_type(const struct optioninfo *oi, const char *arg) {
+void of_type(const struct optioninfo *oi, const char *arg, const char *arg2) {
static const struct typename {
adns_rrtype type;
const char *desc;
const char *const **argv_p,
const char *value) {
const struct optioninfo *oip;
+ const char *arg2;
int invert;
if (arg[0] == '-' || arg[0] == '+') {
if (oip->type == ot_funcarg) {
arg= argv_p ? *++(*argv_p) : value;
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);
+ if (arg) arg2= *++(*argv_p);
+ if (!arg || !arg2)
+ usageerr("option --%s requires two more arguments", oip->lopt);
} else {
if (value) usageerr("option --%s does not take a value",oip->lopt);
arg= 0;
+ arg2= 0;
}
- opt_do(oip,arg,invert);
+ opt_do(oip,invert,arg,arg2);
} else if (arg[0] == '-' && arg[1] == 0) {
arg= argv_p ? *++(*argv_p) : value;
if (!arg) usageerr("option `-' must be followed by a domain");
} else {
if (value) usageerr("two values for option -%s given !",oip->sopt);
}
- opt_do(oip,arg,invert);
+ opt_do(oip,invert,arg,0);
arg= "";
} else {
if (value) usageerr("option -%s does not take a value",oip->sopt);
- opt_do(oip,0,invert);
+ opt_do(oip,invert,0,0);
}
}
}