//! RE probe: dump tables.pak screen-config records that mention a given token. //! Usage: screen_configs use sylpheed_formats::{idxd::IdxdObject, pak::PakArchive}; fn main() { let a: Vec = std::env::args().collect(); let needle = a.get(2).cloned().unwrap_or_else(|| "CHALLENGE".into()); let arc = PakArchive::open(format!("{}/dat/tables.pak", a[1])).unwrap(); for (i, e) in arc.entries().iter().enumerate() { let Ok(b) = arc.read(e) else { continue }; let Ok(o) = IdxdObject::parse(&b) else { continue; }; let t = o.tokens(); if !t .iter() .any(|s| s.to_lowercase().contains(&needle.to_lowercase())) { continue; } let path = t .iter() .find(|s| s.contains(".pak+")) .cloned() .unwrap_or_default(); if !path.is_empty() && !path.contains("+eng") { continue; } println!( "\n=== entry #{i} schema {:08x} [{path}] {} tokens ===", o.schema_hash, t.len() ); for (j, tok) in t.iter().enumerate() { println!(" {j:3} {tok}"); } } }