fix bug where all data blocks were not extracted to file

This commit is contained in:
Jamie Winsor
2016-03-17 13:17:17 -07:00
parent 39b37933d7
commit ad5ed84d91
+12 -8
View File
@@ -144,16 +144,20 @@ impl Disk {
let mut offset = 0;
unsafe {
match ffi::archive_read_data_block(reader.handle(), &mut buff, &mut size, &mut offset) {
ffi::ARCHIVE_EOF => Ok(size),
ffi::ARCHIVE_OK => {
if ffi::archive_write_data_block(self.handle, buff, size, offset) < 0 {
Err(ArchiveError::from(self as &Handle))
} else {
Ok(size)
loop {
match ffi::archive_read_data_block(reader.handle(),
&mut buff,
&mut size,
&mut offset) {
ffi::ARCHIVE_EOF => return Ok(size),
ffi::ARCHIVE_OK => {
if ffi::archive_write_data_block(self.handle, buff, size, offset) !=
ffi::ARCHIVE_OK as isize {
return Err(ArchiveError::from(self as &Handle));
}
}
_ => return Err(ArchiveError::from(reader as &Handle)),
}
_ => Err(ArchiveError::from(reader as &Handle)),
}
}
}