MODULE UpTime;
IMPORT
KernelLog, Streams, Commands, Dates;
VAR
startTime : Dates.DateTime;
PROCEDURE Get*(VAR days, hours, minutes, seconds : LONGINT);
BEGIN
Dates.TimeDifference(startTime, Dates.Now(), days, hours, minutes, seconds);
END Get;
PROCEDURE ToStream*(stream : Streams.Writer);
VAR days, hours, minutes, seconds : LONGINT;
BEGIN
ASSERT(stream # NIL);
Get(days, hours, minutes, seconds);
stream.Int(days, 0); stream.String(" days ");
IF (hours < 10) THEN stream.Char("0"); END;
stream.Int(hours, 0); stream.Char(":");
IF (minutes < 10) THEN stream.Char("0"); END;
stream.Int(minutes, 0); stream.Char(":");
IF (seconds < 10) THEN stream.Char("0"); END;
stream.Int(seconds, 0);
END ToStream;
PROCEDURE GetStartTime*() : Dates.DateTime;
BEGIN
RETURN startTime;
END GetStartTime;
PROCEDURE Show*(context : Commands.Context);
BEGIN
context.out.String("Uptime: "); ToStream(context.out); context.out.Ln;
END Show;
PROCEDURE Install*;
BEGIN
KernelLog.String("Uptime monitor started."); KernelLog.Ln;
END Install;
BEGIN
startTime := Dates.Now();
END UpTime.
SystemTools.Free UpTime ~
UpTime.Show ~