X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=adns.git;a=blobdiff_plain;f=src%2Fsetup.c;h=7daea9bb9149ba0244721cb3b39cf4804b211e57;hp=ecf92a2ee03ad57277309be91ccf973cfa746d25;hb=8402e34c7df0adad223cf1fa1328bb524a15d99f;hpb=656b2da98fe9588cf3d9a229fb00c7d64e84c8d2 diff --git a/src/setup.c b/src/setup.c index ecf92a2..7daea9b 100644 --- a/src/setup.c +++ b/src/setup.c @@ -2,33 +2,39 @@ #include "adns-internal.h" -static void vdebug(adns_state ads, const char *fmt, va_list al) { - if (!(ads->iflags & adns_if_debug)) return; - fputs("adns debug: ",stderr); +void adns__vdiag(adns_state ads, adns_initflags prevent, const char *pfx, + int serv, const char *fmt, va_list al) { + if (!(ads->iflags & adns_if_debug) && (!prevent || (ads->iflags & prevent))) return; + if (serv>=0) { + fprintf(stderr,"adns%s: nameserver %s: ",pfx,inet_ntoa(ads->servers[serv].addr)); + } else { + fprintf(stderr,"adns%s: ",pfx); + } vfprintf(stderr,fmt,al); fputc('\n',stderr); } -void adns__debug(adns_state ads, const char *fmt, ...) { +void adns__debug(adns_state ads, int serv, const char *fmt, ...) { va_list al; va_start(al,fmt); - vdebug(ads,fmt,al); + vdiag(ads," debug",0,serv,fmt,al); va_end(al); } -static void vdiag(adns_state ads, const char *fmt, va_list al) { - if (ads->iflags & adns_if_noerrprint) return; - fputs("adns: ",stderr); - vfprintf(stderr,fmt,al); - fputc('\n',stderr); +void adns__swarn(adns_state ads, int serv, const char *fmt, ...) { + va_list al; + + va_start(al,fmt); + vdiag(ads," warning",adns_if_noerrprint|adns_if_noserverwarn,serv,fmt,al); + va_end(al); } -void adns__diag(adns_state ads, const char *fmt, ...) { +void adns__diag(adns_state ads, int serv, const char *fmt, ...) { va_list al; va_start(al,fmt); - vdiag(ads,fmt,al); + vdiag(ads,"",adns_if_noerrprint,serv,fmt,al); va_end(al); } @@ -110,9 +116,6 @@ static const struct configcommandinfo { { 0 } }; -static int ctype_whitespace(int c) { return c==' ' || c=='\n' || c=='\t'; } -static int ctype_digit(int c) { return c>='0' && c<='9'; } - static void readconfig(adns_state ads, const char *filename) { char linebuf[2000], *p, *q; FILE *file; @@ -227,13 +230,11 @@ int adns_init(adns_state *ads_r, adns_initflags flags) { proto= getprotobyname("udp"); if (!proto) { r= ENOPROTOOPT; goto x_free; } ads->udpsocket= socket(AF_INET,SOCK_DGRAM,proto->p_proto); - if (!ads->udpsocket) { r= errno; goto x_closeudp; } + if (ads->udpsocket<0) { r= errno; goto x_free; } *ads_r= ads; return 0; - x_closeudp: - close(ads->udpsocket); x_free: free(ads); return r;