Create checksum function and remove duplicate code.
This commit is contained in:
parent
ad50081574
commit
a0ace81f92
12
src/voc.rs
12
src/voc.rs
|
@ -1,5 +1,3 @@
|
|||
#![allow(clippy::new_without_default)]
|
||||
|
||||
use std::fs::File;
|
||||
use std::io::{Read, Seek, Write};
|
||||
|
||||
|
@ -18,6 +16,10 @@ impl VocFile {
|
|||
const SIGNATURE1: &'static str = "Creative Voice File";
|
||||
const SIGNATURE2: [u8; 3] = [0x1A, 0x1A, 0x0];
|
||||
|
||||
fn checksum(version: i16) -> [u8; 2] {
|
||||
(!version + 0x1234).to_le_bytes()
|
||||
}
|
||||
|
||||
pub fn from_file(file_name: &str) -> Self {
|
||||
let mut file = File::open(file_name).unwrap();
|
||||
|
||||
|
@ -45,8 +47,7 @@ impl VocFile {
|
|||
// Version checksum
|
||||
let mut checksum_buffer: [u8; 2] = [0; 2];
|
||||
drop(file.read(&mut checksum_buffer));
|
||||
let checksum = (!version_int + 0x1234).to_le_bytes();
|
||||
let checksum_result = checksum_buffer == checksum;
|
||||
let checksum_result = checksum_buffer == Self::checksum(version_int);
|
||||
|
||||
let mut voc_file = VocFile { version, checksum: checksum_result, blocks: Vec::new() };
|
||||
|
||||
|
@ -136,8 +137,7 @@ impl VocFile {
|
|||
|
||||
// Version Checksum
|
||||
let version_int = i16::from_le_bytes([self.version.1, self.version.0]);
|
||||
let checksum = (!version_int + 0x1234).to_le_bytes();
|
||||
result.extend_from_slice(&checksum);
|
||||
result.extend_from_slice(&Self::checksum(version_int));
|
||||
|
||||
// Iterate Blocks
|
||||
for block in &self.blocks {
|
||||
|
|
Loading…
Reference in New Issue