aboutsummaryrefslogtreecommitdiff
path: root/distamp.ha
diff options
context:
space:
mode:
Diffstat (limited to 'distamp.ha')
-rw-r--r--distamp.ha24
1 files changed, 17 insertions, 7 deletions
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("<t:{}:R>", 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) {