- * This file is
- * Copyright (C) 1997-1999 Ian Jackson <ian@davenant.greenend.org.uk>
- *
- * It is part of adns, which is
- * Copyright (C) 1997-2000 Ian Jackson <ian@davenant.greenend.org.uk>
- * Copyright (C) 1999 Tony Finch <dot@dotat.at>
+ * This file is part of adns, which is Copyright Ian Jackson
+ * and contributors (see the file INSTALL for full details).
*
* 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
*
* 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
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* 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.
static void failure_errno(const char *what, int errnoval) NONRETURNING;
static void failure_errno(const char *what, int errnoval) {
static void failure_errno(const char *what, int errnoval) NONRETURNING;
static void failure_errno(const char *what, int errnoval) {
- fprintf(stderr,"adns failure: %s: errno=%d\n",what,errnoval);
+ switch (errnoval) {
+#define CE(e) \
+ case e: fprintf(stderr,"adns failure: %s: errno=" #e "\n",what); break
+ CE(EINVAL);
+ CE(EINTR);
+ CE(ESRCH);
+ CE(EAGAIN);
+ CE(ENOSYS);
+ CE(ERANGE);
+#undef CE
+ default: fprintf(stderr,"adns failure: %s: errno=%d\n",what,errnoval); break;
+ }
"initflags: p use poll(2) instead of select(2)\n"
" s use adns_wait with specified query, instead of 0\n"
"queryflags: a print status abbrevs instead of strings\n"
"initflags: p use poll(2) instead of select(2)\n"
" s use adns_wait with specified query, instead of 0\n"
"queryflags: a print status abbrevs instead of strings\n"
"exit status: 0 ok (though some queries may have failed)\n"
" 1 used by test harness to indicate test failed\n"
" 2 unable to submit or init or some such\n"
"exit status: 0 ok (though some queries may have failed)\n"
" 1 used by test harness to indicate test failed\n"
" 2 unable to submit or init or some such\n"
static void dumptype(adns_status ri, const char *rrtn, const char *fmtn) {
fprintf(stdout, "%s(%s)%s%s",
static void dumptype(adns_status ri, const char *rrtn, const char *fmtn) {
fprintf(stdout, "%s(%s)%s%s",
- for (cp= argv[1]+1, ti=0; ti<tc; ti++) {
- types_a[ti]= strtoul(cp,&cp,10);
- if ((ch= *cp)) {
- if (ch != ',') usageerr("unexpected char (not comma) in or between types");
+ for (cp= argv[1]+1, ti=0; ti<tc; ) {
+ types_a[ti]= 0;
+ for (;;) {
+ types_a[ti] |= strtoul(cp,&cp,0);
+ ch= *cp;
+ if (!ch) break;
if (initstring) {
r= adns_init_strcfg(&ads,
(adns_if_debug|adns_if_noautosys|adns_if_checkc_freq)
if (initstring) {
r= adns_init_strcfg(&ads,
(adns_if_debug|adns_if_noautosys|adns_if_checkc_freq)
for (qi=0; qi<qc; qi++) {
fdom_split(fdomlist[qi],&domain,&qflags,ownflags,sizeof(ownflags));
if (!consistsof(ownflags,"a")) usageerr("unknown ownqueryflag");
for (qi=0; qi<qc; qi++) {
fdom_split(fdomlist[qi],&domain,&qflags,ownflags,sizeof(ownflags));
if (!consistsof(ownflags,"a")) usageerr("unknown ownqueryflag");
- fprintf(stdout,"%s flags %d type %d",domain,qflags,types[ti]);
+ fprintf(stdout,"%s flags %d type %d",
+ domain,qflags,types[ti]&adns_rrt_reprmask);
r= adns_submit(ads,domain,types[ti],qflags,mc,&mc->qu);
if (r == ENOSYS) {
fprintf(stdout," not implemented\n");
r= adns_submit(ads,domain,types[ti],qflags,mc,&mc->qu);
if (r == ENOSYS) {
fprintf(stdout," not implemented\n");