Skip to content

Commit 6a0c246

Browse files
committed
start read modes
1 parent ebb5a34 commit 6a0c246

File tree

1 file changed

+68
-54
lines changed

1 file changed

+68
-54
lines changed

src/archive.rs

Lines changed: 68 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,6 @@ where
142142
)
143143
}
144144

145-
pub enum ArchiveMode {
146-
Create,
147-
Read,
148-
Update,
149-
}
150-
151145
/*
152146
TODO We don't support different modes for now
153147
needs a wrapper class for archives
@@ -176,11 +170,17 @@ where
176170
/// # Errors
177171
///
178172
/// This function will return an error if any io fails.
179-
pub fn open_read<P>(archive_file_name: P) -> Result<Archive>
173+
pub fn open_read<P>(archive_file_name: P) -> Result<ZipArchive>
180174
where
181175
P: AsRef<Path>,
182176
{
183-
Archive::from_file(archive_file_name)
177+
let ar = Archive::from_file(archive_file_name)?;
178+
179+
let a: ZipArchive = ZipArchive {
180+
mode: ArchiveMode::Read,
181+
};
182+
183+
Ok(a)
184184
}
185185

186186
/// Extracts all files from an archive and writes them to a folder
@@ -589,22 +589,36 @@ fn pad_until_page<W: Write + Seek>(writer: &mut W) -> Result<()> {
589589
Ok(())
590590
}
591591

592+
/////////////////////////////////////////////////////////////////////////////////////////
593+
// TODO API
594+
/////////////////////////////////////////////////////////////////////////////////////////
595+
596+
pub enum ArchiveMode {
597+
Create,
598+
Read,
599+
Update,
600+
}
601+
602+
pub struct ZipArchive {
603+
mode: ArchiveMode,
604+
}
605+
592606
/////////////////////////////////////////////////////////////////////////////////////////
593607
// INTERNAL
594608
/////////////////////////////////////////////////////////////////////////////////////////
595609

596610
#[derive(Debug, Clone, Default)]
597-
pub struct Archive {
598-
pub header: Header,
599-
pub index: Index,
611+
struct Archive {
612+
header: Header,
613+
index: Index,
600614

601615
// custom
602-
pub file_names: HashMap<u64, String>,
616+
file_names: HashMap<u64, String>,
603617
}
604618

605619
impl Archive {
606620
// Function to read a Header from a file
607-
pub fn from_file<P>(file_path: P) -> Result<Archive>
621+
fn from_file<P>(file_path: P) -> Result<Archive>
608622
where
609623
P: AsRef<Path>,
610624
{
@@ -625,7 +639,7 @@ impl Archive {
625639
Archive::from_reader(&mut cursor)
626640
}
627641

628-
pub fn from_reader<R>(cursor: &mut R) -> Result<Archive>
642+
fn from_reader<R>(cursor: &mut R) -> Result<Archive>
629643
where
630644
R: Read + Seek,
631645
{
@@ -658,7 +672,7 @@ impl Archive {
658672
}
659673

660674
// get filehashes
661-
pub fn get_file_hashes(&self) -> Vec<u64> {
675+
fn get_file_hashes(&self) -> Vec<u64> {
662676
self.index
663677
.file_entries
664678
.iter()
@@ -668,20 +682,20 @@ impl Archive {
668682
}
669683

670684
#[derive(Debug, Clone, Copy)]
671-
pub struct Header {
672-
pub magic: u32,
673-
pub version: u32,
674-
pub index_position: u64,
675-
pub index_size: u32,
676-
pub debug_position: u64,
677-
pub debug_size: u32,
678-
pub filesize: u64,
685+
struct Header {
686+
magic: u32,
687+
version: u32,
688+
index_position: u64,
689+
index_size: u32,
690+
debug_position: u64,
691+
debug_size: u32,
692+
filesize: u64,
679693
}
680694

681695
impl Header {
682696
//static HEADER_MAGIC: u32 = 1380009042;
683697
//static HEADER_SIZE: i32 = 40;
684-
pub const HEADER_EXTENDED_SIZE: u64 = 0xAC;
698+
const HEADER_EXTENDED_SIZE: u64 = 0xAC;
685699
}
686700

687701
impl Default for Header {
@@ -712,7 +726,7 @@ impl FromReader for Header {
712726
}
713727
}
714728
impl Header {
715-
pub fn serialize<W: Write>(&self, writer: &mut W) -> Result<()> {
729+
fn serialize<W: Write>(&self, writer: &mut W) -> Result<()> {
716730
writer.write_u32::<LittleEndian>(self.magic)?;
717731
writer.write_u32::<LittleEndian>(self.version)?;
718732
writer.write_u64::<LittleEndian>(self.index_position)?;
@@ -726,21 +740,21 @@ impl Header {
726740
}
727741

728742
#[derive(Debug, Clone, Default)]
729-
pub struct Index {
730-
pub file_table_offset: u32,
731-
pub file_table_size: u32,
732-
pub crc: u64,
733-
pub file_entry_count: u32,
734-
pub file_segment_count: u32,
735-
pub resource_dependency_count: u32,
743+
struct Index {
744+
file_table_offset: u32,
745+
file_table_size: u32,
746+
crc: u64,
747+
file_entry_count: u32,
748+
file_segment_count: u32,
749+
resource_dependency_count: u32,
736750

737751
// not serialized
738-
pub file_entries: HashMap<u64, FileEntry>,
739-
pub file_segments: Vec<FileSegment>,
740-
pub dependencies: Vec<Dependency>,
752+
file_entries: HashMap<u64, FileEntry>,
753+
file_segments: Vec<FileSegment>,
754+
dependencies: Vec<Dependency>,
741755
}
742756
impl Index {
743-
pub fn serialize<W: Write>(&self, writer: &mut W) -> Result<()> {
757+
fn serialize<W: Write>(&self, writer: &mut W) -> Result<()> {
744758
writer.write_u32::<LittleEndian>(self.file_table_offset)?;
745759
writer.write_u32::<LittleEndian>(self.file_table_size)?;
746760
writer.write_u64::<LittleEndian>(self.crc)?;
@@ -787,10 +801,10 @@ impl FromReader for Index {
787801
}
788802

789803
#[derive(Debug, Clone, Copy)]
790-
pub struct FileSegment {
791-
pub offset: u64,
792-
pub z_size: u32,
793-
pub size: u32,
804+
struct FileSegment {
805+
offset: u64,
806+
z_size: u32,
807+
size: u32,
794808
}
795809

796810
impl FromReader for FileSegment {
@@ -804,15 +818,15 @@ impl FromReader for FileSegment {
804818
}
805819

806820
#[derive(Debug, Clone, Copy)]
807-
pub struct FileEntry {
808-
pub name_hash_64: u64,
809-
pub timestamp: u64, //SystemTime,
810-
pub num_inline_buffer_segments: u32,
811-
pub segments_start: u32,
812-
pub segments_end: u32,
813-
pub resource_dependencies_start: u32,
814-
pub resource_dependencies_end: u32,
815-
pub sha1_hash: [u8; 20],
821+
struct FileEntry {
822+
name_hash_64: u64,
823+
timestamp: u64, //SystemTime,
824+
num_inline_buffer_segments: u32,
825+
segments_start: u32,
826+
segments_end: u32,
827+
resource_dependencies_start: u32,
828+
resource_dependencies_end: u32,
829+
sha1_hash: [u8; 20],
816830
}
817831

818832
impl FromReader for FileEntry {
@@ -835,8 +849,8 @@ impl FromReader for FileEntry {
835849
}
836850

837851
#[derive(Debug, Clone, Copy)]
838-
pub struct Dependency {
839-
pub hash: u64,
852+
struct Dependency {
853+
hash: u64,
840854
}
841855

842856
impl FromReader for Dependency {
@@ -848,16 +862,16 @@ impl FromReader for Dependency {
848862
}
849863

850864
#[derive(Debug, Clone)]
851-
pub struct LxrsFooter {
852-
pub files: Vec<String>,
865+
struct LxrsFooter {
866+
files: Vec<String>,
853867
}
854868

855869
impl LxrsFooter {
856870
//const MINLEN: u32 = 20;
857871
const MAGIC: u32 = 0x4C585253;
858872
const VERSION: u32 = 1;
859873

860-
pub fn serialize<W: Write>(&self, writer: &mut W) -> Result<()> {
874+
fn serialize<W: Write>(&self, writer: &mut W) -> Result<()> {
861875
writer.write_u32::<LittleEndian>(self.files.len() as u32)?;
862876
writer.write_u32::<LittleEndian>(LxrsFooter::VERSION)?;
863877

0 commit comments

Comments
 (0)