use crate::{ArchivePath, CentralDirectoryHeader, DosDateTime};
#[derive(Debug)]
pub struct FileEntry<'a> {
pub(crate) header: &'a CentralDirectoryHeader,
pub(crate) path: ArchivePath<'a>,
pub(crate) data: &'a [u8],
pub(crate) id: u32,
}
impl<'a> FileEntry<'a> {
#[must_use]
pub fn data(&self) -> &'a [u8] {
self.data
}
#[must_use]
pub fn size(&self) -> u64 {
self.header.uncompressed_size.get() as u64
}
#[must_use]
pub fn crc32(&self) -> u32 {
self.header.crc32.get()
}
#[must_use]
pub fn path(&self) -> &ArchivePath<'a> {
&self.path
}
#[must_use]
pub fn mode(&self) -> u32 {
self.header.external_attrs.get() >> 16
}
#[must_use]
pub fn mtime(&self) -> DosDateTime {
DosDateTime::from_date_time_parts(self.header.mod_date.get(), self.header.mod_time.get())
}
#[must_use]
pub fn header(&self) -> &'a CentralDirectoryHeader {
self.header
}
#[must_use]
pub fn id(&self) -> u32 {
self.id
}
}