X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=adns.git;a=blobdiff_plain;f=client%2Fadnslogres.c;h=b8e5f52a000b2553d50d1e2b8bcf369dc838ee10;hp=ed312d2a6e88269efe35b6b3a37838b3622a4067;hb=5a0be2445e09e1d0fc6ae995b6c0296bc28e657d;hpb=d0bed3988cd6205b8e347b963316fac03ef799a9 diff --git a/client/adnslogres.c b/client/adnslogres.c index ed312d2..b8e5f52 100644 --- a/client/adnslogres.c +++ b/client/adnslogres.c @@ -5,10 +5,10 @@ /* * This file is * Copyright (C) 1999 Tony Finch - * Copyright (C) 1999 Ian Jackson + * Copyright (C) 1999-2000 Ian Jackson * * It is part of adns, which is - * Copyright (C) 1997-1999 Ian Jackson + * Copyright (C) 1997-2000 Ian Jackson * Copyright (C) 1999 Tony Finch * * This program is free software; you can redistribute it and/or modify @@ -25,8 +25,9 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * This version was originally supplied by Tony Finch, but has been - * modified by Ian Jackson as it was incorporated into adns. + * This version was originally supplied by Tony Finch, but has been + * modified by Ian Jackson as it was incorporated into adns and + * subsequently. */ static const char * const cvsid = @@ -41,7 +42,9 @@ static const char * const cvsid = #include #include #include +#include +#include "config.h" #include "adns.h" /* maximum number of concurrent DNS queries */ @@ -56,11 +59,21 @@ static const char * const cvsid = static const char *progname; -#define msg(fmt, args...) fprintf(stderr, "%s: " fmt "\n", progname, ##args) +#define guard_null(str) ((str) ? (str) : "") #define sensible_ctype(type,ch) (type((unsigned char)(ch))) /* isfoo() functions from ctype.h can't safely be fed char - blech ! */ +static void msg(const char *fmt, ...) { + va_list al; + + fprintf(stderr, "%s: ", progname); + va_start(al,fmt); + vfprintf(stderr, fmt, al); + va_end(al); + fputc('\n',stderr); +} + static void aargh(const char *cause) { const char *why = strerror(errno); if (!why) why = "Unknown error"; @@ -132,7 +145,7 @@ static logline *readline(FILE *inf, adns_state adns, int opts) { strcpy(line->start, buf); str= ipaddr2domain(line->start, &line->addr, &line->rest); if (opts & OPT_DEBUG) - msg("submitting %.*s -> %s", line->rest-line->addr, line->addr, str); + msg("submitting %.*s -> %s", line->rest-line->addr, guard_null(line->addr), str); if (adns_submit(adns, str, adns_r_ptr, adns_qf_quoteok_cname|adns_qf_cname_loose, NULL, &line->query)) @@ -157,14 +170,15 @@ static void proclog(FILE *inf, FILE *outf, int opts) { while (head) { if (opts & OPT_DEBUG) msg("%d in queue; checking %.*s", len, - head->rest-head->addr, head->addr); - if (eof || len > MAXPENDING) + head->rest-head->addr, guard_null(head->addr)); + if (eof || len > MAXPENDING) { if (opts & OPT_POLL) err= adns_wait_poll(adns, &head->query, &answer, NULL); else err= adns_wait(adns, &head->query, &answer, NULL); - else + } else { err= adns_check(adns, &head->query, &answer, NULL); + } if (err != EAGAIN) { printline(outf, head->start, head->addr, head->rest, answer->status == adns_s_ok ? *answer->rrs.str : NULL);