remove error checking :-)
parent
baeea71fe4
commit
1f81a5b043
33
src/main.rs
33
src/main.rs
|
@ -180,13 +180,14 @@ fn main() -> ResultS<()>
|
|||
|
||||
let mut opt: Options = Default::default();
|
||||
{
|
||||
let mut ap = ArgumentParser::new();
|
||||
|
||||
macro_rules! arg {
|
||||
($name:expr, $ref:expr, $type:expr, $ap:expr, $desc:expr) => {
|
||||
$ap.refer(&mut $ref).add_option(&[$name], $type, $desc);
|
||||
($name:expr, $ref:expr, $type:expr, $desc:expr) => {
|
||||
ap.refer(&mut $ref).add_option(&[$name], $type, $desc);
|
||||
};
|
||||
}
|
||||
|
||||
let mut ap = ArgumentParser::new();
|
||||
ap.set_description(env!("CARGO_PKG_DESCRIPTION"));
|
||||
|
||||
ap.add_option(&["-v", "--version"],
|
||||
|
@ -198,43 +199,43 @@ fn main() -> ResultS<()>
|
|||
ap.refer(&mut opt.inputs)
|
||||
.add_argument("inputs", Collect, "Input files");
|
||||
|
||||
arg!("--shp-write-tab", opt.shp_tab, StoreTrue, ap,
|
||||
arg!("--shp-write-tab", opt.shp_tab, StoreTrue,
|
||||
"shp: Dump all CLUTs as YAML to standard output");
|
||||
|
||||
arg!("--shp-dump-bitmaps", opt.shp_bmp, StoreTrue, ap,
|
||||
arg!("--shp-dump-bitmaps", opt.shp_bmp, StoreTrue,
|
||||
"shp: Dump bitmaps into a folder");
|
||||
|
||||
arg!("--shp-dump-more-bitmaps", opt.shp_bmp_all, StoreTrue, ap,
|
||||
arg!("--shp-dump-more-bitmaps", opt.shp_bmp_all, StoreTrue,
|
||||
"shp: Dump all color variations of each bitmap");
|
||||
|
||||
arg!("--shp-write-frm", opt.shp_frm, StoreTrue, ap,
|
||||
arg!("--shp-write-frm", opt.shp_frm, StoreTrue,
|
||||
"shp: Dump all frames as YAML to standard output");
|
||||
|
||||
arg!("--shp-write-seq", opt.shp_seq, StoreTrue, ap,
|
||||
arg!("--shp-write-seq", opt.shp_seq, StoreTrue,
|
||||
"shp: Dump all sequences as YAML to standard output");
|
||||
|
||||
arg!("--snd-write", opt.snd_write, StoreTrue, ap,
|
||||
arg!("--snd-write", opt.snd_write, StoreTrue,
|
||||
"snd: Dump all sound headers as YAML to standard output");
|
||||
|
||||
arg!("--snd-dump", opt.snd_dump, StoreTrue, ap,
|
||||
arg!("--snd-dump", opt.snd_dump, StoreTrue,
|
||||
"snd: Dump all sounds to WAVE files");
|
||||
|
||||
arg!("--wad-dump-all", opt.wad_all, StoreTrue, ap,
|
||||
arg!("--wad-dump-all", opt.wad_all, StoreTrue,
|
||||
"wad: Dump all chunks into a folder");
|
||||
|
||||
arg!("--wad-dump-unknown", opt.wad_unknown, StoreTrue, ap,
|
||||
arg!("--wad-dump-unknown", opt.wad_unknown, StoreTrue,
|
||||
"wad: Dump all unknown chunks into a folder");
|
||||
|
||||
arg!("--wad-write-header", opt.wad_header, StoreTrue, ap,
|
||||
arg!("--wad-write-header", opt.wad_header, StoreTrue,
|
||||
"wad: Dump header info as YAML to standard output");
|
||||
|
||||
arg!("--wad-write-chunks", opt.wad_c_temp, Store, ap,
|
||||
arg!("--wad-write-chunks", opt.wad_c_temp, Store,
|
||||
"wad: Dump specified chunks in various formats");
|
||||
|
||||
arg!("--out-dir", opt.out_dir, Store, ap,
|
||||
arg!("--out-dir", opt.out_dir, Store,
|
||||
"Sets output directory for dump options");
|
||||
|
||||
arg!("--out-debug", opt.out_debug, StoreTrue, ap,
|
||||
arg!("--out-debug", opt.out_debug, StoreTrue,
|
||||
"Writes debugging output rather than YAML");
|
||||
|
||||
ap.parse_args_or_exit();
|
||||
|
|
|
@ -23,13 +23,8 @@ fn color(b: &[u8], clut: &mut [ColorShp]) -> ResultS<()>
|
|||
}?;
|
||||
|
||||
let cr = ColorShp::Opaque{r, g, b, l};
|
||||
|
||||
if let Some(cl) = clut.get_mut(i as usize) {
|
||||
*cl = cr;
|
||||
Ok(())
|
||||
} else {
|
||||
bail!("bad index");
|
||||
}
|
||||
clut[i as usize] = cr;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn color_tables(b: &[u8],
|
||||
|
@ -40,10 +35,6 @@ fn color_tables(b: &[u8],
|
|||
{
|
||||
let end = tab_num * clr_num * 8;
|
||||
|
||||
if b.len() < tab_ofs + end {
|
||||
bail!("not enough data");
|
||||
}
|
||||
|
||||
let b = &b[tab_ofs..tab_ofs + end];
|
||||
|
||||
let mut v = vec![vec![ColorShp::Translucent; clr_num]; tab_num];
|
||||
|
@ -97,7 +88,7 @@ fn bitmap(b: &[u8]) -> ResultS<Bitmap>
|
|||
|
||||
p += 4;
|
||||
|
||||
if lst < fst || fst > pitch || lst > pitch || p + end >= b.len() {
|
||||
if lst < fst || fst > pitch || lst > pitch || b.len() < p + end {
|
||||
bail!("invalid compressed scanline");
|
||||
}
|
||||
|
||||
|
@ -115,7 +106,7 @@ fn bitmap(b: &[u8]) -> ResultS<Bitmap>
|
|||
}
|
||||
} else {
|
||||
// simple copy
|
||||
if p + width * height >= b.len() {
|
||||
if b.len() < p + width * height {
|
||||
bail!("invalid scanline");
|
||||
}
|
||||
|
||||
|
@ -226,21 +217,13 @@ pub fn read_shapes(b: &[u8]) -> ResultS<Vec<CollectionDef>>
|
|||
}
|
||||
|
||||
let c_lo = if lo_ofs != u32::max_value() as usize {
|
||||
if b.len() < lo_ofs + lo_len {
|
||||
bail!("not enough data");
|
||||
} else {
|
||||
Some(collection(&b[lo_ofs..lo_ofs + lo_len])?)
|
||||
}
|
||||
Some(collection(&b[lo_ofs..lo_ofs + lo_len])?)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let c_hi = if hi_ofs != u32::max_value() as usize {
|
||||
if b.len() < hi_ofs + hi_len {
|
||||
bail!("not enough data");
|
||||
} else {
|
||||
Some(collection(&b[hi_ofs..hi_ofs + hi_len])?)
|
||||
}
|
||||
Some(collection(&b[hi_ofs..hi_ofs + hi_len])?)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
|
|
@ -51,10 +51,6 @@ impl Wad<'_>
|
|||
|
||||
let index = if !is_old {index} else {i as u16};
|
||||
|
||||
if offset + size > b.len() {
|
||||
bail!("not enough data for entry");
|
||||
}
|
||||
|
||||
let cnkdata = &b[offset..offset + size];
|
||||
let chunks = get_chunks(cnkdata, cnksize)?;
|
||||
let appdata = &b[p..p + appsize];
|
||||
|
|
Loading…
Reference in New Issue