implement file insertion
This commit is contained in:
parent
7b6a5980c8
commit
0f5764c340
4 changed files with 98 additions and 17 deletions
|
|
@ -1,6 +1,7 @@
|
|||
use std::io::{SeekFrom, Write};
|
||||
|
||||
use crate::compression::CompressionMethod;
|
||||
use crate::error::Error;
|
||||
use crate::extra_fields::{ExtraField, GenericExtraField, Zip64ExtraField};
|
||||
use crate::{cp437, general_purpose_flags, Encoding, Signature};
|
||||
use androscalpel_serializer::{ReadSeek, Result, Serializable};
|
||||
|
|
@ -198,6 +199,20 @@ impl LocalFileHeader {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn set_name(&mut self, name: &str) {
|
||||
let file_name = match cp437::string_to_cp437(name) {
|
||||
Ok(name) => {
|
||||
self.general_purpose_flags &= !general_purpose_flags::MASK_UTF8_FILENAME;
|
||||
name
|
||||
}
|
||||
Err(Error::NotCp437) => {
|
||||
self.general_purpose_flags |= general_purpose_flags::MASK_UTF8_FILENAME;
|
||||
name.as_bytes().into()
|
||||
}
|
||||
};
|
||||
self.file_name = file_name;
|
||||
}
|
||||
|
||||
pub fn get_uncompressed_size(&self) -> u64 {
|
||||
if self.uncompressed_size != u32::MAX {
|
||||
self.uncompressed_size as u64
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue