Update to work without byteorder
This commit is contained in:
parent
2676366199
commit
d9a2cb1f71
1 changed files with 13 additions and 13 deletions
26
src/write.rs
26
src/write.rs
|
@ -1727,36 +1727,36 @@ fn clamp_opt<T: Ord + Copy, U: Ord + Copy + TryFrom<T>>(
|
||||||
|
|
||||||
fn write_local_file_header<T: Write>(writer: &mut T, file: &ZipFileData) -> ZipResult<()> {
|
fn write_local_file_header<T: Write>(writer: &mut T, file: &ZipFileData) -> ZipResult<()> {
|
||||||
// local file header signature
|
// local file header signature
|
||||||
writer.write_u32::<LittleEndian>(spec::LOCAL_FILE_HEADER_SIGNATURE)?;
|
writer.write_u32_le(spec::LOCAL_FILE_HEADER_SIGNATURE)?;
|
||||||
// version needed to extract
|
// version needed to extract
|
||||||
writer.write_u16::<LittleEndian>(file.version_needed())?;
|
writer.write_u16_le(file.version_needed())?;
|
||||||
// general purpose bit flag
|
// general purpose bit flag
|
||||||
let is_utf8 = std::str::from_utf8(&file.file_name_raw).is_ok();
|
let is_utf8 = std::str::from_utf8(&file.file_name_raw).is_ok();
|
||||||
let is_ascii = file.file_name_raw.is_ascii();
|
let is_ascii = file.file_name_raw.is_ascii();
|
||||||
let flag = if is_utf8 && !is_ascii { 1u16 << 11 } else { 0 }
|
let flag = if is_utf8 && !is_ascii { 1u16 << 11 } else { 0 }
|
||||||
| if file.encrypted { 1u16 << 0 } else { 0 };
|
| if file.encrypted { 1u16 << 0 } else { 0 };
|
||||||
writer.write_u16::<LittleEndian>(flag)?;
|
writer.write_u16_le(flag)?;
|
||||||
// Compression method
|
// Compression method
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
writer.write_u16::<LittleEndian>(file.compression_method.to_u16())?;
|
writer.write_u16_le(file.compression_method.to_u16())?;
|
||||||
// last mod file time and last mod file date
|
// last mod file time and last mod file date
|
||||||
writer.write_u16::<LittleEndian>(file.last_modified_time.timepart())?;
|
writer.write_u16_le(file.last_modified_time.timepart())?;
|
||||||
writer.write_u16::<LittleEndian>(file.last_modified_time.datepart())?;
|
writer.write_u16_le(file.last_modified_time.datepart())?;
|
||||||
// crc-32
|
// crc-32
|
||||||
writer.write_u32::<LittleEndian>(file.crc32)?;
|
writer.write_u32_le(file.crc32)?;
|
||||||
// compressed size and uncompressed size
|
// compressed size and uncompressed size
|
||||||
if file.large_file {
|
if file.large_file {
|
||||||
writer.write_u32::<LittleEndian>(spec::ZIP64_BYTES_THR as u32)?;
|
writer.write_u32_le(spec::ZIP64_BYTES_THR as u32)?;
|
||||||
writer.write_u32::<LittleEndian>(spec::ZIP64_BYTES_THR as u32)?;
|
writer.write_u32_le(spec::ZIP64_BYTES_THR as u32)?;
|
||||||
} else {
|
} else {
|
||||||
writer.write_u32::<LittleEndian>(file.compressed_size as u32)?;
|
writer.write_u32_le(file.compressed_size as u32)?;
|
||||||
writer.write_u32::<LittleEndian>(file.uncompressed_size as u32)?;
|
writer.write_u32_le(file.uncompressed_size as u32)?;
|
||||||
}
|
}
|
||||||
// file name length
|
// file name length
|
||||||
writer.write_u16::<LittleEndian>(file.file_name_raw.len() as u16)?;
|
writer.write_u16_le(file.file_name_raw.len() as u16)?;
|
||||||
// extra field length
|
// extra field length
|
||||||
let extra_field_length = if file.large_file { 20 } else { 0 } + file.extra_field.len() as u16;
|
let extra_field_length = if file.large_file { 20 } else { 0 } + file.extra_field.len() as u16;
|
||||||
writer.write_u16::<LittleEndian>(extra_field_length)?;
|
writer.write_u16_le(extra_field_length)?;
|
||||||
// file name
|
// file name
|
||||||
writer.write_all(&file.file_name_raw)?;
|
writer.write_all(&file.file_name_raw)?;
|
||||||
// zip64 extra field
|
// zip64 extra field
|
||||||
|
|
Loading…
Add table
Reference in a new issue