modified: src/main.rs

This commit is contained in:
Michael Wain 2025-02-08 02:49:32 +03:00
parent 088c1dbfa0
commit 84f5824411
2 changed files with 16 additions and 5 deletions

BIN
outdb

Binary file not shown.

View File

@ -245,6 +245,7 @@ pub fn parse_bytes(data: &[u8]) -> XDatabase {
let db: Database = bincode::deserialize(&data[i..i+u]).unwrap();
info!("val: {:?}", db);
xdb.data = Some(db);
xdb.header = Some(header);
},
ChunkType::DataSet => {
u = usize::try_from(header.end_of_chunk).unwrap() - 12;
@ -407,6 +408,15 @@ fn generate_header(ct: ChunkType, header_size: usize, data_len: usize) -> Vec<u8
let header = ChunkHeader{ chunk_type: ct.into(), end_of_chunk: header_size, children_count: header_size + data_len as u32};
bincode::serialize(&header).unwrap()
}
fn generate_zeroes(cnt: u32) -> Vec<u8> {
let mut v: Vec<u8> = Vec::new();
for i in 0..cnt-12 {
v.push(0x00);
}
v
}
/*
[lib]
crate-type = ["staticlib", "cdylib", "lib"]
@ -469,8 +479,9 @@ fn to_bytes(xdb: XDatabase) -> Vec<u8> {
}
let sdb = bincode::serialize(&xdb.data.unwrap()).unwrap();
let sdb_len = sdb.len();
bytes = [sdb, bytes].concat();
bytes = [generate_header(ChunkType::Database, sdb_len, bytes.len()), bytes].concat();
let h = xdb.header.unwrap();
bytes = [sdb, generate_zeroes(h.end_of_chunk - sdb_len as u32), bytes].concat();
bytes = [generate_header(ChunkType::Database, (h.end_of_chunk - 12) as usize, bytes.len()), bytes].concat();
bytes
}
@ -481,14 +492,14 @@ fn main() {
.filter(None, LevelFilter::Info)
.init();
let mut f = File::open("D:\\Documents\\iTunes\\iTunesDB").unwrap(); // D:\\Documents\\iTunes\\iTunesDB
let mut f = File::open("outdb").unwrap(); // D:\\Documents\\iTunes\\iTunesDB
let mut buf = Vec::new();
match f.read_to_end(&mut buf) {
Ok(n) => {
let data = &buf[..n];
let xdb = parse_bytes(data);
let mut op = File::create("outdb").unwrap();
info!("Write res: {:?}", op.write(&to_bytes(xdb)));
//let mut op = File::create("outdb").unwrap();
//info!("Write res: {:?}", op.write(&to_bytes(xdb)));
},
Err(e) => {
error!("Error: {}",e);