};
static vbuf vbw;
int Hgettimeofday(struct timeval *tv, struct timezone *tz) {
+ Tensurerecordfile();
Tmust("gettimeofday","tz",!tz);
*tv= currenttime;
return 0;
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();
}
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");
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 ) {
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;
void Tvbfdset(int max, const fd_set *fds) {
int i;
const char *comma= "";
+ if (!fds) {
+ Tvba("null");
+ return;
+ }
Tvba("[");
for (i=0; i<max; i++) {
if (!FD_ISSET(i,fds)) continue;
size_t osz;
if (op) { oldnode= (void*)((char*)op - MALLOCHSZ); osz= oldnode->sz; } else { osz= 0; }
np= Hmalloc(nsz);
- memcpy(np,op, osz>nsz ? nsz : osz);
+ if (osz) memcpy(np,op, osz>nsz ? nsz : osz);
Hfree(op);
return np;
}
-void Hexit(int rv) {
+void Texit(int rv) {
struct malloced *loopnode;
Tshutdown();
adns__vbuf_free(&vb);
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);
}
+void Hexit(int rv) {
+ vb.used= 0;
+ Tvbf("exit %d", rv);
+ Q_vb();
+ Texit(0);
+}
+pid_t Hgetpid(void) {
+ return 2264; /* just some number */
+}