1use std::path::PathBuf;
2use crate::mds::loader::BinaryLoader;
3
4pub fn diff_command(
5 file1: PathBuf,
6 file2: PathBuf,
7 detailed: bool,
8) -> Result<(), Box<dyn std::error::Error>> {
9 let loader = BinaryLoader::new();
10 let binary1 = loader.load_file(&file1)?;
11 let binary2 = loader.load_file(&file2)?;
12 println!("Comparing binaries:");
13 println!(" File 1: {}", file1.display());
14 println!(" File 2: {}", file2.display());
15 println!();
16 if binary1.version != binary2.version {
17 println!("⚠️ Version differs: {} vs {}", binary1.version, binary2.version);
18 }
19 if binary1.size() != binary2.size() {
20 println!("⚠️ Size differs: {} vs {} bytes", binary1.size(), binary2.size());
21 }
22 let stats1 = binary1.symbol_table.stats();
23 let stats2 = binary2.symbol_table.stats();
24 if stats1.total_strings != stats2.total_strings {
25 println!(
26 "⚠️ String count differs: {} vs {}", stats1.total_strings, stats2
27 .total_strings
28 );
29 }
30 if detailed {}
31 Ok(())
32}