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); };