modified: src/main.rs
This commit is contained in:
parent
088c1dbfa0
commit
84f5824411
21
src/main.rs
21
src/main.rs
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user