#include <sys/types.h>
#include <sys/time.h>
#include "substdio.h"
#include "fmt.h"
#include "readwrite.h"
#include "exit.h"

int mywrite(fd,buf,len)
int fd;
char *buf;
int len;
{
  int w;
  w = write(fd,buf,len);
  if (w == -1) _exit(111);
  return w;
}

char outbuf[1024];
substdio ssout = SUBSTDIO_FDBUF(mywrite,1,outbuf,sizeof outbuf);

int myread(fd,buf,len) int fd; char *buf; int len;
{
  substdio_flush(&ssout);
  return read(fd,buf,len);
}

char inbuf[1024];
substdio ssin = SUBSTDIO_FDBUF(myread,0,inbuf,sizeof inbuf);

char num[FMT_ULONG];

void main()
{
  struct timeval tv;
  char ch;

  for (;;) {
    if (substdio_get(&ssin,&ch,1) != 1) _exit(0);

    gettimeofday(&tv,(struct timezone *) 0);
    substdio_put(&ssout,num,fmt_ulong(num,(unsigned long) tv.tv_sec));
    substdio_put(&ssout,".",1);
    substdio_put(&ssout,num,fmt_uint0(num,(unsigned int) tv.tv_usec,6));
    substdio_put(&ssout," ",1);

    for (;;) {
      substdio_BPUTC(&ssout,ch);
      if (ch == '\n') break;
      if (substdio_get(&ssin,&ch,1) != 1) _exit(0);
    }
  }
}


syntax highlighted by Code2HTML, v. 0.9.1