Skip to content

Commit 04047a8

Browse files
cryptomilksylvestre
authored andcommitted
feat(utils): Add support for object >= 0.33
1 parent c3dd704 commit 04047a8

File tree

3 files changed

+25
-29
lines changed

3 files changed

+25
-29
lines changed

Cargo.lock

Lines changed: 13 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ memchr = "2"
6363
memmap2 = "0.9.4"
6464
mime = "0.3"
6565
number_prefix = "0.4"
66-
object = "0.32"
66+
object = "0.36"
6767
once_cell = "1.19"
6868
opendal = { version = "0.52.0", optional = true, default-features = false }
6969
openssl = { version = "0.10.72", optional = true }

src/util.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ use blake3::Hasher as blake3_Hasher;
1717
use byteorder::{BigEndian, ByteOrder};
1818
use fs::File;
1919
use 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};
2122
use serde::{Deserialize, Serialize};
2223
use std::cell::Cell;
2324
use 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

Comments
 (0)