File tree Expand file tree Collapse file tree 3 files changed +26
-7
lines changed Expand file tree Collapse file tree 3 files changed +26
-7
lines changed Original file line number Diff line number Diff line change @@ -207,6 +207,14 @@ pub fn test_cases() -> Vec<Case> {
207207 files: Files :: NumFiles ( 11372 ) ,
208208 ..Default :: default ( )
209209 } ,
210+ Case {
211+ name: "info-zip-unix-extra.zip" ,
212+ files: Files :: ExhaustiveList ( vec![ CaseFile {
213+ name: "bun-darwin-x64/" ,
214+ ..Default :: default ( )
215+ } ] ) ,
216+ ..Default :: default ( )
217+ } ,
210218 #[ cfg( feature = "lzma" ) ]
211219 Case {
212220 name: "found-me-lzma.zip" ,
@@ -261,11 +269,18 @@ pub fn test_cases() -> Vec<Case> {
261269}
262270
263271pub fn streaming_test_cases ( ) -> Vec < Case > {
264- vec ! [ Case {
265- name: "meta.zip" ,
266- files: Files :: NumFiles ( 0 ) ,
267- ..Default :: default ( )
268- } ]
272+ vec ! [
273+ Case {
274+ name: "meta.zip" ,
275+ files: Files :: NumFiles ( 0 ) ,
276+ ..Default :: default ( )
277+ } ,
278+ Case {
279+ name: "info-zip-unix-extra.zip" ,
280+ files: Files :: NumFiles ( 0 ) ,
281+ ..Default :: default ( )
282+ } ,
283+ ]
269284}
270285
271286pub fn check_case ( case : & Case , archive : Result < & Archive , & Error > ) {
Original file line number Diff line number Diff line change @@ -99,7 +99,7 @@ impl<'a> ExtraField<'a> {
9999 ExtraNtfsField :: TAG => {
100100 opt ( ExtraNtfsField :: parser. map ( EF :: Ntfs ) ) . parse_next ( payload) ?
101101 }
102- ExtraUnixField :: TAG | ExtraUnixField :: TAG_INFOZIP => {
102+ ExtraUnixField :: TAG => {
103103 opt ( ExtraUnixField :: parser. map ( EF :: Unix ) ) . parse_next ( payload) ?
104104 }
105105 ExtraNewUnixField :: TAG => {
@@ -201,7 +201,11 @@ pub struct ExtraUnixField<'a> {
201201
202202impl < ' a > ExtraUnixField < ' a > {
203203 const TAG : u16 = 0x000d ;
204- const TAG_INFOZIP : u16 = 0x5855 ;
204+ // FIXME(cosmic): add support after `ExtraUnixField`'s structure accounts for info-zip storing
205+ // less information than with `::TAG`. the smaller variant stores just atime and mtime while
206+ // the larger additionally store a `uid` and `gid` as well. the variant is determined based off
207+ // of `t_size`, with no additional variable data
208+ const _TAG_INFOZIP: u16 = 0x5855 ;
205209
206210 fn parser ( i : & mut Partial < & ' a [ u8 ] > ) -> PResult < Self > {
207211 let t_size = le_u16. parse_next ( i) ?;
You can’t perform that action at this time.
0 commit comments