mirror of
https://github.com/Serial-ATA/lofty-rs
synced 2024-11-10 14:44:22 +00:00
Would make sense to stop reading when the end is reached :)
Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
This commit is contained in:
parent
7797c1e92b
commit
511aa597b2
2 changed files with 15 additions and 9 deletions
|
@ -50,7 +50,9 @@ where
|
||||||
let chunk_len = list.len();
|
let chunk_len = list.len();
|
||||||
let mut metadata: HashMap<String, String> = HashMap::with_capacity(chunk_len as usize);
|
let mut metadata: HashMap<String, String> = HashMap::with_capacity(chunk_len as usize);
|
||||||
|
|
||||||
for _ in 0..chunk_len {
|
let mut reading = true;
|
||||||
|
|
||||||
|
while reading {
|
||||||
let fourcc = cursor.read_u32::<LittleEndian>()? as u32;
|
let fourcc = cursor.read_u32::<LittleEndian>()? as u32;
|
||||||
let size = cursor.read_u32::<LittleEndian>()? as u32;
|
let size = cursor.read_u32::<LittleEndian>()? as u32;
|
||||||
|
|
||||||
|
@ -61,14 +63,18 @@ where
|
||||||
|
|
||||||
let val = std::str::from_utf8(&*buf)?;
|
let val = std::str::from_utf8(&*buf)?;
|
||||||
metadata.insert(key, val.trim_matches(char::from(0)).to_string());
|
metadata.insert(key, val.trim_matches(char::from(0)).to_string());
|
||||||
|
|
||||||
// Skip null byte
|
|
||||||
if size as usize % 2 != 0 {
|
|
||||||
cursor.set_position(cursor.position() + 1)
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
None => cursor.set_position(cursor.position() + u64::from(size)),
|
None => cursor.set_position(cursor.position() + u64::from(size)),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Skip null byte
|
||||||
|
if size as usize % 2 != 0 {
|
||||||
|
cursor.set_position(cursor.position() + 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if cursor.position() >= cursor.get_ref().len() as u64 {
|
||||||
|
reading = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(Some(metadata))
|
Ok(Some(metadata))
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
impl_tag, traits::ReadPath, Album, AnyTag, AudioTag, AudioTagEdit, AudioTagWrite,
|
impl_tag, traits::ReadPath, Album, AnyTag, AudioTag, AudioTagEdit, AudioTagWrite, Picture,
|
||||||
Picture, Result, TagType, ToAny, ToAnyTag,
|
Result, TagType, ToAny, ToAnyTag, components::logic
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::{collections::HashMap, fs::File, path::Path};
|
use std::{collections::HashMap, fs::File, path::Path};
|
||||||
|
@ -15,7 +15,7 @@ impl ReadPath for WavInnerTag {
|
||||||
P: AsRef<std::path::Path>,
|
P: AsRef<std::path::Path>,
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
let data = crate::components::logic::read::wav(File::open(path)?)?;
|
let data = logic::read::wav(File::open(path)?)?;
|
||||||
|
|
||||||
Ok(Self { data })
|
Ok(Self { data })
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue