xref: /inferno-os/appl/cmd/timestamp.b (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1*37da2899SCharles.Forsythimplement Timestamp;
2*37da2899SCharles.Forsythinclude "sys.m";
3*37da2899SCharles.Forsyth	sys: Sys;
4*37da2899SCharles.Forsythinclude "draw.m";
5*37da2899SCharles.Forsythinclude "bufio.m";
6*37da2899SCharles.Forsyth	bufio: Bufio;
7*37da2899SCharles.Forsyth	Iobuf: import bufio;
8*37da2899SCharles.Forsyth
9*37da2899SCharles.ForsythTimestamp: module {
10*37da2899SCharles.Forsyth	init: fn(nil: ref Draw->Context, argv: list of string);
11*37da2899SCharles.Forsyth};
12*37da2899SCharles.Forsyth
13*37da2899SCharles.Forsythtimefd: ref Sys->FD;
14*37da2899SCharles.Forsythstarttime: big;
15*37da2899SCharles.Forsyth
16*37da2899SCharles.Forsythinit(nil: ref Draw->Context, argv: list of string)
17*37da2899SCharles.Forsyth{
18*37da2899SCharles.Forsyth	sys = load Sys Sys->PATH;
19*37da2899SCharles.Forsyth	bufio = load Bufio Bufio->PATH;
20*37da2899SCharles.Forsyth
21*37da2899SCharles.Forsyth	note: string;
22*37da2899SCharles.Forsyth	if(len argv > 1)
23*37da2899SCharles.Forsyth		note = hd tl argv + " ";
24*37da2899SCharles.Forsyth
25*37da2899SCharles.Forsyth	timefd = sys->open("/dev/time", Sys->OREAD);
26*37da2899SCharles.Forsyth	starttime = now();
27*37da2899SCharles.Forsyth
28*37da2899SCharles.Forsyth	sys->print("%.10bd %sstart %bd\n", now(), note, starttime);
29*37da2899SCharles.Forsyth
30*37da2899SCharles.Forsyth	iob := bufio->fopen(sys->fildes(0), Sys->OREAD);
31*37da2899SCharles.Forsyth	while((s := iob.gets('\n')) != nil)
32*37da2899SCharles.Forsyth		sys->print("%.10bd %s%s", now(), note, s);
33*37da2899SCharles.Forsyth}
34*37da2899SCharles.Forsyth
35*37da2899SCharles.Forsythnow(): big
36*37da2899SCharles.Forsyth{
37*37da2899SCharles.Forsyth	buf := array[24] of byte;
38*37da2899SCharles.Forsyth	n := sys->pread(timefd, buf, len buf, big 0);
39*37da2899SCharles.Forsyth	if(n <= 0)
40*37da2899SCharles.Forsyth		return big 0;
41*37da2899SCharles.Forsyth	return big string buf[0:n] / big 1000 - starttime;
42*37da2899SCharles.Forsyth}
43