Remove unused metroidbuildinfo command
This commit is contained in:
parent
4611a4b501
commit
64d0491256
|
@ -1,48 +0,0 @@
|
||||||
use std::path::PathBuf;
|
|
||||||
|
|
||||||
use anyhow::{bail, ensure, Context, Result};
|
|
||||||
use argp::FromArgs;
|
|
||||||
use memchr::memmem;
|
|
||||||
use memmap2::MmapOptions;
|
|
||||||
|
|
||||||
#[derive(FromArgs, PartialEq, Eq, Debug)]
|
|
||||||
/// Sets the MetroidBuildInfo tag value in a given binary.
|
|
||||||
#[argp(subcommand, name = "metroidbuildinfo")]
|
|
||||||
pub struct Args {
|
|
||||||
#[argp(positional)]
|
|
||||||
/// path to source binary
|
|
||||||
binary: PathBuf,
|
|
||||||
#[argp(positional)]
|
|
||||||
/// path to build info string
|
|
||||||
build_info: PathBuf,
|
|
||||||
}
|
|
||||||
|
|
||||||
const BUILD_STRING_MAX: usize = 35;
|
|
||||||
const BUILD_STRING_TAG: &str = "!#$MetroidBuildInfo!#$";
|
|
||||||
|
|
||||||
pub fn run(args: Args) -> Result<()> {
|
|
||||||
let build_string = std::fs::read_to_string(&args.build_info).with_context(|| {
|
|
||||||
format!("Failed to read build info string from '{}'", args.build_info.display())
|
|
||||||
})?;
|
|
||||||
let build_string_trim = build_string.trim_end();
|
|
||||||
let build_string_bytes = build_string_trim.as_bytes();
|
|
||||||
ensure!(
|
|
||||||
build_string_bytes.len() <= BUILD_STRING_MAX,
|
|
||||||
"Build string '{build_string_trim}' is greater than maximum size of {BUILD_STRING_MAX}"
|
|
||||||
);
|
|
||||||
|
|
||||||
let binary_file =
|
|
||||||
std::fs::File::options().read(true).write(true).open(&args.binary).with_context(|| {
|
|
||||||
format!("Failed to open binary for writing: '{}'", args.binary.display())
|
|
||||||
})?;
|
|
||||||
let mut map = unsafe { MmapOptions::new().map_mut(&binary_file) }
|
|
||||||
.with_context(|| format!("Failed to mmap binary: '{}'", args.binary.display()))?;
|
|
||||||
let start = match memmem::find(&map, BUILD_STRING_TAG.as_bytes()) {
|
|
||||||
Some(idx) => idx + BUILD_STRING_TAG.as_bytes().len(),
|
|
||||||
None => bail!("Failed to find build string tag in binary"),
|
|
||||||
};
|
|
||||||
let end = start + build_string_bytes.len();
|
|
||||||
map[start..end].copy_from_slice(build_string_bytes);
|
|
||||||
map[end] = 0;
|
|
||||||
Ok(())
|
|
||||||
}
|
|
|
@ -7,7 +7,6 @@ pub mod dwarf;
|
||||||
pub mod elf;
|
pub mod elf;
|
||||||
pub mod elf2dol;
|
pub mod elf2dol;
|
||||||
pub mod map;
|
pub mod map;
|
||||||
pub mod metroidbuildinfo;
|
|
||||||
pub mod nlzss;
|
pub mod nlzss;
|
||||||
pub mod rarc;
|
pub mod rarc;
|
||||||
pub mod rel;
|
pub mod rel;
|
||||||
|
|
|
@ -96,7 +96,6 @@ enum SubCommand {
|
||||||
Elf(cmd::elf::Args),
|
Elf(cmd::elf::Args),
|
||||||
Elf2Dol(cmd::elf2dol::Args),
|
Elf2Dol(cmd::elf2dol::Args),
|
||||||
Map(cmd::map::Args),
|
Map(cmd::map::Args),
|
||||||
MetroidBuildInfo(cmd::metroidbuildinfo::Args),
|
|
||||||
Nlzss(cmd::nlzss::Args),
|
Nlzss(cmd::nlzss::Args),
|
||||||
Rarc(cmd::rarc::Args),
|
Rarc(cmd::rarc::Args),
|
||||||
Rel(cmd::rel::Args),
|
Rel(cmd::rel::Args),
|
||||||
|
@ -172,7 +171,6 @@ fn main() {
|
||||||
SubCommand::Elf(c_args) => cmd::elf::run(c_args),
|
SubCommand::Elf(c_args) => cmd::elf::run(c_args),
|
||||||
SubCommand::Elf2Dol(c_args) => cmd::elf2dol::run(c_args),
|
SubCommand::Elf2Dol(c_args) => cmd::elf2dol::run(c_args),
|
||||||
SubCommand::Map(c_args) => cmd::map::run(c_args),
|
SubCommand::Map(c_args) => cmd::map::run(c_args),
|
||||||
SubCommand::MetroidBuildInfo(c_args) => cmd::metroidbuildinfo::run(c_args),
|
|
||||||
SubCommand::Nlzss(c_args) => cmd::nlzss::run(c_args),
|
SubCommand::Nlzss(c_args) => cmd::nlzss::run(c_args),
|
||||||
SubCommand::Rarc(c_args) => cmd::rarc::run(c_args),
|
SubCommand::Rarc(c_args) => cmd::rarc::run(c_args),
|
||||||
SubCommand::Rel(c_args) => cmd::rel::run(c_args),
|
SubCommand::Rel(c_args) => cmd::rel::run(c_args),
|
||||||
|
|
Loading…
Reference in New Issue