src/pxar/decoder.rs: correctly call callback()
This commit is contained in:
parent
5defa71bf9
commit
02c93163cf
@ -35,7 +35,7 @@ impl PxarDecodeWriter {
|
|||||||
|
|
||||||
if let Err(err) = decoder.restore(&base, & |path| {
|
if let Err(err) = decoder.restore(&base, & |path| {
|
||||||
if verbose {
|
if verbose {
|
||||||
println!("RESTORE: {:?}", path);
|
println!("{:?}", path);
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}) {
|
}) {
|
||||||
|
@ -266,6 +266,8 @@ impl <'a, R: Read> PxarDecoder<'a, R> {
|
|||||||
check_ca_header::<CaFormatEntry>(&head, CA_FORMAT_ENTRY)?;
|
check_ca_header::<CaFormatEntry>(&head, CA_FORMAT_ENTRY)?;
|
||||||
let entry: CaFormatEntry = self.read_item()?;
|
let entry: CaFormatEntry = self.read_item()?;
|
||||||
|
|
||||||
|
(callback)(path)?;
|
||||||
|
|
||||||
let mode = entry.mode as u32; //fixme: upper 32bits?
|
let mode = entry.mode as u32; //fixme: upper 32bits?
|
||||||
|
|
||||||
let ifmt = mode & libc::S_IFMT;
|
let ifmt = mode & libc::S_IFMT;
|
||||||
@ -286,8 +288,7 @@ impl <'a, R: Read> PxarDecoder<'a, R> {
|
|||||||
while head.htype == CA_FORMAT_FILENAME {
|
while head.htype == CA_FORMAT_FILENAME {
|
||||||
let name = self.read_filename(head.size)?;
|
let name = self.read_filename(head.size)?;
|
||||||
path.push(&name);
|
path.push(&name);
|
||||||
println!("NAME: {:?}", path);
|
//println!("NAME: {:?}", path);
|
||||||
|
|
||||||
self.restore_sequential(path, &name, &dir, callback)?;
|
self.restore_sequential(path, &name, &dir, callback)?;
|
||||||
path.pop();
|
path.pop();
|
||||||
|
|
||||||
@ -298,7 +299,7 @@ impl <'a, R: Read> PxarDecoder<'a, R> {
|
|||||||
bail!("got unknown header type inside directory entry {:016x}", head.htype);
|
bail!("got unknown header type inside directory entry {:016x}", head.htype);
|
||||||
}
|
}
|
||||||
|
|
||||||
println!("Skip Goodbye");
|
//println!("Skip Goodbye");
|
||||||
if head.size < HEADER_SIZE { bail!("detected short goodbye table"); }
|
if head.size < HEADER_SIZE { bail!("detected short goodbye table"); }
|
||||||
|
|
||||||
self.skip_bytes((head.size - HEADER_SIZE) as usize)?;
|
self.skip_bytes((head.size - HEADER_SIZE) as usize)?;
|
||||||
@ -322,7 +323,7 @@ impl <'a, R: Read> PxarDecoder<'a, R> {
|
|||||||
match head.htype {
|
match head.htype {
|
||||||
CA_FORMAT_SYMLINK => {
|
CA_FORMAT_SYMLINK => {
|
||||||
let target = self.read_symlink(head.size)?;
|
let target = self.read_symlink(head.size)?;
|
||||||
println!("TARGET: {:?}", target);
|
//println!("TARGET: {:?}", target);
|
||||||
if let Err(err) = symlinkat(&target, parent_fd, filename) {
|
if let Err(err) = symlinkat(&target, parent_fd, filename) {
|
||||||
bail!("create symlink {:?} failed - {}", path, err);
|
bail!("create symlink {:?} failed - {}", path, err);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user