@@ -142,12 +142,6 @@ where
142
142
)
143
143
}
144
144
145
- pub enum ArchiveMode {
146
- Create ,
147
- Read ,
148
- Update ,
149
- }
150
-
151
145
/*
152
146
TODO We don't support different modes for now
153
147
needs a wrapper class for archives
@@ -176,11 +170,17 @@ where
176
170
/// # Errors
177
171
///
178
172
/// 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 >
180
174
where
181
175
P : AsRef < Path > ,
182
176
{
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)
184
184
}
185
185
186
186
/// 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<()> {
589
589
Ok ( ( ) )
590
590
}
591
591
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
+
592
606
/////////////////////////////////////////////////////////////////////////////////////////
593
607
// INTERNAL
594
608
/////////////////////////////////////////////////////////////////////////////////////////
595
609
596
610
#[ 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 ,
600
614
601
615
// custom
602
- pub file_names : HashMap < u64 , String > ,
616
+ file_names : HashMap < u64 , String > ,
603
617
}
604
618
605
619
impl Archive {
606
620
// 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 >
608
622
where
609
623
P : AsRef < Path > ,
610
624
{
@@ -625,7 +639,7 @@ impl Archive {
625
639
Archive :: from_reader ( & mut cursor)
626
640
}
627
641
628
- pub fn from_reader < R > ( cursor : & mut R ) -> Result < Archive >
642
+ fn from_reader < R > ( cursor : & mut R ) -> Result < Archive >
629
643
where
630
644
R : Read + Seek ,
631
645
{
@@ -658,7 +672,7 @@ impl Archive {
658
672
}
659
673
660
674
// get filehashes
661
- pub fn get_file_hashes ( & self ) -> Vec < u64 > {
675
+ fn get_file_hashes ( & self ) -> Vec < u64 > {
662
676
self . index
663
677
. file_entries
664
678
. iter ( )
@@ -668,20 +682,20 @@ impl Archive {
668
682
}
669
683
670
684
#[ 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 ,
679
693
}
680
694
681
695
impl Header {
682
696
//static HEADER_MAGIC: u32 = 1380009042;
683
697
//static HEADER_SIZE: i32 = 40;
684
- pub const HEADER_EXTENDED_SIZE : u64 = 0xAC ;
698
+ const HEADER_EXTENDED_SIZE : u64 = 0xAC ;
685
699
}
686
700
687
701
impl Default for Header {
@@ -712,7 +726,7 @@ impl FromReader for Header {
712
726
}
713
727
}
714
728
impl Header {
715
- pub fn serialize < W : Write > ( & self , writer : & mut W ) -> Result < ( ) > {
729
+ fn serialize < W : Write > ( & self , writer : & mut W ) -> Result < ( ) > {
716
730
writer. write_u32 :: < LittleEndian > ( self . magic ) ?;
717
731
writer. write_u32 :: < LittleEndian > ( self . version ) ?;
718
732
writer. write_u64 :: < LittleEndian > ( self . index_position ) ?;
@@ -726,21 +740,21 @@ impl Header {
726
740
}
727
741
728
742
#[ 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 ,
736
750
737
751
// 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 > ,
741
755
}
742
756
impl Index {
743
- pub fn serialize < W : Write > ( & self , writer : & mut W ) -> Result < ( ) > {
757
+ fn serialize < W : Write > ( & self , writer : & mut W ) -> Result < ( ) > {
744
758
writer. write_u32 :: < LittleEndian > ( self . file_table_offset ) ?;
745
759
writer. write_u32 :: < LittleEndian > ( self . file_table_size ) ?;
746
760
writer. write_u64 :: < LittleEndian > ( self . crc ) ?;
@@ -787,10 +801,10 @@ impl FromReader for Index {
787
801
}
788
802
789
803
#[ 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 ,
794
808
}
795
809
796
810
impl FromReader for FileSegment {
@@ -804,15 +818,15 @@ impl FromReader for FileSegment {
804
818
}
805
819
806
820
#[ 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 ] ,
816
830
}
817
831
818
832
impl FromReader for FileEntry {
@@ -835,8 +849,8 @@ impl FromReader for FileEntry {
835
849
}
836
850
837
851
#[ derive( Debug , Clone , Copy ) ]
838
- pub struct Dependency {
839
- pub hash : u64 ,
852
+ struct Dependency {
853
+ hash : u64 ,
840
854
}
841
855
842
856
impl FromReader for Dependency {
@@ -848,16 +862,16 @@ impl FromReader for Dependency {
848
862
}
849
863
850
864
#[ derive( Debug , Clone ) ]
851
- pub struct LxrsFooter {
852
- pub files : Vec < String > ,
865
+ struct LxrsFooter {
866
+ files : Vec < String > ,
853
867
}
854
868
855
869
impl LxrsFooter {
856
870
//const MINLEN: u32 = 20;
857
871
const MAGIC : u32 = 0x4C585253 ;
858
872
const VERSION : u32 = 1 ;
859
873
860
- pub fn serialize < W : Write > ( & self , writer : & mut W ) -> Result < ( ) > {
874
+ fn serialize < W : Write > ( & self , writer : & mut W ) -> Result < ( ) > {
861
875
writer. write_u32 :: < LittleEndian > ( self . files . len ( ) as u32 ) ?;
862
876
writer. write_u32 :: < LittleEndian > ( LxrsFooter :: VERSION ) ?;
863
877
0 commit comments