X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=adns.git;a=blobdiff_plain;f=client%2Fadh-opts.c;h=9805e5e8492440ef01ee7e21c9dd0494ed7d329d;hp=46d5606d5ada55b77a7a0480843f1f34d684a16f;hb=c5f033dba6fbc5848658e96aa71980c688020796;hpb=413b9ad623d4f623dad0d9d8f577607d01b37071 diff --git a/client/adh-opts.c b/client/adh-opts.c index 46d5606..9805e5e 100644 --- a/client/adh-opts.c +++ b/client/adh-opts.c @@ -5,11 +5,11 @@ */ /* * This file is - * Copyright (C) 1997-1999 Ian Jackson + * Copyright (C) 1997-2000 Ian Jackson * * It is part of adns, which is - * Copyright (C) 1997-1999 Ian Jackson - * Copyright (C) 1999 Tony Finch + * Copyright (C) 1997-2000 Ian Jackson + * Copyright (C) 1999-2000 Tony Finch * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -62,6 +62,10 @@ static const struct optioninfo global_options[]= { "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, "" }, + { ot_func, "Print version number", + 0, "version", 0,0, of_version }, { ot_func, "Print usage information", 0, "help", 0,0, of_help }, @@ -74,6 +78,8 @@ static const struct optioninfo perquery_options[]= { "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", @@ -192,6 +198,15 @@ static void printusage(void) { 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; @@ -256,10 +271,14 @@ static void printusage(void) { if (ferror(stdout)) sysfail("write usage message",errno); } -void of_help(const struct optioninfo *oi, const char *arg) { +void of_version(const struct optioninfo *oi, const char *arg, const char *arg2) { + VERSION_PRINT_QUIT("adnshost"); +} + +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); @@ -316,7 +335,8 @@ static void noninvert(const struct optioninfo *oip) { 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); @@ -327,9 +347,9 @@ void opt_do(const struct optioninfo *oip, const char *arg, int invert) { 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();