@@ -17,7 +17,8 @@ use blake3::Hasher as blake3_Hasher;
1717use byteorder:: { BigEndian , ByteOrder } ;
1818use fs:: File ;
1919use fs_err as fs;
20- use object:: { macho, read:: archive:: ArchiveFile , read:: macho:: FatArch } ;
20+ use object:: read:: archive:: ArchiveFile ;
21+ use object:: read:: macho:: { FatArch , MachOFatFile32 , MachOFatFile64 } ;
2122use serde:: { Deserialize , Serialize } ;
2223use std:: cell:: Cell ;
2324use std:: ffi:: { OsStr , OsString } ;
@@ -356,20 +357,19 @@ pub async fn hash_all_archives(
356357 let archive_mmap =
357358 unsafe { memmap2:: MmapOptions :: new ( ) . map_copy_read_only ( & archive_file) ? } ;
358359
359- match macho:: FatHeader :: parse ( & * archive_mmap) {
360- Ok ( h) if h. magic . get ( object:: endian:: BigEndian ) == macho:: FAT_MAGIC => {
361- for arch in macho:: FatHeader :: parse_arch32 ( & * archive_mmap) ? {
362- hash_regular_archive ( & mut m, arch. data ( & * archive_mmap) ?) ?;
363- }
360+ if let Ok ( fat) = MachOFatFile32 :: parse ( & * archive_mmap) {
361+ for arch in fat. arches ( ) {
362+ hash_regular_archive ( & mut m, arch. data ( & * archive_mmap) ?) ?;
364363 }
365- Ok ( h) if h. magic . get ( object:: endian:: BigEndian ) == macho:: FAT_MAGIC_64 => {
366- for arch in macho:: FatHeader :: parse_arch64 ( & * archive_mmap) ? {
367- hash_regular_archive ( & mut m, arch. data ( & * archive_mmap) ?) ?;
368- }
364+ } else if let Ok ( fat) = MachOFatFile64 :: parse ( & * archive_mmap) {
365+ for arch in fat. arches ( ) {
366+ hash_regular_archive ( & mut m, arch. data ( & * archive_mmap) ?) ?;
369367 }
368+ } else {
370369 // Not a FatHeader at all, regular archive.
371- _ => hash_regular_archive ( & mut m, & archive_mmap) ?,
370+ hash_regular_archive ( & mut m, & archive_mmap) ?;
372371 }
372+
373373 Ok ( m. finish ( ) )
374374 } )
375375 } ) ;
0 commit comments