chiark / gitweb /
Fix typo in changelog entry for 1.6.1
[adns.git] / src / general.c
index 4404b31109191d4754f65246beb654bd2324fee4..183c4877ecdfdf24272407ee00f4c74f5b9444e4 100644 (file)
@@ -4,15 +4,12 @@
  * - vbuf handling
  */
 /*
- *  This file is part of adns, which is
- *    Copyright (C) 1997-2000,2003,2006  Ian Jackson
- *    Copyright (C) 1999-2000,2003,2006  Tony Finch
- *    Copyright (C) 1991 Massachusetts Institute of Technology
- *  (See the file INSTALL for full details.)
+ *  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
- *  the Free Software Foundation; either version 2, or (at your option)
+ *  the Free Software Foundation; either version 3, or (at your option)
  *  any later version.
  *  
  *  This program is distributed in the hope that it will be useful,
@@ -21,8 +18,7 @@
  *  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.
  */
 
 #include <stdlib.h>
@@ -50,6 +46,7 @@ void adns__lprintf(adns_state ads, const char *fmt, ...) {
 
 void adns__vdiag(adns_state ads, const char *pfx, adns_initflags prevent,
                 int serv, adns_query qu, const char *fmt, va_list al) {
+  char buf[ADNS_ADDR2TEXT_BUFLEN];
   const char *bef, *aft;
   vbuf vb;
   
@@ -83,7 +80,8 @@ void adns__vdiag(adns_state ads, const char *pfx, adns_initflags prevent,
   }
   
   if (serv>=0) {
-    adns__lprintf(ads,"%sNS=%s",bef,inet_ntoa(ads->servers[serv].addr));
+    adns__lprintf(ads,"%sNS=%s",bef,
+                 adns__sockaddr_ntoa(&ads->servers[serv].addr.sa, buf));
     bef=", "; aft=")\n";
   }
 
@@ -196,6 +194,9 @@ const char *adns__diag_domain(adns_state ads, int serv, adns_query qu,
   return vb->buf;
 }
 
+int adns__getrrsz_default(const typeinfo *typei, adns_rrtype type)
+  { return typei->fixed_rrsz; }
+
 adns_status adns_rr_info(adns_rrtype type,
                         const char **rrtname_r, const char **fmtname_r,
                         int *len_r,
@@ -209,12 +210,12 @@ adns_status adns_rr_info(adns_rrtype type,
 
   if (rrtname_r) *rrtname_r= typei->rrtname;
   if (fmtname_r) *fmtname_r= typei->fmtname;
-  if (len_r) *len_r= typei->rrsz;
+  if (len_r) *len_r= typei->getrrsz(typei, type);
 
   if (!datap) return adns_s_ok;
   
   adns__vbuf_init(&vb);
-  st= typei->convstring(&vb,datap);
+  st= typei->convstring(&vb,type,datap);
   if (st) goto x_freevb;
   if (!adns__vbuf_append(&vb,"",1)) { st= adns_s_nomemory; goto x_freevb; }
   assert(strlen(vb.buf) == vb.used-1);
@@ -283,14 +284,14 @@ const char *adns_strerror(adns_status st) {
   const struct sinfo *si;
 
   si= findsinfo(st);
-  return si->string;
+  return si ? si->string : 0;
 }
 
 const char *adns_errabbrev(adns_status st) {
   const struct sinfo *si;
 
   si= findsinfo(st);
-  return si->abbrev;
+  return si ? si->abbrev : 0;
 }
 
 
@@ -327,7 +328,7 @@ const char *adns_errtypeabbrev(adns_status st) {
 
   sti= bsearch(&st,stinfos, sizeof(stinfos)/sizeof(*stinfos),
               sizeof(*stinfos), sti_compar);
-  return sti->abbrev;
+  return sti ? sti->abbrev : 0;
 }