X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=regress%2Fhplayback.c.m4;h=dd98f0ec0b8bf1df4172286ebecfd07232318614;hb=fc440c64836370db9d8cb1a25f09c9df0786f865;hp=695b9a23ad48cba92177154fcfaf5d8152460d00;hpb=c31552f2d8bed3f5cefea9444a0506f9439e42cd;p=adns.git diff --git a/regress/hplayback.c.m4 b/regress/hplayback.c.m4 index 695b9a2..dd98f0e 100644 --- a/regress/hplayback.c.m4 +++ b/regress/hplayback.c.m4 @@ -45,7 +45,7 @@ m4_include(hmacros.i4) static FILE *Tinputfile, *Tfuzzrawfile, *Treportfile; static vbuf vb2; -static void Tensurereportfile(void) { +static void Tensure_reportfile(void) { const char *fdstr; int fd; @@ -56,7 +56,7 @@ static void Tensurereportfile(void) { Treportfile= fdopen(fd,"a"); if (!Treportfile) Tfailed("fdopen ADNS_TEST_REPORT_FD"); } -static void Tensurefuzzrawfile(void) { +static void Tensure_fuzzrawfile(void) { static int done; if (done) return; @@ -105,11 +105,14 @@ void T_gettimeofday_hook(void) { FR_WRITE(delta); } -void Tensurerecordfile(void) { +void Tensuresetup(void) { int fd; int chars; unsigned long sec, usec; + Tensure_reportfile(); + Tensure_fuzzrawfile(); + if (Tinputfile) return; Tinputfile= stdin; fd = Ttestinputfd(); @@ -254,12 +257,15 @@ static void Ppollfds(struct pollfd *fds, int nfds) { if (vb2.buf[vb2.used++] != hm_squote[hm_squote) Psyntax("pollfds start not ["); for (i=0; ifd= strtoul(vb2.buf+vb2.used,&ep,10); + int gotfd= strtoul(vb2.buf+vb2.used,&ep,10); + if (gotfd != fds->fd) Psyntax("poll fds[].fd changed"); vb2.used= ep - (char*)vb2.buf; Pstring(", events=",", events= in pollfds"); - fds->events= Ppollfdevents(); + int gotevents= Ppollfdevents(); + if (gotevents != fds->events) Psyntax("poll fds[].events changed"); Pstring(", revents=",", revents= in pollfds"); fds->revents= Ppollfdevents(); + if (gotevents) FR_WRITE(fds->revents); Pstring("}","} in pollfds"); Pstring(comma,"separator in pollfds"); comma= ", "; @@ -291,6 +297,14 @@ static void Paddr(struct sockaddr *addr, int *lenr) { if (*ep && *ep != ' ') Psyntax("invalid port (bad syntax)"); if (ul >= 65536) Psyntax("port too large"); + if (Tfuzzrawfile) { + int tl = strlen(p); + FR_WRITE(tl); + FR_write(p,tl); + uint16_t port16 = ul; + FR_WRITE(port16); + } + a.len= sizeof(a.addr); err= adns_text2addr(p, (int)ul, 0, &a.addr.sa,&a.len); if (err) Psyntax("invalid address"); @@ -330,7 +344,7 @@ static int Pbytes(byte *buf, int maxlen) { void Q_vb(void) { const char *nl; - Tensurerecordfile(); + Tensuresetup(); if (!adns__vbuf_ensure(&vb2,vb.used+2)) Tnomem(); fread(vb2.buf,1,vb.used+2,Tinputfile); if (feof(Tinputfile)) { @@ -348,7 +362,6 @@ void Q_vb(void) { vb.used,vb.buf, vb.used,vb2.buf+1); exit(1); } - Tensurereportfile(); nl= memchr(vb.buf,'\n',vb.used); fprintf(Treportfile," %.*s\n", (int)(nl ? nl - (const char*)vb.buf : vb.used), vb.buf); } @@ -375,8 +388,7 @@ int H$1(hm_args_massage($3,void)) { if (!adns__vbuf_ensure(&vb2,1000)) Tnomem(); fgets(vb2.buf,vb2.avail,Tinputfile); Pcheckinput(); - Tensurereportfile(); - Tensurefuzzrawfile(); + Tensuresetup(); fprintf(Treportfile,"%s",vb2.buf); amtread= strlen(vb2.buf); if (amtread<=0 || vb2.buf[--amtread]!=hm_squote\nhm_squote)