X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/e0d855e1cf6273d258889c11551976f42a6c79b4..41559f53541ae03b5647c41c42883dc4b78634d9:/client/adh-opts.c diff --git a/client/adh-opts.c b/client/adh-opts.c index ac1ad69..46d5606 100644 --- a/client/adh-opts.c +++ b/client/adh-opts.c @@ -32,7 +32,7 @@ int ov_env=1, ov_pipe=0, ov_asynch=0; int ov_verbose= 0; adns_rrtype ov_type= adns_r_none; int ov_search=0, ov_qc_query=0, ov_qc_anshost=0, ov_qc_cname=1; -int ov_tcp=0, ov_cname=0; +int ov_tcp=0, ov_cname=0, ov_format=fmt_default; char *ov_id= 0; struct perqueryflags_remember ov_pqfr = { 1,1,1, tm_none }; @@ -44,6 +44,14 @@ static const struct optioninfo global_options[]= { "f", "pipe", &ov_pipe, 1 }, { ot_flag, "Allow answers to be reordered", "a", "asynch", &ov_asynch, 1 }, + + { ot_desconly, "answer/error output format and destination (see below):" }, + { ot_value, "Answers to stdout, errors as messages to stderr (default)", + "Fs", "fmt-simple", &ov_format, fmt_simple }, + { ot_value, "Answers and errors both to stdout in parseable format", + "Fi", "fmt-inline", &ov_format, fmt_inline }, + { ot_value, "Fully-parseable output format (default for --asynch)", + "Fa", "fmt-asynch", &ov_format, fmt_asynch }, { ot_desconly, "global verbosity level:" }, { ot_value, "Do not print anything to stderr", @@ -65,7 +73,7 @@ static const struct optioninfo perquery_options[]= { { ot_funcarg, "Query type (see below)", "t", "type", 0,0, &of_type, "type" }, { ot_funcarg, "Do reverse query (address -> name lookup)", - "i", "ptr", 0,0, &of_type, "addr" }, + "i", "ptr", 0,0, &of_ptr, "addr" }, { ot_desconly, "per-query binary options:" }, { ot_flag, "Use the search list", @@ -216,11 +224,12 @@ static void printusage(void) { "or if the domain refers to a CNAME and --show-cname is on\n" " [] [] CNAME \n" " [] [] \n" - "When a query fails you get a line like this (broken here for readability):\n" + "When a query fails you get an error message to stderr (with --fmt-simple).\n" + "Specify --fmt-inline for lines like this (broken here for readability):\n" " ; failed \\\n" " [] [] [] \"\"\n" - "\n" - "If you use --asynch each answer (success or failure) is preceded by a line\n" + "If you use --fmt-asynch, which is the default for --asynch,\n" + "each answer (success or failure) is preceded by a line\n" " \\\n" " [] [] [] \"\"\n" "where is the number of RRs that follow and will be `$' or\n" @@ -285,12 +294,14 @@ static const struct optioninfo *find(const char **optp, const char *prefix, comparer_type *comparer) { const struct optioninfo *oip; + const char *opt; + opt= *optp; oip= find1(optp,perquery_options,comparer); if (oip) return oip; oip= find1(optp,global_options,comparer); - if (!oip) usageerr("unknown option %s%s",prefix,*optp); - if (ads) usageerr("global option %s%s specified after query domain(s)",prefix,*optp); + if (!oip) usageerr("unknown option %s%s",prefix,opt); + if (ads) usageerr("global option %s%s specified after query domain(s)",prefix,opt); return oip; }