src/bin/pxar.rs: implement dump/list
This commit is contained in:
@ -9,70 +9,30 @@ use proxmox_backup::api_schema::router::*;
|
||||
|
||||
use serde_json::{Value};
|
||||
|
||||
use std::io::{Read, Write};
|
||||
use std::io::Write;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use proxmox_backup::pxar::format_definition::*;
|
||||
use proxmox_backup::pxar::encoder::*;
|
||||
use proxmox_backup::pxar::decoder::*;
|
||||
|
||||
use proxmox_backup::tools::*;
|
||||
|
||||
fn print_goodby_entries(buffer: &[u8]) -> Result<(), Error> {
|
||||
println!("GOODBY START: {}", buffer.len());
|
||||
|
||||
let entry_size = std::mem::size_of::<CaFormatGoodbyeItem>();
|
||||
if (buffer.len() % entry_size) != 0 {
|
||||
bail!("unexpected goodby item size ({})", entry_size);
|
||||
}
|
||||
|
||||
let mut pos = 0;
|
||||
|
||||
while pos < buffer.len() {
|
||||
|
||||
let item = map_struct::<CaFormatGoodbyeItem>(&buffer[pos..pos+entry_size])?;
|
||||
|
||||
if item.hash == CA_FORMAT_GOODBYE_TAIL_MARKER {
|
||||
println!(" Entry Offset: {}", item.offset);
|
||||
if item.size != (buffer.len() + 16) as u64 {
|
||||
bail!("gut unexpected goodby entry size (tail marker)");
|
||||
}
|
||||
} else {
|
||||
println!(" Offset: {}", item.offset);
|
||||
println!(" Size: {}", item.size);
|
||||
println!(" Hash: {:016x}", item.hash);
|
||||
}
|
||||
|
||||
pos += entry_size;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn print_filenames(
|
||||
_param: Value,
|
||||
param: Value,
|
||||
_info: &ApiMethod,
|
||||
_rpcenv: &mut RpcEnvironment,
|
||||
) -> Result<Value, Error> {
|
||||
|
||||
/* FIXME
|
||||
|
||||
let archive = tools::required_string_param(¶m, "archive")?;
|
||||
let file = std::fs::File::open(archive)?;
|
||||
|
||||
let mut reader = std::io::BufReader::new(file);
|
||||
|
||||
let mut decoder = PxarDecoder::new(&mut reader)?;
|
||||
|
||||
let root = decoder.root();
|
||||
let mut decoder = PxarDecoder::new(&mut reader);
|
||||
|
||||
let stdout = std::io::stdout();
|
||||
let mut out = stdout.lock();
|
||||
|
||||
decoder.print_filenames(&mut out, &mut PathBuf::from("."), &root)?;
|
||||
*/
|
||||
|
||||
panic!("not implemented");
|
||||
let mut path = PathBuf::from(".");
|
||||
decoder.dump_entry(&mut path, false, &mut out)?;
|
||||
|
||||
Ok(Value::Null)
|
||||
}
|
||||
@ -95,7 +55,8 @@ fn dump_archive(
|
||||
|
||||
println!("PXAR dump: {}", archive);
|
||||
|
||||
decoder.dump_archive(&mut out);
|
||||
let mut path = PathBuf::new();
|
||||
decoder.dump_entry(&mut path, true, &mut out)?;
|
||||
|
||||
Ok(Value::Null)
|
||||
}
|
||||
|
Reference in New Issue
Block a user