chiark / gitweb /
src/event.c: Use `continue' in adns_processreadable (style)
[adns.git] / regress / hcommon.c
index cd3530914230cf182740d375cadf907ef4db8532..ebbef9400e4d361dc96c24cbabe2dcec6d54fd33 100644 (file)
@@ -1,6 +1,7 @@
 #include <string.h>
 #include <errno.h>
 #include <stdlib.h>
+#include <stdarg.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -28,10 +29,12 @@ const struct Terrno Terrnos[]= {
   { "ECONNRESET",                ECONNRESET                   },
   { "ECONNREFUSED",              ECONNREFUSED                 },
   { "EPIPE",                     EPIPE                        },
+  { "ENOTSOCK",                  ENOTSOCK                     },
   {  0,                          0                            }
 };
 static vbuf vbw;
 int Hgettimeofday(struct timeval *tv, struct timezone *tz) {
+  Tensurerecordfile();
   Tmust("gettimeofday","tz",!tz);
   *tv= currenttime;
   return 0;
@@ -64,9 +67,12 @@ void Qpoll(  const struct pollfd *fds , int nfds , int timeout       ) {
   Q_vb();
 }
 #endif
-void Qsocket(   int type       ) {
+void Qsocket(  int domain , int type   ) {
  vb.used= 0;
  Tvba("socket");
+  Tvbf(domain==AF_INET ? " domain=AF_INET" :
+         domain==AF_INET6 ? " domain=AF_INET6" :
+         " domain=AF_???"); 
   Tvbf(type==SOCK_STREAM ? " type=SOCK_STREAM" : " type=SOCK_DGRAM"); 
   Q_vb();
 }
@@ -90,6 +96,20 @@ void Qconnect(       int fd , const struct sockaddr *addr , int addrlen      ) {
        Tvba(" addr="); Tvbaddr(addr,addrlen); 
   Q_vb();
 }
+void Qbind(    int fd , const struct sockaddr *addr , int addrlen      ) {
+ vb.used= 0;
+ Tvba("bind");
+       Tvbf(" fd=%d",fd); 
+       Tvba(" addr="); Tvbaddr(addr,addrlen); 
+  Q_vb();
+}
+void Qlisten(  int fd , int backlog    ) {
+ vb.used= 0;
+ Tvba("listen");
+       Tvbf(" fd=%d",fd); 
+       Tvbf(" backlog=%d",backlog); 
+  Q_vb();
+}
 void Qclose(   int fd  ) {
  vb.used= 0;
  Tvba("close");
@@ -109,7 +129,6 @@ void Qrecvfrom(     int fd , int buflen , int addrlen       ) {
  Tvba("recvfrom");
        Tvbf(" fd=%d",fd); 
        Tvbf(" buflen=%lu",(unsigned long)buflen); 
-       Tvbf(" *addrlen=%d",addrlen); 
   Q_vb();
 }
 void Qread(    int fd , size_t buflen  ) {
@@ -127,10 +146,12 @@ void Qwrite(      int fd , const void *buf , size_t len   ) {
   Q_vb();
 }
 void Tvbaddr(const struct sockaddr *addr, int len) {
-  const struct sockaddr_in *ai= (const struct sockaddr_in*)addr;
-  assert(len==sizeof(struct sockaddr_in));
-  assert(ai->sin_family==AF_INET);
-  Tvbf("%s:%u",inet_ntoa(ai->sin_addr),htons(ai->sin_port));
+  char buf[ADNS_ADDR2TEXT_BUFLEN];
+  int err, port;
+  int sz= sizeof(buf);
+  err= adns_addr2text(addr, 0, buf,&sz, &port);
+  assert(!err);
+  Tvbf(strchr(buf, ':') ? "[%s]:%d" : "%s:%d", buf,port);
 }
 void Tvbbytes(const void *buf, int len) {
   const byte *bp;
@@ -272,9 +293,12 @@ void Hexit(int rv) {
   if (mallocedlist.head) {
     fprintf(stderr,"adns test harness: memory leaked:");
     for (loopnode=mallocedlist.head; loopnode; loopnode=loopnode->next)
-      fprintf(stderr," %lu(%lu)",loopnode->count,(unsigned long)loopnode->sz);
+      fprintf(stderr," %lu",loopnode->count);
     putc('\n',stderr);
     if (ferror(stderr)) exit(-1);
   }
   exit(rv);
 }
+pid_t Hgetpid(void) {
+  return 2264; /* just some number */
+}