chiark / gitweb /
Compiles and links.
authorian <ian>
Sun, 8 Nov 1998 16:29:54 +0000 (16:29 +0000)
committerian <ian>
Sun, 8 Nov 1998 16:29:54 +0000 (16:29 +0000)
src/Makefile
src/Makefile.in
src/general.c
src/query.c
src/types.c

index 4096d8466aa4a8618e1dd9cd49817aa56dd02705..59ccf547b39e6534af4e5381a4f0fdcc8cdc5348 100644 (file)
@@ -21,7 +21,7 @@ WARNS=        -Wall -Wmissing-prototypes -Wwrite-strings -Wstrict-prototypes \
        -Wcast-qual -Wpointer-arith
 WERROR=-Werror
 
-LIBOBJS=       event.o query.o setup.o transmit.o general.o reply.o parse.o
+LIBOBJS=       event.o query.o setup.o transmit.o general.o reply.o parse.o types.o
 ALLOBJS=       $(LIBOBJS) dtest.o
 
 all:           dtest
index 4096d8466aa4a8618e1dd9cd49817aa56dd02705..59ccf547b39e6534af4e5381a4f0fdcc8cdc5348 100644 (file)
@@ -21,7 +21,7 @@ WARNS=        -Wall -Wmissing-prototypes -Wwrite-strings -Wstrict-prototypes \
        -Wcast-qual -Wpointer-arith
 WERROR=-Werror
 
-LIBOBJS=       event.o query.o setup.o transmit.o general.o reply.o parse.o
+LIBOBJS=       event.o query.o setup.o transmit.o general.o reply.o parse.o types.o
 ALLOBJS=       $(LIBOBJS) dtest.o
 
 all:           dtest
index 9db4bb4cbc7b9881755c97694d9d9bdc71236fa4..09b63e68db84590aacbed3080b81d312c993c820 100644 (file)
@@ -123,6 +123,12 @@ int adns__vbuf_append(vbuf *vb, const byte *data, int len) {
   return 1;
 }
 
+int adns__vbuf_appendstr(vbuf *vb, const char *data) {
+  int l;
+  l= strlen(data)+1;
+  return adns__vbuf_append(vb,data,l);
+}
+
 void adns__vbuf_free(vbuf *vb) {
   free(vb->buf);
   adns__vbuf_init(vb);
index 7c977bb5a09c071335233ef5088f82b6932074c5..1d4dc5fd94df3753d7e9107a5630763482e6bf44 100644 (file)
@@ -158,23 +158,31 @@ void adns_cancel(adns_query query) {
   abort(); /* fixme */
 }
 
-void *adns__alloc_interim(adns_query qu, size_t sz) {
+static void *alloc_common(adns_query qu, size_t sz) {
   allocnode *an;
 
   if (!sz) return qu; /* Any old pointer will do */
   assert(!qu->final_allocspace);
-  sz= MEM_ROUND(sz);
   an= malloc(MEM_ROUND(MEM_ROUND(sizeof(*an)) + sz));
   if (!an) {
     adns__query_fail(qu,adns_s_nolocalmem);
     return 0;
   }
-  qu->interim_allocd += sz;
   an->next= qu->allocations;
   qu->allocations= an;
   return (byte*)an + MEM_ROUND(sizeof(*an));
 }
 
+void *adns__alloc_interim(adns_query qu, size_t sz) {
+  sz= MEM_ROUND(sz);
+  qu->interim_allocd += sz;
+  return alloc_common(qu,sz);
+}
+
+void *adns__alloc_mine(adns_query qu, size_t sz) {
+  return alloc_common(qu,MEM_ROUND(sz));
+}
+
 void *adns__alloc_final(adns_query qu, size_t sz) {
   /* When we're in the _final stage, we _subtract_ from interim_alloc'd
    * each allocation, and use final_allocspace to point to the next free
index 45741fa36cee820080a584cfa1bac145194738fa..5219ff5c887d6a72e3e28f8b21334ad22bbae1e2 100644 (file)
@@ -22,7 +22,7 @@
 
 #include "internal.h"
 
-static adns_status rp_inaddr(adns_state ads, adns_query qu, int serv,
+static adns_status rp_inaddr(adns_query qu, int serv,
                             const byte *dgram, int dglen, int cbyte, int max,
                             void *store_r) {
   struct in_addr *dr= store_r;
@@ -32,10 +32,10 @@ static adns_status rp_inaddr(adns_state ads, adns_query qu, int serv,
   return adns_s_ok;
 }
 
-static adns_status rmf_null(adns_state ads, adns_query qu, void *data) { }
+static void rmf_null(adns_query qu, void *data) { }
 
-#define TYPE_SF(size,func,free)    size, rp_#func, rmf_#free
-#define TYPE_SN(size,func)         size, rp_#func, rmf_null
+#define TYPE_SF(size,func,free)    size, rp_##func, rmf_##free
+#define TYPE_SN(size,func)         size, rp_##func, rmf_null
 #define TYPESZ_M(member)           (sizeof(((adns_answer*)0)->rrs.member))
 #define TYPE_MF(member,parse)      TYPE_SF(TYPESZ_M(member),parse,member)
 #define TYPE_MN(member,parse)      TYPE_SN(TYPESZ_M(member),parse)
@@ -72,8 +72,8 @@ static const typeinfo typeinfos[] = {
 #endif
 };
 
-const typeinfo adns__findtype(adns_rrtype type) {
-  const typeinfo *begin, *end;
+const typeinfo *adns__findtype(adns_rrtype type) {
+  const typeinfo *begin, *end, *mid;
 
   begin= typeinfos;  end= typeinfos+(sizeof(typeinfos)/sizeof(typeinfo));