From d7e33820ff52a33c97f8d695b99fcfe74db29069 Mon Sep 17 00:00:00 2001 From: Gabriel Morazan <176758048+GABO1423@users.noreply.github.com> Date: Sun, 15 Mar 2026 22:44:07 -0400 Subject: [PATCH] nodtool: Add scrubbing option (#11) Useful for removing the update partition of Wii games --- nodtool/src/cmd/convert.rs | 5 ++++- nodtool/src/cmd/verify.rs | 2 +- nodtool/src/util/shared.rs | 6 +++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/nodtool/src/cmd/convert.rs b/nodtool/src/cmd/convert.rs index 5d5436d..5df9603 100644 --- a/nodtool/src/cmd/convert.rs +++ b/nodtool/src/cmd/convert.rs @@ -34,6 +34,9 @@ pub struct Args { #[argp(option, short = 'c')] /// compression format and level (e.g. "zstd:19") compress: Option, + #[argp(switch, short = 's')] + /// performs scrubbing on the disc image + scrub: bool, } pub fn run(args: Args) -> nod::Result<()> { @@ -85,5 +88,5 @@ pub fn run(args: Args) -> nod::Result<()> { compression.validate_level()?; let format_options = FormatOptions { format, compression, block_size: format.default_block_size() }; - convert_and_verify(&args.file, Some(&args.out), args.md5, &options, &format_options) + convert_and_verify(&args.file, Some(&args.out), args.md5, args.scrub, &options, &format_options) } diff --git a/nodtool/src/cmd/verify.rs b/nodtool/src/cmd/verify.rs index fa04d3d..ce0905a 100644 --- a/nodtool/src/cmd/verify.rs +++ b/nodtool/src/cmd/verify.rs @@ -50,7 +50,7 @@ pub fn run(args: Args) -> nod::Result<()> { }; let format_options = FormatOptions::default(); for file in &args.file { - convert_and_verify(file, None, args.md5, &options, &format_options)?; + convert_and_verify(file, None, args.md5, false, &options, &format_options)?; println!(); } Ok(()) diff --git a/nodtool/src/util/shared.rs b/nodtool/src/util/shared.rs index ff0210c..bad0405 100644 --- a/nodtool/src/util/shared.rs +++ b/nodtool/src/util/shared.rs @@ -46,6 +46,7 @@ pub fn convert_and_verify( in_file: &Path, out_file: Option<&Path>, md5: bool, + scrub: bool, options: &DiscOptions, format_options: &FormatOptions, ) -> Result<()> { @@ -128,7 +129,10 @@ pub fn convert_and_verify( digest_md5: md5, digest_sha1: true, digest_xxh64: true, - scrub: ScrubLevel::None, + scrub: match scrub { + true => ScrubLevel::UpdatePartition, + false => ScrubLevel::None, + }, }, )?; pb.finish();