transfert file from zip to another (wip)

This commit is contained in:
Jean-Marie Mineau 2024-01-17 13:57:01 +01:00
parent 0d305fbe62
commit 0fdf619360
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2
10 changed files with 512 additions and 273 deletions

View file

@ -1,5 +1,6 @@
use std::io::{SeekFrom, Write};
use crate::compression::CompressionMethod;
use crate::extra_fields::{ExtraField, GenericExtraField, Zip64ExtraField};
use crate::{cp437, general_purpose_flags, Encoding, Signature};
use androscalpel_serializer::{ReadSeek, Result, Serializable};
@ -10,7 +11,7 @@ pub struct FileHeader {
pub version_made_by: u16,
pub version_needed_to_extract: u16,
pub general_purpose_flags: u16,
pub compression_method: u16,
pub compression_method: CompressionMethod,
pub last_mod_file_time: u16,
pub last_mod_file_data: u16,
pub crc_32: u32,
@ -70,7 +71,7 @@ impl Serializable for FileHeader {
let version_made_by = u16::deserialize(input)?;
let version_needed_to_extract = u16::deserialize(input)?;
let general_purpose_flags = u16::deserialize(input)?;
let compression_method = u16::deserialize(input)?;
let compression_method = CompressionMethod::deserialize(input)?;
let last_mod_file_time = u16::deserialize(input)?;
let last_mod_file_data = u16::deserialize(input)?;
let crc_32 = u32::deserialize(input)?;
@ -127,7 +128,7 @@ impl Serializable for FileHeader {
}
}
if extra_size_read > extra_field_length as usize {
println!("Failed to parsed last extra field in {}", header.get_name());
println!("Failed to parse last extra field in {}", header.get_name());
let size = header.extra_field.pop().unwrap().size();
input.seek(SeekFrom::Current(-(size as i64))).unwrap();
}