mirror of
https://github.com/azahar-emu/azahar
synced 2025-11-06 23:19:57 +01:00
Fix system files setup on macos
This commit is contained in:
parent
d72948ca22
commit
dac463d74a
@ -303,11 +303,11 @@ void NCCHCryptoFile::Write(const u8* buffer, std::size_t length) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (length) {
|
while (length) {
|
||||||
auto find_closest_region = [this](size_t offset) -> CryptoRegion* {
|
auto find_closest_region = [this](size_t offset) -> std::optional<CryptoRegion> {
|
||||||
CryptoRegion* closest = nullptr;
|
CryptoRegion* closest = nullptr;
|
||||||
for (auto& reg : regions) {
|
for (auto& reg : regions) {
|
||||||
if (offset >= reg.offset && offset < reg.offset + reg.size) {
|
if (offset >= reg.offset && offset < reg.offset + reg.size) {
|
||||||
return ®
|
return reg;
|
||||||
}
|
}
|
||||||
if (offset < reg.offset) {
|
if (offset < reg.offset) {
|
||||||
size_t dist = reg.offset - offset;
|
size_t dist = reg.offset - offset;
|
||||||
@ -317,11 +317,15 @@ void NCCHCryptoFile::Write(const u8* buffer, std::size_t length) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Return the closest one
|
// Return the closest one
|
||||||
return closest;
|
if (closest) {
|
||||||
|
return *closest;
|
||||||
|
} else {
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
CryptoRegion* reg = find_closest_region(written);
|
const auto reg = find_closest_region(written);
|
||||||
if (reg == nullptr) {
|
if (!reg.has_value()) {
|
||||||
// This file has no encryption
|
// This file has no encryption
|
||||||
size_t to_write = length;
|
size_t to_write = length;
|
||||||
file->WriteBytes(buffer, to_write);
|
file->WriteBytes(buffer, to_write);
|
||||||
@ -379,8 +383,8 @@ void NCCHCryptoFile::Write(const u8* buffer, std::size_t length) {
|
|||||||
for (int i = 0; i < 8; i++) {
|
for (int i = 0; i < 8; i++) {
|
||||||
if (exefs_header.section[i].size != 0) {
|
if (exefs_header.section[i].size != 0) {
|
||||||
bool is_primary =
|
bool is_primary =
|
||||||
strcmp(exefs_header.section[i].name, "icon") == 0 ||
|
memcmp(exefs_header.section[i].name, "icon", 4) == 0 ||
|
||||||
strcmp(exefs_header.section[i].name, "banner") == 0;
|
memcmp(exefs_header.section[i].name, "banner", 6) == 0;
|
||||||
regions.push_back(CryptoRegion{
|
regions.push_back(CryptoRegion{
|
||||||
.type = is_primary ? CryptoRegion::EXEFS_PRI
|
.type = is_primary ? CryptoRegion::EXEFS_PRI
|
||||||
: CryptoRegion::EXEFS_SEC,
|
: CryptoRegion::EXEFS_SEC,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user