usecrate::result::{ZipError, ZipResult}; usecrate::unstable::LittleEndianReadExt; use core::mem::size_of; use std::io::Read;
/// Info-ZIP Unicode Path Extra Field (0x7075) or Unicode Comment Extra Field (0x6375), as /// specified in APPNOTE 4.6.8 and 4.6.9 #[derive(Clone, Debug)] pubstruct UnicodeExtraField {
crc32: u32,
content: Box<[u8]>,
}
impl UnicodeExtraField { /// Verifies the checksum and returns the content. pubfn unwrap_valid(self, ascii_field: &[u8]) -> ZipResult<Box<[u8]>> { letmut crc32 = crc32fast::Hasher::new();
crc32.update(ascii_field); let actual_crc32 = crc32.finalize(); ifself.crc32 != actual_crc32 { return Err(ZipError::InvalidArchive( "CRC32 checksum failed on Unicode extra field",
));
}
Ok(self.content)
}
}
let crc32 = reader.read_u32_le()?; let content_len = (len as usize)
.checked_sub(size_of::<u8>() + size_of::<u32>())
.ok_or(ZipError::InvalidArchive("Unicode extra field is too small"))?; letmut content = vec![0u8; content_len].into_boxed_slice();
reader.read_exact(&mut content)?;
Ok(Self { crc32, content })
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-06-21)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.