ref: babf901b4a508c3ec5d1f89655f10377bbdf9637
dir: /appl/cmd/timestamp.b/
implement Timestamp;
include "sys.m";
sys: Sys;
include "draw.m";
include "bufio.m";
bufio: Bufio;
Iobuf: import bufio;
Timestamp: module {
init: fn(nil: ref Draw->Context, argv: list of string);
};
timefd: ref Sys->FD;
starttime: big;
init(nil: ref Draw->Context, argv: list of string)
{
sys = load Sys Sys->PATH;
bufio = load Bufio Bufio->PATH;
note: string;
if(len argv > 1)
note = hd tl argv + " ";
timefd = sys->open("/dev/time", Sys->OREAD);
starttime = now();
sys->print("%.10bd %sstart %bd\n", now(), note, starttime);
iob := bufio->fopen(sys->fildes(0), Sys->OREAD);
while((s := iob.gets('\n')) != nil)
sys->print("%.10bd %s%s", now(), note, s);
}
now(): big
{
buf := array[24] of byte;
n := sys->pread(timefd, buf, len buf, big 0);
if(n <= 0)
return big 0;
return big string buf[0:n] / big 1000 - starttime;
}