From a2c6e7eeffd74c1b362c3cd0e3eab892717b9f3c Mon Sep 17 00:00:00 2001 From: Marrub Date: Tue, 12 Feb 2019 18:03:18 -0500 Subject: [PATCH] separate wad/header --- src/main.rs | 14 ++++++-------- src/marathon/wad.rs | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/main.rs b/src/main.rs index 765f58f..88b27e2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,8 +6,7 @@ use std::{collections::HashSet, fn make_tga(fname: &str, im: &impl Image) -> ResultS<()> { - let out = fs::File::create(fname)?; - let mut out = io::BufWriter::new(out); + let mut out = io::BufWriter::new(fs::File::create(fname)?); write_tga(&mut out, im) } @@ -15,8 +14,7 @@ fn make_chunk(opt: &Options, cid: &Ident, cnk: &[u8], eid: u16) -> ResultS<()> { let cid = mac_roman_conv(cid); let fname = format!("{}/{:04}{}.bin", opt.out_dir, eid, cid); - let out = fs::File::create(&fname)?; - let mut out = io::BufWriter::new(out); + let mut out = io::BufWriter::new(fs::File::create(&fname)?); out.write(cnk)?; Ok(()) } @@ -87,7 +85,7 @@ fn process_wad(opt: &Options, b: &[u8]) -> ResultS<()> let wad = wad::Wad::new(b)?; if opt.wad_header { - make_yaml(&wad)?; + make_yaml(&wad.head)?; } for (eid, ent) in wad.entries { @@ -160,9 +158,9 @@ fn main() -> ResultS<()> let mut ap = ArgumentParser::new(); ap.set_description(env!("CARGO_PKG_DESCRIPTION")); ap.add_option(&["-v", "--version"], - Print(format!("{} {}", - env!("CARGO_PKG_NAME"), - env!("CARGO_PKG_VERSION"))), + Print(concat!(env!("CARGO_PKG_NAME"), + " ", + env!("CARGO_PKG_VERSION")).to_string()), "Show the version"); ap.refer(&mut opt.shp_tab) .add_option(&["--shp-write-tab"], StoreTrue, diff --git a/src/marathon/wad.rs b/src/marathon/wad.rs index 5f9a516..9885153 100644 --- a/src/marathon/wad.rs +++ b/src/marathon/wad.rs @@ -55,7 +55,7 @@ impl Wad<'_> p += entsize + appsize; } - Ok(Wad{wadver, dataver, appsize, origname, entries}) + Ok(Wad{head: WadHeader{wadver, dataver, appsize, origname}, entries}) } } @@ -80,20 +80,26 @@ type Chunk<'a> = &'a [u8]; type ChunkMap<'a> = BTreeMap>; type EntryMap<'a> = BTreeMap>; +#[derive(Serialize)] pub struct Entry<'a> { pub chunks: ChunkMap<'a>, pub appdata: &'a [u8], } +#[derive(Debug, Serialize)] +pub struct WadHeader +{ + pub wadver: Ver, + pub dataver: u16, + pub origname: String, + pub appsize: usize, +} + #[derive(Debug, Serialize)] pub struct Wad<'a> { - wadver: Ver, - dataver: u16, - origname: String, - appsize: usize, - #[serde(skip)] + pub head: WadHeader, pub entries: EntryMap<'a>, }