add version getting example

This commit is contained in:
spuds 2023-01-11 22:42:00 +00:00
parent 774be9ecb0
commit 07bbbbc5ed
3 changed files with 28 additions and 3 deletions

19
examples/version.rs Normal file
View file

@ -0,0 +1,19 @@
fn main() -> Result<(), un_pak::Error> {
// drag onto or open any pak with the example
let path = std::env::args().nth(1).unwrap_or_default();
for ver in un_pak::Version::iter() {
match un_pak::Pak::new(
std::io::BufReader::new(std::fs::OpenOptions::new().read(true).open(&path)?),
ver,
) {
Ok(un_pak::Pak { version, .. }) | Err(un_pak::Error::Version { version, .. }) => {
println!("{}", version);
break;
}
_ => continue,
}
}
// so you can read the results
std::thread::sleep(std::time::Duration::from_secs(10));
Ok(())
}

View file

@ -12,8 +12,11 @@ pub enum Error {
IntoInner(#[from] std::io::IntoInnerError<std::io::BufWriter<Vec<u8>>>),
#[error("found magic of {0:#x} instead of {:#x}", super::MAGIC)]
Magic(u32),
#[error("used version {0} but pak is version {1}")]
Version(super::Version, super::Version),
#[error("used version {used} but pak is version {version}")]
Version {
used: super::Version,
version: super::Version,
},
#[error("got {0}, which is not a boolean")]
Bool(u8),
#[error("{0}")]

View file

@ -57,7 +57,10 @@ impl Footer {
return Err(super::Error::Magic(footer.magic));
}
if version != footer.version {
return Err(super::Error::Version(version, footer.version));
return Err(super::Error::Version {
used: version,
version: footer.version,
});
}
Ok(footer)
}