*/
/*
* 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
"Vd", "debug", &ov_verbose, adns_if_debug },
{ ot_desconly, "other global options:" },
+ { ot_funcarg, "Configuration to use instead of /etc/resolv.conf",
+ 0, "config", 0,0, of_config, "<config-text>" },
{ ot_func, "Print usage information",
0, "help", 0,0, of_help },
"t", "type", 0,0, &of_type, "type" },
{ ot_funcarg, "Do reverse query (address -> name lookup)",
"i", "ptr", 0,0, &of_ptr, "addr" },
+ { ot_funcarg2, "Lookup in in-addr-like `zone' (eg MAPS RBL)",
+ 0, "reverse", 0,0, &of_reverse, "addr","zone" },
{ ot_desconly, "per-query binary options:" },
{ ot_flag, "Use the search list",
oip->desc);
}
break;
+ case ot_funcarg2:
+ assert(!oip->sopt);
+ l= (maxlopt + maxsopt - 2 -
+ (strlen(oip->lopt) + strlen(oip->argdesc) + strlen(oip->argdesc2)));
+ printf(" --%s <%s> <%s>%*s%s\n",
+ oip->lopt, oip->argdesc, oip->argdesc2,
+ l>2 ? l : 2, "",
+ oip->desc);
+ break;
case ot_desconly:
printf("%s\n", oip->desc);
break;
if (ferror(stdout)) sysfail("write usage message",errno);
}
-void of_help(const struct optioninfo *oi, const char *arg) {
+void of_help(const struct optioninfo *oi, const char *arg, const char *arg2) {
printusage();
if (fclose(stdout)) sysfail("finish writing output",errno);
- exit(0);
+ quitnow(0);
}
typedef int comparer_type(const char **optp, const struct optioninfo *entry);
oip->lopt ? "--" : "", oip->lopt ? oip->lopt : "");
}
-void opt_do(const struct optioninfo *oip, const char *arg, int invert) {
+void opt_do(const struct optioninfo *oip, int invert,
+ const char *arg, const char *arg2) {
switch (oip->type) {
case ot_flag:
assert(!arg);
if (invert) noninvert(oip);
*oip->storep= oip->value;
return;
- case ot_func: case ot_funcarg:
+ case ot_func: case ot_funcarg: case ot_funcarg2:
if (invert) noninvert(oip);
- oip->func(oip,arg);
+ oip->func(oip,arg,arg2);
return;
default:
abort();