};
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==PF_INET ? " domain=PF_INET" :
+ domain==PF_INET6 ? " domain=PF_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;
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 */
+}