From b230946668e575f6290cf3f29afce63f8734402a Mon Sep 17 00:00:00 2001 From: Julian Hurst Date: Fri, 10 Oct 2025 19:36:27 +0200 Subject: Changes for new hare version (0.25.2) --- distamp.ha | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'distamp.ha') diff --git a/distamp.ha b/distamp.ha index 7e44522..ada63b1 100644 --- a/distamp.ha +++ b/distamp.ha @@ -46,12 +46,22 @@ export fn main() void = { printdistamp(i); return; case let e: date::parsefail => - let s = strings::concat(date::strerror(e), "\n", "Date format must be 'year-month-day hour:minute:second'"); + let s = strings::concat(date::strerror(e), "\n", "Date format must be 'year-month-day hour:minute:second'")!; defer free(s); fmt::errorln(s)!; return; - case let e: date::error => + case let e: date::insufficient => fmt::fatal(date::strerror(e)); + case let e: date::invalid => + fmt::fatal(date::strerror(e)); + case let e: date::zfunresolved => + fmt::fatal(date::strerror(e)); + case let e: io::error => + fmt::fatal(io::strerror(e)); + case let e: utf8::invalid => + fmt::fatal(utf8::strerror(e)); + case nomem => + fmt::fatal("No memory left"); }; case 'w' => weeks = match (toweeks(opt.1)) { @@ -93,14 +103,14 @@ export fn main() void = { li = time::add(li, days); li = time::add(li, weeks); - printdistamp(time::unix(li)); + printdistamp(li.sec); }; fn printdistamp(i: i64) void = { fmt::printfln("", i)!; }; -fn abs(conf: config, s: str) (i64 | date::error | io::error | utf8::invalid) = { +fn abs(conf: config, s: str) (i64 | date::invalid | date::insufficient | date::zfunresolved | date::parsefail | io::error | utf8::invalid | nomem) = { let v = date::newvirtual(); v.vloc = conf.tz; v.zoff = date::zflag::LAP_EARLY | date::zflag::GAP_END; @@ -116,16 +126,16 @@ fn abs(conf: config, s: str) (i64 | date::error | io::error | utf8::invalid) = { void; }; v.nanosecond = 0; - let d = date::realize(v, chrono::LOCAL)?; + let d = date::realize(v, date::LOCAL)?; //date::format(os::stderr, "%Y-%m-%d %T %L", &d)!; - return time::unix(*(&d: *time::instant)); + return (&d: *time::instant).sec; }; fn parsemainargs(args: []str) (time::instant | parseerror) = { return if (len(args) == 1) { let timestr = args[0]; let i = time::now(time::clock::REALTIME); - let spl = strings::split(timestr, ":"); + let spl = strings::split(timestr, ":")!; defer free(spl); yield if (len(spl) > 2) { -- cgit v1.2.3