@@ -33,26 +33,23 @@ pub fn mode_to_file_type(mode: u32) -> FileType {
33
33
}
34
34
}
35
35
36
- struct ZipEntry {
37
- start : usize ,
38
- end : usize ,
39
- inflated_size : usize ,
40
- }
41
36
42
37
pub struct Zip {
43
- files : HashMap < String , ZipEntry > ,
38
+ archive : ZipArchive < BufReader < fs:: File > > ,
39
+ files : HashMap < String , ( ) > ,
44
40
dirs : HashSet < String > ,
45
41
}
46
42
47
43
impl Zip {
48
- fn new ( archive : & mut ZipArchive < BufReader < fs:: File > > ) -> Result < Zip , Error > {
44
+ fn new ( archive : ZipArchive < BufReader < fs:: File > > ) -> Result < Zip , Error > {
49
45
let mut zip = Zip {
46
+ archive,
50
47
files : Default :: default ( ) ,
51
48
dirs : Default :: default ( ) ,
52
49
} ;
53
50
54
- for i in 0 ..archive. len ( ) {
55
- let entry = archive. by_index_raw ( i) ?;
51
+ for i in 0 ..zip . archive . len ( ) {
52
+ let entry = zip . archive . by_index_raw ( i) ?;
56
53
57
54
match entry. compression ( ) {
58
55
zip:: CompressionMethod :: DEFLATE => { }
@@ -74,11 +71,7 @@ impl Zip {
74
71
if entry. is_dir ( ) {
75
72
zip. dirs . insert ( name) ;
76
73
} else if entry. is_file ( ) {
77
- zip. files . insert ( name, ZipEntry {
78
- start : entry. data_start ( ) as usize ,
79
- end : ( entry. data_start ( ) + entry. compressed_size ( ) ) as usize ,
80
- inflated_size : entry. size ( ) as usize ,
81
- } ) ;
74
+ zip. files . insert ( name, { } ) ;
82
75
}
83
76
}
84
77
@@ -106,8 +99,8 @@ pub fn open_zip(p: &Path) -> Result<Zip, Error> {
106
99
let file = fs:: File :: open ( p) ?;
107
100
let reader = BufReader :: new ( file) ;
108
101
109
- let mut archive = ZipArchive :: new ( reader) ?;
110
- let zip = Zip :: new ( & mut archive) ?;
102
+ let archive = ZipArchive :: new ( reader) ?;
103
+ let zip = Zip :: new ( archive) ?;
111
104
112
105
Ok ( zip)
113
106
}
0 commit comments