#[derive(Copy, Clone, Debug, PartialEq)]
pub enum FileHashType {
Message,
}
impl FileHashType {
#[must_use]
pub fn predict_from_file_name(file_name: &str) -> Option<Self> {
match file_name {
"message.bin"
| "message_en.bin"
| "message_fr.bin"
| "message_ge.bin"
| "message_it.bin"
| "message_sp.bin"
| "message_us.bin"
| "message_debug.bin"
| "message_debug_en.bin"
| "message_debug_fr.bin"
| "message_debug_ge.bin"
| "message_debug_it.bin"
| "message_debug_sp.bin"
| "message_debug_us.bin" => Some(Self::Message),
_ => None,
}
}
}
pub mod message_dehash {
use crate::Farc;
use std::io;
use std::io::{Read, Seek};
#[must_use]
pub fn get_file_name(original_file_name: &str) -> Option<String> {
Some(original_file_name.split('.').next()?.to_string() + ".lst")
}
pub fn try_possible_name<F: Read, FT: Read + Seek>(
farc: &mut Farc<FT>,
list_file: &mut F,
) -> Result<(), io::Error> {
let mut strings = String::new();
list_file.read_to_string(&mut strings)?;
for line in strings.split('\n') {
if line.is_empty() {
continue;
};
if let Some(file_name) = line.split('/').last() {
if !farc.check_file_name(file_name) {
debug!(
"the file name {} can't be found in a message farc archive",
file_name
);
};
};
}
Ok(())
}
}