diff options
Diffstat (limited to 'cmd/statrep/clock.ha')
| -rw-r--r-- | cmd/statrep/clock.ha | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/cmd/statrep/clock.ha b/cmd/statrep/clock.ha new file mode 100644 index 0000000..f1e65fb --- /dev/null +++ b/cmd/statrep/clock.ha @@ -0,0 +1,46 @@ +use time::date; +use memio; +use strings; +use encoding::utf8; +use io; +use ev; + +type clock = struct { + section: section, + value: str, +}; + +fn buildclock() (clock | io::error | utf8::invalid) = { + const d = date::now(); + let s = memio::dynamic(); + defer io::close(&s)!; + date::format(&s, "%A %F %T", &d)?; + const val = strings::dup(memio::string(&s)?); + return clock { + section = section { + label = "clock: ", + }, + value = val, + }; +}; + +fn updateclock(clock: *clock) (void | io::error | utf8::invalid) = { + const d = date::now(); + let s = memio::dynamic(); + defer io::close(&s)!; + date::format(&s, "%A %F %T", &d)?; + const val = strings::dup(memio::string(&s)?); + free(clock.value); + clock.value = val; +}; + +fn finishclock(clock: *clock) void = { + free(clock.value); +}; + +fn clocktimerf(file: *ev::file) void = { + let server = ev::getuser(file): *server; + updateclock(&server.status.clock)!; + printstatus(server.status); +}; + |
