logo

deblob

remove binary executables from a directory git clone https://anongit.hacktivis.me/git/deblob.git/
commit: ca7c71ba82abfdfa5fa2fdf4632bf6d50d10148f
parent ebb57991a8746d444a60aa152575c3fffe99555c
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Sat, 21 Jun 2025 17:41:39 +0200

nomem changes for hare 0.25.2

Diffstat:

Mmain.ha24+++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/main.ha b/main.ha @@ -272,16 +272,16 @@ fn is_excluded(filename: str) bool = { return false; }; -fn append_action(action: str, filename: str, format: str) void = { +fn append_action(action: str, filename: str, format: str) (void | nomem) = { if(!json) return; let obj = json::object { ... }; - json::put(&obj, "action", action); + json::put(&obj, "action", action)?; defer json::take(&obj, "action"); - json::put(&obj, "path", filename); + json::put(&obj, "path", filename)?; defer json::take(&obj, "path"); - json::put(&obj, "format", format); + json::put(&obj, "format", format)?; defer json::take(&obj, "format"); let obj_s = json::dumpstr(obj); @@ -299,7 +299,7 @@ fn append_action(action: str, filename: str, format: str) void = { }; }; -fn check_dir(dirname: str) (void | errors::invalid | io::error) = { +fn check_dir(dirname: str) (void | nomem | errors::invalid | io::error) = { const iter = match (os::iter(dirname)) { case let iter: *fs::iterator => yield iter; @@ -342,7 +342,7 @@ fn check_dir(dirname: str) (void | errors::invalid | io::error) = { }; if (is_excluded(filename)) { - append_action("ignoring", filename, blob_id); + append_action("ignoring", filename, blob_id)?; fmt::printfln("ignoring {}:\t{}", blob_id, filename)!; continue; }; @@ -350,12 +350,12 @@ fn check_dir(dirname: str) (void | errors::invalid | io::error) = { found = true; if (noop) { - append_action("detected", filename, blob_id); + append_action("detected", filename, blob_id)?; fmt::printfln("detected {}:\t{}", blob_id, filename)!; continue; }; - append_action("removing", filename, blob_id); + append_action("removing", filename, blob_id)?; fmt::printfln("removing {}:\t{}", blob_id, filename)!; match (os::remove(filename)) { @@ -380,6 +380,8 @@ fn check_dir(dirname: str) (void | errors::invalid | io::error) = { yield d; case let e: fs::error => fmt::fatalf("deblob: error: os::readdir({}): {}", dirname, fs::strerror(e)); + case nomem => + fmt::fatal("deblob: error: os::readdir({}): Out of Memory", dirname); }; assert(len(files_before) == 61); @@ -391,6 +393,8 @@ fn check_dir(dirname: str) (void | errors::invalid | io::error) = { yield d; case let e: fs::error => fmt::fatalf("deblob: error: os::readdir({}): {}", dirname, fs::strerror(e)); + case nomem => + fmt::fatal("deblob: error: os::readdir({}): Out of Memory", dirname); }; assert(len(files_after) == 30); }; @@ -416,7 +420,7 @@ export fn main() void = { case 'c' => check = true; case 'e' => - append(excludes, opt.1); + append(excludes, opt.1)!; case 'd' => opt_d = opt.1; case 'n' => @@ -476,6 +480,8 @@ export fn main() void = { os::exit(0); case errors::invalid => os::exit(1); + case nomem => + fmt::fatal("deblob: error: Out of Memory"); case let e: io::error => fmt::errorfln("deblob: error: I/O error while traversing directories: {}", io::strerror(e))!; os::exit(1);