diff options
| -rw-r--r-- | imp.ha | 44 |
1 files changed, 24 insertions, 20 deletions
@@ -63,13 +63,13 @@ export fn main() void = { case 'l' => list = true; case 'g' => - let spl = strings::split(opt.1, ","); + let spl = strings::split(opt.1, ",")!; defer free(spl); - append(accfilter.groups, spl...); + append(accfilter.groups, spl...)!; case 'm' => - let spl = strings::split(opt.1, ","); + let spl = strings::split(opt.1, ",")!; defer free(spl); - append(accfilter.urls, spl...); + append(accfilter.urls, spl...)!; case 'n' => accfilter.notes = opt.1; case 'f' => @@ -80,7 +80,7 @@ export fn main() void = { for (let i = 0z; i < len(cmd.args); i += 1) { - append(accfilter.accnames, cmd.args[i]); + append(accfilter.accnames, cmd.args[i])!; }; if (verbose) { @@ -98,6 +98,8 @@ export fn main() void = { fmt::fatal(os::exec::strerror(e)); case let e: io::error => fmt::fatal(io::strerror(e)); + case nomem => + fmt::fatal("Insufficient memory"); }; defer free(ini_data); @@ -106,6 +108,8 @@ export fn main() void = { yield e; case let e: format::ini::error => fmt::fatal(format::ini::strerror(e)); + case nomem => + fmt::fatal("Insufficient memory"); }; accounts = accs_filter(accounts, accfilter); @@ -143,17 +147,17 @@ fn printfilter(f: filter) void = { fmt::fprintln(os::stderr, "printing filter:")!; fmt::fprint(os::stderr, "accs: ")!; - let accnames = strings::join(", ", f.accnames...); + let accnames = strings::join(", ", f.accnames...)!; defer free(accnames); fmt::fprintln(os::stderr, accnames)!; fmt::fprint(os::stderr, "groups: ")!; - let groups = strings::join(", ", f.groups...); + let groups = strings::join(", ", f.groups...)!; defer free(groups); fmt::fprintln(os::stderr, groups)!; fmt::fprint(os::stderr, "urls: ")!; - let urls = strings::join(", ", f.urls...); + let urls = strings::join(", ", f.urls...)!; defer free(urls); fmt::fprintln(os::stderr, urls)!; @@ -202,7 +206,7 @@ fn accs_filter(accounts: []account, accfilter: filter) []account = { for (let i = 0z; i < len(accounts); i += 1) { let acc = accounts[i]; if (isfiltered(acc, accfilter)) { - append(resaccs, acc); + append(resaccs, acc)!; }; }; return resaccs; @@ -230,7 +234,7 @@ fn account_free(acc: account) void = { free(acc.group); }; -fn parse(data: []u8) ([]account | format::ini::error) = { +fn parse(data: []u8) ([]account | format::ini::error | nomem) = { let scanner = format::ini::scan(&memio::fixed(data)); defer format::ini::finish(&scanner); @@ -246,22 +250,22 @@ fn parse(data: []u8) ([]account | format::ini::error) = { }; match (lookupaccount(accounts, entry.0)) { case void => - let name = strings::dup(entry.0); - let spl = strings::split(name, "/"); + let name = strings::dup(entry.0)?; + let spl = strings::split(name, "/")?; defer free(spl); let group = ""; if (len(spl) > 1) { - group = strings::join("/", spl[..len(spl) - 1]...); + group = strings::join("/", spl[..len(spl) - 1]...)?; }; let acc = account { name = name, group = group, ... }; - setfieldaccount(&acc, strings::dup(entry.1), strings::dup(entry.2)); - append(accounts, acc); + setfieldaccount(&acc, strings::dup(entry.1)?, strings::dup(entry.2)?); + append(accounts, acc)!; case let acc: *account => - setfieldaccount(acc, strings::dup(entry.1), strings::dup(entry.2)); + setfieldaccount(acc, strings::dup(entry.1)?, strings::dup(entry.2)?); }; }; return accounts; @@ -274,7 +278,7 @@ fn setfieldaccount(acc: *account, key: str, val: str) void = { //defer free(val); // Handle quoted values - let valrunes = strings::torunes(val); + let valrunes = strings::torunes(val)!; defer free(valrunes); if (valrunes[0] == '"' && valrunes[len(valrunes)-1] == '"') { val = strings::trim(val, '"'); @@ -301,12 +305,12 @@ fn lookupaccount(accounts: []account, name: str) (*account | void) = { return; }; -fn decrypt(file: str) ([]u8 | os::exec::error | io::error) = { +fn decrypt(file: str) ([]u8 | os::exec::error | io::error | nomem) = { let cmd = os::exec::cmd("gpg", "-d", file)?; let pipe_stdout = os::exec::pipe(); - os::exec::addfile(&cmd, os::stdout_file, pipe_stdout.1); - os::exec::addfile(&cmd, os::stderr_file, os::exec::nullfd); + os::exec::addfile(&cmd, os::stdout_file, pipe_stdout.1)?; + os::exec::addfile(&cmd, os::stderr_file, os::exec::nullfd)?; let proc = os::exec::start(&cmd)?; io::close(pipe_stdout.1)?; |
