#include "substdio.h"
#include "strerr.h"
#include "subfd.h"
#include "getln.h"
#include "mess822.h"
#include "leapsecs.h"
#include "caltime.h"
#include "tai.h"
#define FATAL "parsedate: fatal: "
void nomem()
{
strerr_die2x(111,FATAL,"out of memory");
}
stralloc line = {0};
int match;
mess822_time t;
struct tai sec;
void main()
{
int i;
int j;
if (leapsecs_init() == -1)
strerr_die2sys(111,FATAL,"unable to init leapsecs: ");
for (;;) {
if (getln(subfdinsmall,&line,&match,'\n') == -1)
strerr_die2sys(111,FATAL,"unable to read input: ");
if (!line.len) break;
if (match) --line.len;
for (i = 0;i < line.len;++i)
if (line.s[i] == 0)
line.s[i] = '\n';
if (!stralloc_0(&line)) nomem();
t.known = 0;
if (!mess822_when(&t,line.s)) nomem();
if (t.known) {
if (!stralloc_ready(&line,caltime_fmt((char *) 0,&t.ct))) nomem();
substdio_put(subfdoutsmall,line.s,caltime_fmt(line.s,&t.ct));
if (t.known == 1)
substdio_put(subfdoutsmall,"?",1);
substdio_put(subfdoutsmall,"\t",1);
caltime_tai(&t.ct,&sec);
caltime_utc(&t.ct,&sec,(int *) 0,(int *) 0);
if (!stralloc_ready(&line,caltime_fmt((char *) 0,&t.ct))) nomem();
substdio_put(subfdoutsmall,line.s,caltime_fmt(line.s,&t.ct));
}
substdio_puts(subfdoutsmall,"\n");
if (!match) break;
}
substdio_flush(subfdoutsmall);
_exit(0);
}
syntax highlighted by Code2HTML, v. 0.9.1