[git] ADNS-g10 - branch, master, updated. fefa444526f34dd242506c6b77e102cfb025dcbd

by Werner Koch cvs at cvs.gnupg.org
Fri May 11 17:50:19 CEST 2012


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "ADNS migrated to autotools/libtool".

The branch, master has been updated
       via  fefa444526f34dd242506c6b77e102cfb025dcbd (commit)
       via  d272961c620cdc1cab946ed20a6a7f4dab93f454 (commit)
       via  98fb429d1cf42dd9f5ad87cfd9432e8c5431f140 (commit)
       via  56606a50a5d945e28315bf14d649e07e80119de9 (commit)
       via  04f9d8f7248fef6b6038a42806703ad69100e1b2 (commit)
      from  0868f128b606ede3e6748b6efa6cd98784b8e591 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit fefa444526f34dd242506c6b77e102cfb025dcbd
Author: Werner Koch <wk at gnupg.org>
Date:   Fri May 11 16:22:54 2012 +0200

    Support command line options -t aaaa.
    
    * client/adh-main.c (of_type): Add adns_r_aaaa.

diff --git a/client/adh-main.c b/client/adh-main.c
index 0a366dc..0009a91 100644
--- a/client/adh-main.c
+++ b/client/adh-main.c
@@ -9,20 +9,20 @@
  *    Copyright (C) 1999-2000,2003,2006  Tony Finch
  *    Copyright (C) 1991 Massachusetts Institute of Technology
  *  (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)
  *  any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  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. 
+ *  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
 #include "adnshost.h"
@@ -68,7 +68,7 @@ void *xmalloc(size_t sz) {
 
 char *xstrsave(const char *str) {
   char *p;
-  
+
   p= xmalloc(strlen(str)+1);
   strcpy(p,str);
   return p;
@@ -91,13 +91,14 @@ void of_type(const struct optioninfo *oi, const char *arg, const char *arg2) {
     { adns_r_rp,     "rp"     },
     { adns_r_srv,    "srv"    },
     { adns_r_addr,   "addr"   },
-    
+
     /* types with only one version */
     { adns_r_cname,  "cname"  },
     { adns_r_hinfo,  "hinfo"  },
     { adns_r_txt,    "txt"    },
-    
+
     /* raw versions */
+    { adns_r_aaaa,     "aaaa" },
     { adns_r_a,        "a"    },
     { adns_r_ns_raw,   "ns-"  },
     { adns_r_soa_raw,  "soa-" },
@@ -186,7 +187,7 @@ static void process_optarg(const char *arg,
     query_do(arg);
   }
 }
-    
+
 static void read_stdin(void) {
   int anydone, r;
   char *newline, *space;
@@ -233,7 +234,7 @@ int main(int argc, const char *const *argv) {
   int r, maxfd;
   fd_set readfds, writefds, exceptfds;
   const char *arg;
-  
+
   while ((arg= *++argv)) process_optarg(arg,&argv,0);
 
   if (!ov_pipe && !ads) usageerr("no domains given, and -f/--pipe not used; try --help");
diff --git a/client/adh-opts.c b/client/adh-opts.c
index 08310e0..5bb7273 100644
--- a/client/adh-opts.c
+++ b/client/adh-opts.c
@@ -9,20 +9,20 @@
  *    Copyright (C) 1999-2000,2003,2006  Tony Finch
  *    Copyright (C) 1991 Massachusetts Institute of Technology
  *  (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)
  *  any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  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. 
+ *  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
 #include "adnshost.h"
@@ -43,7 +43,7 @@ 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 },
@@ -51,7 +51,7 @@ static const struct optioninfo global_options[]= {
     "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",
     "Vq", "quiet",         &ov_verbose, adns_if_noerrprint },
@@ -59,7 +59,7 @@ static const struct optioninfo global_options[]= {
     "Vn", "no-quiet",      &ov_verbose, 0 },
   { ot_value,            "Debugging mode",
     "Vd", "debug",         &ov_verbose, adns_if_debug },
-  		         
+
   { ot_desconly, "other global options:" },
   { ot_funcarg,          "Configuration to use instead of /etc/resolv.conf",
     0, "config",           0,0, of_config, "<config-text>" },
@@ -97,7 +97,7 @@ static const struct optioninfo perquery_options[]= {
     "Dt", "show-type",    &ov_pqfr.show_type, 0 },
   { ot_flag,             "Do not display CNAME target in output",
     "Dc", "show-cname",    &ov_pqfr.show_cname, 0 },
-  
+
   { ot_desconly, "per-query TTL mode (NB TTL is minimum across all info in reply):" },
   { ot_value,            "Show the TTL as a TTL",
     "Tt", "ttl-ttl",       &ov_pqfr.ttl, tm_rel },
@@ -105,7 +105,7 @@ static const struct optioninfo perquery_options[]= {
     "Ta", "ttl-abs",       &ov_pqfr.ttl, tm_abs },
   { ot_value,            "Do not show the TTL (default)",
     "Tn", "no-ttl",        &ov_pqfr.ttl, tm_none },
-  
+
   { ot_desconly, "per-query CNAME handling mode:" },
   { ot_value,            "Call it an error if a CNAME is found",
     "Cf", "cname-reject",  &ov_cname, adns_qf_cname_forbid },
@@ -113,7 +113,7 @@ static const struct optioninfo perquery_options[]= {
     "Cl", "cname-loose",   &ov_cname, adns_qf_cname_loose },
   { ot_value,            "CNAME ok for query domain, but not in RRs (default)",
     "Cs", "cname-ok",      &ov_cname, 0 },
-  
+
   { ot_desconly, "asynchronous/pipe mode options:" },
   { ot_funcarg,          "Set <id>, default is decimal sequence starting 0",
     0, "asynch-id",        0,0, &of_asynch_id, "id" },
@@ -132,7 +132,7 @@ static void printusage(void) {
   int maxsopt, maxlopt, l;
 
   maxsopt= maxlopt= 0;
-  
+
   for (oiap=all_optiontables; *oiap; oiap++) {
     for (oip=*oiap; oip->type != ot_end; oip++) {
       if (oip->type == ot_funcarg) continue;
@@ -144,7 +144,7 @@ static void printusage(void) {
       }
     }
   }
-	
+
   fputs("usage: adnshost [global-opts] [query-opts] query-domain\n"
 	"                             [[query-opts] query-domain ...]\n"
 	"       adnshost [global-opts] [query-opts] -f|--pipe\n",
@@ -218,7 +218,7 @@ static void printusage(void) {
   printf("\nEscaping domains which might start with `-':\n"
 	 " - %-*s Next argument is a domain, but more options may follow\n",
 	 maxlopt+maxsopt+3, "<domain>");
-  
+
   fputs("\n"
 	"Query domains should always be quoted according to master file format.\n"
 	"\n"
@@ -262,10 +262,10 @@ static void printusage(void) {
 	" 11   usage problems\n"
 	"\n"
 	"Query types (see adns.h; default is addr):\n"
-	"  ns  soa  ptr  mx  rp  srv  addr       - enhanced versions\n"
-	"  cname  hinfo  txt                     - types with only one version\n"
-	"  a  ns-  soa-  ptr-  mx-  rp-  srv-    - _raw versions\n"
-	"  type<number>                          - `unknown' type, RFC3597\n"
+	"  ns  soa  ptr  mx  rp  srv  addr           - enhanced versions\n"
+	"  cname  hinfo  txt                         - types with only one version\n"
+	"  a  aaaa ns-  soa-  ptr-  mx-  rp- srv-  - _raw versions\n"
+	"  type<number>                            - `unknown' type, RFC3597\n"
 	"Default is addr, or ptr for -i/--ptr queries\n",
 	stdout);
   if (ferror(stdout)) sysfail("write usage message",errno);

commit d272961c620cdc1cab946ed20a6a7f4dab93f454
Author: Werner Koch <wk at gnupg.org>
Date:   Fri May 11 16:21:02 2012 +0200

    Add support for AAAA records.
    
    * src/adns.h (adns_rrtype): Add adns_r_aaaa.
    (adns_answer): Add member in6addr.
    * src/internal.h (adns__state): Change sortlist struct to allow for v6
    addresses.
    * src/check.c (checkc_global): Fix for v6 sortlist.
    * src/setup.c (ccf_sortlist): Mark entries as v4.
    * src/types.c (search_sortlist): Ignore v6 addresses.
    (pa_in6addr, search_sortlist6, dip_in6addr, di_in6addr)
    (cs_in6addr): New.
    (typeinfos): Add description for the AAAA record.
    --
    
    I am not sure whether the sortlist feature makes sense for v6.
    Although I implemented the data structures and code, there is
    currently no code to fill the sortlist with v6 addresses.

diff --git a/src/adns.h b/src/adns.h
index e86363e..feb7cb1 100644
--- a/src/adns.h
+++ b/src/adns.h
@@ -157,6 +157,8 @@ typedef enum {
  adns_r_rp_raw=          17,
  adns_r_rp=                  adns_r_rp_raw|adns__qtf_mail822,
 
+ adns_r_aaaa=            28, /* RFC3596 */
+
  /* For SRV records, query domain without _qf_quoteok_query must look
   * as expected from SRV RFC with hostname-like Name.  _With_
   * _quoteok_query, any query domain is allowed. */
@@ -360,6 +362,7 @@ typedef struct {
     adns_rr_intstr *(*manyistr);     /* txt (list strs ends with i=-1, str=0)*/
     adns_rr_addr *addr;              /* addr */
     struct in_addr *inaddr;          /* a */
+    struct in6_addr *in6addr;        /* aaaa */
     adns_rr_hostaddr *hostaddr;      /* ns */
     adns_rr_intstrpair *intstrpair;  /* hinfo */
     adns_rr_strpair *strpair;        /* rp, rp_raw */
diff --git a/src/check.c b/src/check.c
index bf60566..3fc145e 100644
--- a/src/check.c
+++ b/src/check.c
@@ -75,12 +75,23 @@ static void checkc_notcpbuf(adns_state ads) {
 }
 
 static void checkc_global(adns_state ads) {
-  int i;
+  int i, j;
 
   assert(ads->udpsocket >= 0);
 
   for (i=0; i<ads->nsortlist; i++)
-    assert(!(ads->sortlist[i].base.s_addr & ~ads->sortlist[i].mask.s_addr));
+    {
+      assert (ads->sortlist[i].base.is_v6 == ads->sortlist[i].mask.is_v6);
+      if (ads->sortlist[i].base.is_v6)
+        {
+          for (j=0; j < 16; j++)
+            assert (!(ads->sortlist[i].base.u.v6.s6_addr[j]
+                      & ~ads->sortlist[i].mask.u.v6.s6_addr[j]));
+        }
+      else
+        assert(!(ads->sortlist[i].base.u.v4.s_addr
+                 & ~ads->sortlist[i].mask.u.v4.s_addr));
+    }
 
   assert(ads->tcpserver >= 0 && ads->tcpserver < ads->nservers);
 
diff --git a/src/internal.h b/src/internal.h
index dbc6726..a2e8c43 100644
--- a/src/internal.h
+++ b/src/internal.h
@@ -337,7 +337,13 @@ struct adns__state {
     struct in_addr addr;
   } servers[MAXSERVERS];
   struct sortlist {
-    struct in_addr base, mask;
+    struct {
+      union {
+        struct in_addr v4;
+        struct in6_addr v6;
+      } u;
+      char is_v6;
+    } base, mask;
   } sortlist[MAXSORTLIST];
   char **searchlist;
   unsigned short rand48xsubi[3];
@@ -763,4 +769,5 @@ static inline int errno_resources(int e) { return e==ENOMEM || e==ENOBUFS; }
 
 
 
+
 #endif
diff --git a/src/setup.c b/src/setup.c
index 413928f..6b0172c 100644
--- a/src/setup.c
+++ b/src/setup.c
@@ -222,8 +222,10 @@ static void ccf_sortlist(adns_state ads, const char *fn,
       }
     }
 
-    ads->sortlist[ads->nsortlist].base= base;
-    ads->sortlist[ads->nsortlist].mask= mask;
+    ads->sortlist[ads->nsortlist].base.is_v6 = 0;
+    ads->sortlist[ads->nsortlist].base.u.v4 = base;
+    ads->sortlist[ads->nsortlist].mask.is_v6 = 0;
+    ads->sortlist[ads->nsortlist].mask.u.v4 = mask;
     ads->nsortlist++;
   }
 }
diff --git a/src/types.c b/src/types.c
index a18aedc..c30b311 100644
--- a/src/types.c
+++ b/src/types.c
@@ -253,14 +253,18 @@ static adns_status pa_inaddr(const parseinfo *pai, int cbyte,
   return adns_s_ok;
 }
 
+/* Find the first match of AD in the sortlist of the ADS state and
+   return its index.  If not found the size of the sortlist is
+   returned.  This is the v4 version.  */
 static int search_sortlist(adns_state ads, struct in_addr ad) {
   const struct sortlist *slp;
   int i;
 
-  for (i=0, slp=ads->sortlist;
-       i<ads->nsortlist &&
-	 !((ad.s_addr & slp->mask.s_addr) == slp->base.s_addr);
-       i++, slp++);
+  for (i=0, slp=ads->sortlist; i < ads->nsortlist; i++, slp++)
+    if (!slp->mask.is_v6
+        && ((ad.s_addr & slp->mask.u.v4.s_addr) == slp->base.u.v4.s_addr))
+      break;
+
   return i;
 }
 
@@ -291,6 +295,72 @@ static adns_status cs_inaddr(vbuf *vb, const void *datap) {
 }
 
 /*
+ * _in6addr   (pa,dip,di)
+ */
+
+static adns_status pa_in6addr(const parseinfo *pai, int cbyte,
+                              int max, void *datap) {
+  struct in6_addr *storeto= datap;
+
+  if (max-cbyte != 16)
+    return adns_s_invaliddata;
+  memcpy (storeto, pai->dgram + cbyte, 16);
+  return adns_s_ok;
+}
+
+/* Find the first match of AD in the sortlist of the ADS state and
+   return its index.  If not found the size of the sortlist is
+   returned.  This is the v6 version.  */
+static int search_sortlist6(adns_state ads, const struct in6_addr *ad) {
+  const struct sortlist *slp;
+  int i, j;
+
+  for (i=0, slp=ads->sortlist; i < ads->nsortlist; i++, slp++)
+    {
+      if (slp->mask.is_v6)
+        {
+          for (j=0; j < 16 && ((ad->s6_addr[j] & slp->mask.u.v6.s6_addr[j])
+                               == slp->base.u.v6.s6_addr[j]); j++)
+            ;
+          if (j==16)
+            break;
+        }
+    }
+
+  return i;
+}
+
+static int dip_in6addr(adns_state ads,
+                       const struct in6_addr *a, const struct in6_addr *b) {
+  int ai, bi;
+
+  if (!ads->nsortlist)
+    return 0;
+
+  ai = search_sortlist6 (ads, a);
+  bi = search_sortlist6 (ads, b);
+  return bi < ai;
+}
+
+static int di_in6addr(adns_state ads,
+                      const void *datap_a, const void *datap_b) {
+  const struct in6_addr *ap = datap_a;
+  const struct in6_addr *bp = datap_b;
+
+  return dip_in6addr (ads, ap, bp);
+}
+
+static adns_status cs_in6addr(vbuf *vb, const void *datap) {
+  char buffer[INET6_ADDRSTRLEN];
+
+  inet_ntop (AF_INET6, datap,  buffer, sizeof buffer);
+
+  CSP_ADDSTR(buffer);
+  return adns_s_ok;
+}
+
+
+/*
  * _addr   (pa,di,csp,cs)
  */
 
@@ -1273,6 +1343,7 @@ DEEP_TYPE(hinfo,  "HINFO", 0, intstrpair,pa_hinfo,   0,        cs_hinfo      ),
 DEEP_TYPE(mx_raw, "MX",   "raw",intstr,  pa_mx_raw,  di_mx_raw,cs_inthost    ),
 DEEP_TYPE(txt,    "TXT",   0,   manyistr,pa_txt,     0,        cs_txt        ),
 DEEP_TYPE(rp_raw, "RP",   "raw",strpair, pa_rp,      0,        cs_rp         ),
+FLAT_TYPE(aaaa,   "AAAA",  0,   in6addr, pa_in6addr, di_in6addr,cs_in6addr   ),
 XTRA_TYPE(srv_raw,"SRV",  "raw",srvraw , pa_srvraw,  di_srv,   cs_srvraw,
 	                                               qdpl_srv, postsort_srv),
 

commit 98fb429d1cf42dd9f5ad87cfd9432e8c5431f140
Author: Werner Koch <wk at gnupg.org>
Date:   Fri May 11 16:11:11 2012 +0200

    Fix class A detection for the sortlist.
    
    * src/setup.c (ccf_sortlist): Mask BASELOCAL and 0 or 1.

diff --git a/src/setup.c b/src/setup.c
index 6ebe2a3..413928f 100644
--- a/src/setup.c
+++ b/src/setup.c
@@ -208,7 +208,7 @@ static void ccf_sortlist(adns_state ads, const char *fn,
       }
     } else {
       baselocal= ntohl(base.s_addr);
-      if (!baselocal & 0x080000000UL) /* class A */
+      if (!(baselocal & 0x080000000UL)) /* class A */
 	mask.s_addr= htonl(0x0ff000000UL);
       else if ((baselocal & 0x0c0000000UL) == 0x080000000UL)
 	mask.s_addr= htonl(0x0ffff0000UL); /* class B */

commit 56606a50a5d945e28315bf14d649e07e80119de9
Author: Werner Koch <wk at gnupg.org>
Date:   Fri May 11 16:23:33 2012 +0200

    Ignore output from regression tests.
    
    --

diff --git a/.gitignore b/.gitignore
index 9aedff9..f1a3ef2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,6 +28,7 @@ regress/fanftest_record
 regress/harness.h
 regress/hredirect.h
 regress/hsyscalls.h
+regress/output-*
 src/stamp-h1
 src/adns-config
 src/libadns.la

commit 04f9d8f7248fef6b6038a42806703ad69100e1b2
Author: Werner Koch <wk at gnupg.org>
Date:   Fri May 11 11:32:31 2012 +0200

    Remove trailing white space.
    
    --

diff --git a/src/adns.h b/src/adns.h
index f26b7ba..e86363e 100644
--- a/src/adns.h
+++ b/src/adns.h
@@ -16,25 +16,25 @@
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation; either version 2, or (at your option)
  *  any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
  *
- * 
+ *
  *  For the benefit of certain LGPL'd `omnibus' software which
  *  provides a uniform interface to various things including adns, I
  *  make the following additional licence.  I do this because the GPL
  *  would otherwise force either the omnibus software to be GPL'd or
  *  the adns-using part to be distributed separately.
- *  
+ *
  *  So: you may also redistribute and/or modify adns.h (but only the
  *  public header file adns.h and not any other part of adns) under the
  *  terms of the GNU Library General Public License as published by the
  *  Free Software Foundation; either version 2 of the License, or (at
  *  your option) any later version.
- *  
+ *
  *  Note that adns itself is GPL'd.  Authors of adns-using applications
  *  with GPL-incompatible licences, and people who distribute adns with
  *  applications where the whole distribution is not GPL'd, are still
@@ -63,7 +63,7 @@
 
 #include <sys/types.h>
 #ifdef _WIN32
-# include <ws2tcpip.h> 
+# include <ws2tcpip.h>
 #else
 # include <sys/socket.h>
 # include <netinet/in.h>
@@ -133,27 +133,27 @@ typedef enum {
     * Don't forget adns_qf_quoteok if that's what you want. */
 
  adns_r_none=             0,
- 		     
+
  adns_r_a=                1,
- 		     
+
  adns_r_ns_raw=           2,
  adns_r_ns=                  adns_r_ns_raw|adns__qtf_deref,
- 		     
+
  adns_r_cname=            5,
- 		     
+
  adns_r_soa_raw=          6,
- adns_r_soa=                 adns_r_soa_raw|adns__qtf_mail822, 
- 		     
+ adns_r_soa=                 adns_r_soa_raw|adns__qtf_mail822,
+
  adns_r_ptr_raw=         12, /* do not mind PTR with wrong or missing A */
  adns_r_ptr=                 adns_r_ptr_raw|adns__qtf_deref,
- 		     
- adns_r_hinfo=           13,  
- 		     
+
+ adns_r_hinfo=           13,
+
  adns_r_mx_raw=          15,
  adns_r_mx=                  adns_r_mx_raw|adns__qtf_deref,
- 		     
+
  adns_r_txt=             16,
- 		     
+
  adns_r_rp_raw=          17,
  adns_r_rp=                  adns_r_rp_raw|adns__qtf_mail822,
 
@@ -162,9 +162,9 @@ typedef enum {
   * _quoteok_query, any query domain is allowed. */
  adns_r_srv_raw=         33,
  adns_r_srv=                 adns_r_srv_raw|adns__qtf_deref,
-		     
+
  adns_r_addr=                adns_r_a|adns__qtf_deref
- 
+
 } adns_rrtype;
 
 /*
@@ -172,7 +172,7 @@ typedef enum {
  * legal syntax, or you get adns_s_querydomainvalid (if the query
  * domain contains bad characters) or adns_s_answerdomaininvalid (if
  * the answer contains bad characters).
- * 
+ *
  * In queries _with_ qf_quoteok_*, domains in the query or response
  * may contain any characters, quoted according to RFC1035 5.1.  On
  * input to adns, the char* is a pointer to the interior of a "
@@ -244,7 +244,7 @@ typedef enum {
  adns_s_systemfail,
 
  adns_s_max_localfail= 29,
- 
+
  /* remotely induced errors, detected locally */
  adns_s_timeout,
  adns_s_allservfail,
@@ -253,7 +253,7 @@ typedef enum {
  adns_s_unknownformat,
 
  adns_s_max_remotefail= 59,
- 
+
  /* remotely induced errors, reported by remote server to us */
  adns_s_rcodeservfail,
  adns_s_rcodeformaterror,
@@ -269,14 +269,14 @@ typedef enum {
  adns_s_answerdomaininvalid,
  adns_s_answerdomaintoolong,
  adns_s_invaliddata,
- 
+
  adns_s_max_misconfig= 199,
 
  /* permanent problems with the query */
  adns_s_querydomainwrong,
  adns_s_querydomaininvalid,
  adns_s_querydomaintoolong,
- 
+
  adns_s_max_misquery= 299,
 
  /* permanent errors */
@@ -284,7 +284,7 @@ typedef enum {
  adns_s_nodata,
 
  adns_s_max_permfail= 499
- 
+
 } adns_status;
 
 typedef struct {
@@ -390,7 +390,7 @@ typedef struct {
  *  (eg, failure to create sockets, malloc failure, etc.) return errno
  *  values.  EINVAL from _init et al means the configuration file
  *  is erroneous and cannot be parsed.
- * 
+ *
  *  For _wait and _check failures are reported in the answer
  *  structure, and only 0, ESRCH or (for _check) EAGAIN is
  *  returned: if no (appropriate) requests are done adns_check returns
@@ -446,7 +446,7 @@ int adns_init_logfn(adns_state *newstate_r, adns_initflags flags,
  *  is set later overrides any that is set earlier.
  *
  * Standard directives understood in resolv[-adns].conf:
- * 
+ *
  *  nameserver <address>
  *   Must be followed by the IP address of a nameserver.  Several
  *   nameservers may be specified, and they will be tried in the order
@@ -510,7 +510,7 @@ int adns_init_logfn(adns_state *newstate_r, adns_initflags flags,
  *   Changes the consistency checking frequency; this overrides the
  *   setting of adns_if_check_entex, adns_if_check_freq, or neither,
  *   in the flags passed to adns_init.
- * 
+ *
  * There are a number of environment variables which can modify the
  * behaviour of adns.  They take effect only if adns_init is used, and
  * the caller of adns_init can disable them using adns_if_noenv.  In
@@ -706,7 +706,7 @@ void adns_firsttimeout(adns_state ads,
 		       struct timeval now);
 /* Asks adns when it would first like the opportunity to time
  * something out.  now must be the current time, from gettimeofday.
- * 
+ *
  * If tv_mod points to 0 then tv_buf must be non-null, and
  * _firsttimeout will fill in *tv_buf with the time until the first
  * timeout, and make *tv_mod point to tv_buf.  If adns doesn't have
@@ -795,7 +795,7 @@ int adns_beforepoll(adns_state ads, struct pollfd *fds,
 /* Finds out which fd's adns is interested in, and when it would like
  * to be able to time things out.  This is in a form suitable for use
  * with poll(2).
- * 
+ *
  * On entry, usually fds should point to at least *nfds_io structs.
  * adns will fill up to that many structs will information for poll,
  * and record in *nfds_io how many structs it filled.  If it wants to
diff --git a/src/check.c b/src/check.c
index 41cdde5..bf60566 100644
--- a/src/check.c
+++ b/src/check.c
@@ -8,20 +8,20 @@
  *    Copyright (C) 1999-2000,2003,2006  Tony Finch
  *    Copyright (C) 1991 Massachusetts Institute of Technology
  *  (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)
  *  any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  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. 
+ *  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
 #include "internal.h"
@@ -76,14 +76,14 @@ static void checkc_notcpbuf(adns_state ads) {
 
 static void checkc_global(adns_state ads) {
   int i;
-  
+
   assert(ads->udpsocket >= 0);
 
   for (i=0; i<ads->nsortlist; i++)
     assert(!(ads->sortlist[i].base.s_addr & ~ads->sortlist[i].mask.s_addr));
 
   assert(ads->tcpserver >= 0 && ads->tcpserver < ads->nservers);
-  
+
   switch (ads->tcpstate) {
   case server_connecting:
     assert(ads->tcpsocket >= 0);
@@ -107,7 +107,7 @@ static void checkc_global(adns_state ads) {
 
 static void checkc_queue_udpw(adns_state ads) {
   adns_query qu;
-  
+
   DLIST_CHECK(ads->udpw, qu, , {
     assert(qu->state==query_tosend);
     assert(qu->retries <= UDPMAXRETRIES);
@@ -120,7 +120,7 @@ static void checkc_queue_udpw(adns_state ads) {
 
 static void checkc_queue_tcpw(adns_state ads) {
   adns_query qu;
-  
+
   DLIST_CHECK(ads->tcpw, qu, , {
     assert(qu->state==query_tcpw);
     assert(!qu->children.head && !qu->children.tail);
@@ -147,7 +147,7 @@ static void checkc_queue_childw(adns_state ads) {
 
 static void checkc_queue_output(adns_state ads) {
   adns_query qu;
-  
+
   DLIST_CHECK(ads->output, qu, , {
     assert(qu->state == query_done);
     assert(!qu->children.head && !qu->children.tail);
@@ -159,7 +159,7 @@ static void checkc_queue_output(adns_state ads) {
 
 void adns__consistency(adns_state ads, adns_query qu, consistency_checks cc) {
   adns_query search;
-  
+
   switch (cc) {
   case cc_user:
     break;
diff --git a/src/setup.c b/src/setup.c
index a9e3726..6ebe2a3 100644
--- a/src/setup.c
+++ b/src/setup.c
@@ -9,20 +9,20 @@
  *    Copyright (C) 1999-2000,2003,2006  Tony Finch
  *    Copyright (C) 1991 Massachusetts Institute of Technology
  *  (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)
  *  any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  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. 
+ *  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
 #include <stdlib.h>
@@ -51,14 +51,14 @@ static void readconfig(adns_state ads, const char *filename, int warnmissing);
 static void addserver(adns_state ads, struct in_addr addr) {
   int i;
   struct server *ss;
-  
+
   for (i=0; i<ads->nservers; i++) {
     if (ads->servers[i].addr.s_addr == addr.s_addr) {
       adns__debug(ads,-1,0,"duplicate nameserver %s ignored",inet_ntoa(addr));
       return;
     }
   }
-  
+
   if (ads->nservers>=MAXSERVERS) {
     adns__diag(ads,-1,0,"too many nameservers, ignoring %s",inet_ntoa(addr));
     return;
@@ -113,7 +113,7 @@ static int nextword(const char **bufp_io, const char **word_r, int *l_r) {
 static void ccf_nameserver(adns_state ads, const char *fn,
 			   int lno, const char *buf) {
   struct in_addr ia;
-  
+
   if (!adns__inet_aton(buf,&ia)) {
     configparseerr(ads,fn,lno,"invalid nameserver address `%s'",buf);
     return;
@@ -164,7 +164,7 @@ static void ccf_sortlist(adns_state ads, const char *fn,
   unsigned long initial, baselocal;
 
   if (!buf) return;
-  
+
   ads->nsortlist= 0;
   while (nextword(&buf,&word,&l)) {
     if (ads->nsortlist >= MAXSORTLIST) {
@@ -177,11 +177,11 @@ static void ccf_sortlist(adns_state ads, const char *fn,
       configparseerr(ads,fn,lno,"sortlist entry `%.*s' too long",l,word);
       continue;
     }
-    
+
     memcpy(tbuf,word,l); tbuf[l]= 0;
     slash= strchr(tbuf,'/');
     if (slash) *slash++= 0;
-    
+
     if (!adns__inet_aton(tbuf,&base)) {
       configparseerr(ads,fn,lno,"invalid address `%s' in sortlist",tbuf);
       continue;
@@ -343,7 +343,7 @@ static int gl_file(adns_state ads, getline_ctx *src_io, const char *filename,
   p= buf;
   buflen--;
   i= 0;
-    
+
   for (;;) { /* loop over chars */
     if (i == buflen) {
       adns__diag(ads,-1,0,"%s:%d: line too long, ignored",filename,lno);
@@ -395,7 +395,7 @@ static int gl_text(adns_state ads, getline_ctx *src_io, const char *filename,
     saveerr(ads,EINVAL);
     return -2;
   }
-    
+
   memcpy(buf,cp,l);
   buf[l]= 0;
   return l;
@@ -452,7 +452,7 @@ static const char *instrum_getenv(adns_state ads, const char *envvar) {
 
 static void readconfig(adns_state ads, const char *filename, int warnmissing) {
   getline_ctx gl_ctx;
-  
+
   gl_ctx.file= fopen(filename,"r");
   if (!gl_ctx.file) {
     if (errno == ENOENT) {
@@ -468,18 +468,18 @@ static void readconfig(adns_state ads, const char *filename, int warnmissing) {
   }
 
   readconfiggeneric(ads,filename,gl_file,gl_ctx);
-  
+
   fclose(gl_ctx.file);
 }
 
 static void readconfigtext(adns_state ads, const char *text,
 			   const char *showname) {
   getline_ctx gl_ctx;
-  
+
   gl_ctx.text= text;
   readconfiggeneric(ads,showname,gl_text,gl_ctx);
 }
-  
+
 static void readconfigenv(adns_state ads, const char *envvar) {
   const char *filename;
 
@@ -563,7 +563,7 @@ static int init_finish(adns_state ads) {
   struct in_addr ia;
   struct protoent *proto;
   int r;
-  
+
   if (!ads->nservers) {
     if (ads->logfn && ads->iflags & adns_if_debug)
       adns__lprintf(ads,"adns: no nameservers, using localhost\n");
@@ -577,7 +577,7 @@ static int init_finish(adns_state ads) {
 
   r= adns__setnonblock(ads,ads->udpsocket);
   if (r) { r= errno; goto x_closeudp; }
-  
+
   return 0;
 
  x_closeudp:
@@ -638,11 +638,11 @@ read_w32_init_files (adns_state ads) {
     }
   else {
     for(pip = &(network_info->DnsServerList); pip; pip = pip->Next) {
-      adns__debug (ads,-1,0,"network_info->DnsServer = `%s'", 
+      adns__debug (ads,-1,0,"network_info->DnsServer = `%s'",
                    pip->IpAddress.String);
       addr.s_addr = inet_addr(pip->IpAddress.String);
       if ((addr.s_addr != INADDR_ANY) && (addr.s_addr != INADDR_NONE))
-        addserver(ads, addr); 
+        addserver(ads, addr);
     }
   }
 }
@@ -654,10 +654,10 @@ static int init_files(adns_state *ads_r, adns_initflags flags,
   adns_state ads;
   const char *res_options, *adns_res_options;
   int r;
-  
+
   r= init_begin(&ads, flags, logfn, logfndata);
   if (r) return r;
-  
+
   res_options= instrum_getenv(ads,"RES_OPTIONS");
   adns_res_options= instrum_getenv(ads,"ADNS_RES_OPTIONS");
   ccf_options(ads,"RES_OPTIONS",-1,res_options);
@@ -766,7 +766,7 @@ void adns_forallqueries_begin(adns_state ads) {
     ads->childw.head ? ads->childw.head :
     ads->output.head;
 }
-  
+
 adns_query adns_forallqueries_next(adns_state ads, void **context_r) {
   adns_query qu, nqu;
 
diff --git a/src/types.c b/src/types.c
index 7845388..a18aedc 100644
--- a/src/types.c
+++ b/src/types.c
@@ -8,20 +8,20 @@
  *    Copyright (C) 1999-2000,2003,2006  Tony Finch
  *    Copyright (C) 1991 Massachusetts Institute of Technology
  *  (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)
  *  any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  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. 
+ *  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
 #include <stdlib.h>
@@ -100,17 +100,17 @@ static adns_status pap_qstring(const parseinfo *pai, int *cbyte_io, int max,
   if (cbyte >= max) return adns_s_invaliddata;
   GET_B(cbyte,l);
   if (cbyte+l > max) return adns_s_invaliddata;
-  
+
   str= adns__alloc_interim(pai->qu, l+1);
   if (!str) R_NOMEM;
-  
+
   str[l]= 0;
   memcpy(str,dgram+cbyte,l);
 
   *len_r= l;
   *str_r= str;
   *cbyte_io= cbyte+l;
-  
+
   return adns_s_ok;
 }
 
@@ -134,7 +134,7 @@ static adns_status csp_qstring(vbuf *vb, const char *dp, int len) {
     }
   }
   CSP_ADDSTR("\"");
-  
+
   return adns_s_ok;
 }
 
@@ -208,7 +208,7 @@ static adns_status pa_txt(const parseinfo *pai, int cbyte,
 
   te->i= -1;
   te->str= 0;
-  
+
   *rrp= table;
   return adns_s_ok;
 }
@@ -247,7 +247,7 @@ static adns_status cs_hinfo(vbuf *vb, const void *datap) {
 static adns_status pa_inaddr(const parseinfo *pai, int cbyte,
 			     int max, void *datap) {
   struct in_addr *storeto= datap;
-  
+
   if (max-cbyte != 4) return adns_s_invaliddata;
   memcpy(storeto, pai->dgram + cbyte, 4);
   return adns_s_ok;
@@ -256,7 +256,7 @@ static adns_status pa_inaddr(const parseinfo *pai, int cbyte,
 static int search_sortlist(adns_state ads, struct in_addr ad) {
   const struct sortlist *slp;
   int i;
-  
+
   for (i=0, slp=ads->sortlist;
        i<ads->nsortlist &&
 	 !((ad.s_addr & slp->mask.s_addr) == slp->base.s_addr);
@@ -266,7 +266,7 @@ static int search_sortlist(adns_state ads, struct in_addr ad) {
 
 static int dip_inaddr(adns_state ads, struct in_addr a, struct in_addr b) {
   int ai, bi;
-  
+
   if (!ads->nsortlist) return 0;
 
   ai= search_sortlist(ads,a);
@@ -318,7 +318,7 @@ static int div_addr(void *context, const void *datap_a, const void *datap_b) {
   const adns_state ads= context;
 
   return di_addr(ads, datap_a, datap_b);
-}		     
+}
 
 static adns_status csp_addr(vbuf *vb, const adns_rr_addr *rrp) {
   const char *ia;
@@ -353,7 +353,7 @@ static adns_status pap_domain(const parseinfo *pai, int *cbyte_io, int max,
 			      char **domain_r, parsedomain_flags flags) {
   adns_status st;
   char *dm;
-  
+
   st= adns__parse_domain(pai->qu->ads, pai->serv, pai->qu, &pai->qu->vb, flags,
 			 pai->dgram,pai->dglen, cbyte_io, max);
   if (st) return st;
@@ -364,7 +364,7 @@ static adns_status pap_domain(const parseinfo *pai, int *cbyte_io, int max,
 
   dm[pai->qu->vb.used]= 0;
   memcpy(dm,pai->qu->vb.buf,pai->qu->vb.used);
-  
+
   *domain_r= dm;
   return adns_s_ok;
 }
@@ -387,7 +387,7 @@ static adns_status pa_dom_raw(const parseinfo *pai, int cbyte,
 
   st= pap_domain(pai, &cbyte, max, rrp, pdf_quoteok);
   if (st) return st;
-  
+
   if (cbyte != max) return adns_s_invaliddata;
   return adns_s_ok;
 }
@@ -404,7 +404,7 @@ static adns_status pa_host_raw(const parseinfo *pai, int cbyte,
   st= pap_domain(pai, &cbyte, max, rrp,
 		 pai->qu->flags & adns_qf_quoteok_anshost ? pdf_quoteok : 0);
   if (st) return st;
-  
+
   if (cbyte != max) return adns_s_invaliddata;
   return adns_s_ok;
 }
@@ -419,7 +419,7 @@ static adns_status pap_findaddrs(const parseinfo *pai, adns_rr_hostaddr *ha,
   int type, class, rdlen, rdstart, ownermatched;
   unsigned long ttl;
   adns_status st;
-  
+
   for (rri=0, naddrs=-1; rri<count; rri++) {
     st= adns__findrr_anychk(pai->qu, pai->serv, pai->dgram,
 			    pai->dglen, cbyte_io,
@@ -510,10 +510,10 @@ static adns_status pap_hostaddr(const parseinfo *pai, int *cbyte_io,
   ctx.ext= 0;
   ctx.callback= icb_hostaddr;
   ctx.info.hostaddr= rrp;
-  
+
   nflags= adns_qf_quoteok_query;
   if (!(pai->qu->flags & adns_qf_cname_loose)) nflags |= adns_qf_cname_forbid;
-  
+
   st= adns__internal_submit(pai->ads, &nqu, adns__findtype(adns_r_addr),
 			    &pai->qu->vb, id, nflags, pai->now, &ctx);
   if (st) return st;
@@ -589,7 +589,7 @@ static adns_status csp_hostaddr(vbuf *vb, const adns_rr_hostaddr *rrp) {
 
   errstr= adns_strerror(rrp->astatus);
   st= csp_qstring(vb,errstr,strlen(errstr));  if (st) return st;
-  
+
   if (rrp->naddrs >= 0) {
     CSP_ADDSTR(" (");
     for (i=0; i<rrp->naddrs; i++) {
@@ -626,7 +626,7 @@ static adns_status pa_mx_raw(const parseinfo *pai, int cbyte,
   st= pap_domain(pai, &cbyte, max, &rrp->str,
 		 pai->qu->flags & adns_qf_quoteok_anshost ? pdf_quoteok : 0);
   if (st) return st;
-  
+
   if (cbyte != max) return adns_s_invaliddata;
   return adns_s_ok;
 }
@@ -655,7 +655,7 @@ static adns_status pa_mx(const parseinfo *pai, int cbyte,
   rrp->i= pref;
   st= pap_hostaddr(pai, &cbyte, max, &rrp->ha);
   if (st) return st;
-  
+
   if (cbyte != max) return adns_s_invaliddata;
   return adns_s_ok;
 }
@@ -739,7 +739,7 @@ static void icb_ptr(adns_query parent, adns_query child) {
 static adns_status pa_ptr(const parseinfo *pai, int dmstart,
 			  int max, void *datap) {
   static const char *const (expectdomain[])= { DNS_INADDR_ARPA };
-  
+
   char **rrp= datap;
   adns_status st;
   adns_rr_addr *ap;
@@ -781,7 +781,7 @@ static adns_status pa_ptr(const parseinfo *pai, int dmstart,
     }
     st= adns__findlabel_next(&fls,&lablen,0); assert(!st);
     if (lablen) return adns_s_querydomainwrong;
-    
+
     ap->len= sizeof(struct sockaddr_in);
     memset(&ap->addr,0,sizeof(ap->addr.inet));
     ap->addr.inet.sin_family= AF_INET;
@@ -845,7 +845,7 @@ static adns_status pa_hinfo(const parseinfo *pai, int cbyte,
   }
 
   if (cbyte != max) return adns_s_invaliddata;
-  
+
   return adns_s_ok;
 }
 
@@ -950,7 +950,7 @@ static adns_status cs_rp(vbuf *vb, const void *datap) {
   st= csp_domain(vb,rrp->array[1]);  if (st) return st;
 
   return adns_s_ok;
-}  
+}
 
 /*
  * _soa   (pa,mf,cs)
@@ -971,7 +971,7 @@ static adns_status pa_soa(const parseinfo *pai, int cbyte,
   if (st) return st;
 
   if (cbyte+20 != max) return adns_s_invaliddata;
-  
+
   for (i=0; i<5; i++) {
     GET_W(cbyte,msw);
     GET_W(cbyte,lsw);
@@ -993,7 +993,7 @@ static adns_status cs_soa(vbuf *vb, const void *datap) {
   char buf[20];
   int i;
   adns_status st;
-  
+
   st= csp_domain(vb,rrp->mname);  if (st) return st;
   CSP_ADDSTR(" ");
   st= csp_mailbox(vb,rrp->rname);  if (st) return st;
@@ -1047,7 +1047,7 @@ static adns_status pap_srv_begin(const parseinfo *pai, int *cbyte_io, int max,
 
   cbyte= *cbyte_io;
   if ((*cbyte_io += 6) > max) return adns_s_invaliddata;
-  
+
   rrp->priority= GET_W(cbyte, ti);
   rrp->weight=   GET_W(cbyte, ti);
   rrp->port=     GET_W(cbyte, ti);
@@ -1061,11 +1061,11 @@ static adns_status pa_srvraw(const parseinfo *pai, int cbyte,
 
   st= pap_srv_begin(pai,&cbyte,max,datap);
   if (st) return st;
-  
+
   st= pap_domain(pai, &cbyte, max, &rrp->host,
 		 pai->qu->flags & adns_qf_quoteok_anshost ? pdf_quoteok : 0);
   if (st) return st;
-  
+
   if (cbyte != max) return adns_s_invaliddata;
   return adns_s_ok;
 }
@@ -1111,7 +1111,7 @@ static adns_status csp_srv_begin(vbuf *vb, const adns_rr_srvha *rrp
 static adns_status cs_srvraw(vbuf *vb, const void *datap) {
   const adns_rr_srvraw *rrp= datap;
   adns_status st;
-  
+
   st= csp_srv_begin(vb,(const void*)rrp);  if (st) return st;
   return csp_domain(vb,rrp->host);
 }
@@ -1141,7 +1141,7 @@ static void postsort_srv(adns_state ads, void *array, int nrrs,
        workbegin < arrayend;
        workbegin= workend) {
     cpriority= (rr=(void*)workbegin)->priority;
-    
+
     for (workend= workbegin, totalweight= 0;
 	 workend < arrayend && (rr=(void*)workend)->priority == cpriority;
 	 workend += typei->rrsz) {
@@ -1157,7 +1157,7 @@ static void postsort_srv(adns_state ads, void *array, int nrrs,
     for (;
 	 workbegin + typei->rrsz < workend; /* don't bother if just one */
 	 workbegin += typei->rrsz) {
-      
+
       randval= nrand48(ads->rand48xsubi);
       randval %= (totalweight + 1);
         /* makes it into 0..totalweight inclusive; with 2^10 RRs,
@@ -1219,7 +1219,7 @@ static adns_status cs_opaque(vbuf *vb, const void *datap) {
 
   sprintf(buf,"\\# %d",rrp->len);
   CSP_ADDSTR(buf);
-  
+
   for (l= rrp->len, p= rrp->data;
        l>=4;
        l -= 4, p += 4) {
@@ -1234,7 +1234,7 @@ static adns_status cs_opaque(vbuf *vb, const void *datap) {
   }
   return adns_s_ok;
 }
-  
+
 /*
  * _flat   (mf)
  */

-----------------------------------------------------------------------

Summary of changes:
 .gitignore        |    1 +
 client/adh-main.c |   19 ++++---
 client/adh-opts.c |   34 ++++++------
 src/adns.h        |   61 +++++++++++----------
 src/check.c       |   35 ++++++++----
 src/internal.h    |    9 +++-
 src/setup.c       |   54 ++++++++++---------
 src/types.c       |  153 ++++++++++++++++++++++++++++++++++++++--------------
 8 files changed, 231 insertions(+), 135 deletions(-)


hooks/post-receive
-- 
ADNS migrated to autotools/libtool
http://git.gnupg.org




More information about the Gnupg-commits mailing list