X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=regress%2Fhrecord.c.m4;h=d6bb60bef81a73f97a906c76c2bce1a4130ff568;hb=1afaf3f33bc9d7ce704c91485c6e4efd83f4c1f3;hp=e383ac5cbdd3fb8c89d5a4b95a5c3c571ed7044f;hpb=a719a4bedec2bc512b7f95f7446e02f6662ebbc7;p=adns.git diff --git a/regress/hrecord.c.m4 b/regress/hrecord.c.m4 index e383ac5..d6bb60b 100644 --- a/regress/hrecord.c.m4 +++ b/regress/hrecord.c.m4 @@ -2,7 +2,11 @@ m4_dnl hrecord.c.m4 m4_dnl (part of complex test harness, not of the library) m4_dnl - recording routines -m4_dnl This file is part of adns, which is Copyright (C) 1997-1999 Ian Jackson +m4_dnl This file is part of adns, which is +m4_dnl Copyright (C) 1997-2000,2003,2006 Ian Jackson +m4_dnl Copyright (C) 1999-2000,2003,2006 Tony Finch +m4_dnl Copyright (C) 1991 Massachusetts Institute of Technology +m4_dnl (See the file INSTALL for full details.) m4_dnl m4_dnl This program is free software; you can redistribute it and/or modify m4_dnl it under the terms of the GNU General Public License as published by @@ -22,19 +26,25 @@ m4_include(hmacros.i4) #include #include -#include #include #include +#include +#include +#include + #include "harness.h" static FILE *Toutputfile; +void Tshutdown(void) { +} + static void R_recordtime(void) { int r; struct timeval tv, tvrel; - Tensureoutputfile(); + Tensurerecordfile(); r= gettimeofday(&tv,0); if (r) Tfailed("gettimeofday syscallbegin"); tvrel.tv_sec= tv.tv_sec - currenttime.tv_sec; tvrel.tv_usec= tv.tv_usec - currenttime.tv_usec; @@ -43,7 +53,7 @@ static void R_recordtime(void) { currenttime= tv; } -void Tensureoutputfile(void) { +void Tensurerecordfile(void) { const char *fdstr; int fd, r; @@ -63,7 +73,7 @@ void Tensureoutputfile(void) { void Q_vb(void) { if (!adns__vbuf_append(&vb,"",1)) Tnomem(); - Tensureoutputfile(); + Tensurerecordfile(); if (fprintf(Toutputfile," %s\n",vb.buf) == EOF) Toutputerr(); if (fflush(Toutputfile)) Toutputerr(); } @@ -104,10 +114,23 @@ int H$1(hm_args_massage($3,void)) { if (r==-1) { Tvberrno(e); goto x_error; } Tmust("$1","return",r<=$'`1); Tvba("OK");') + m4_define(`hm_rv_fcntl',` + if (r==-1) { Tvberrno(e); goto x_error; } + if (cmd == F_GETFL) { + Tvbf(r & O_NONBLOCK ? "O_NONBLOCK|..." : "~O_NONBLOCK&..."); + } else { + if (cmd == F_SETFL) { + Tmust("$1","return",!r); + } else { + Tmust("cmd","F_GETFL/F_SETFL",0); + } + Tvba("OK"); + }') $2 hm_create_nothing m4_define(`hm_arg_fdset_io',`Tvba(" $'`1="); Tvbfdset($'`2,$'`1);') + m4_define(`hm_arg_pollfds_io',`Tvba(" $'`1="); Tvbpollfds($'`1,$'`2);') m4_define(`hm_arg_addr_out',`Tvba(" $'`1="); Tvbaddr($'`1,*$'`2);') $3 @@ -119,6 +142,7 @@ int H$1(hm_args_massage($3,void)) { m4_define(`hm_rv_fd',`x_error:') m4_define(`hm_rv_succfail',`x_error:') m4_define(`hm_rv_len',`x_error:') + m4_define(`hm_rv_fcntl',`x_error:') m4_define(`hm_rv_must',`') $2 @@ -129,4 +153,6 @@ int H$1(hm_args_massage($3,void)) { } ') +m4_define(`hm_specsyscall', `') + m4_include(`hsyscalls.i4')