From 2dd4762c2e3e85604e8414436f3adb3221bf7639 Mon Sep 17 00:00:00 2001 From: Alison Watson Date: Sun, 23 Jun 2019 07:35:51 -0400 Subject: [PATCH] maraiah: use Read for sound files --- maraiah/snd.rs | 16 +++++++++------- tests/snd.rs | 4 +++- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/maraiah/snd.rs b/maraiah/snd.rs index 222d372..6b3899b 100644 --- a/maraiah/snd.rs +++ b/maraiah/snd.rs @@ -4,13 +4,16 @@ pub mod defs; pub mod snds; use crate::{bin::Ident, err::*}; -use std::collections::BTreeMap; +use std::{collections::BTreeMap, io::prelude::*}; /// Reads all sounds from a Sound file. -pub fn read(b: &[u8]) -> ResultS> +pub fn read(fp: &mut impl Read) -> ResultS> { + let mut b = Vec::new(); + fp.read_to_end(&mut b)?; + read_data! { - endian: BIG, buf: b, size: 260, start: 0, data { + endian: BIG, buf: &b, size: 260, start: 0, data { let version = u32[0]; let magic = Ident[4]; let src_num = u16[8] usize; @@ -23,9 +26,10 @@ pub fn read(b: &[u8]) -> ResultS> } let mut sc = Vec::with_capacity(src_num); - let mut p = 260; - for _ in 0..src_num { + for i in 0..src_num { + let p = 260 + i * 64; + let mut st = SoundTable::new(); for _ in 0..snd_num { @@ -36,8 +40,6 @@ pub fn read(b: &[u8]) -> ResultS> st.insert(idx, def); } - - p += 64; } sc.push(st); diff --git a/tests/snd.rs b/tests/snd.rs index 564b451..02ace30 100644 --- a/tests/snd.rs +++ b/tests/snd.rs @@ -8,7 +8,9 @@ fn snd_must_not_process() for inp in &RANDOM { assert!(snd::defs::read(inp).is_err()); assert!(snd::snds::read(inp).is_err()); - assert!(snd::read(inp).is_err()); + + let mut inp = std::io::BufReader::new(&inp[..]); + assert!(snd::read(&mut inp).is_err()); } }