Fixed version matching

This commit is contained in:
Platin21
2024-01-10 17:24:53 +01:00
parent 120ef168bf
commit bb94f4d129
+15 -8
View File
@@ -914,38 +914,45 @@ gb_internal void report_os_info() {
// Scan table for match on BUILD // Scan table for match on BUILD
int macos_release_count = sizeof(macos_release_map) / sizeof(macos_release_map[0]); int macos_release_count = sizeof(macos_release_map) / sizeof(macos_release_map[0]);
Darwin_To_Release match = {}; Darwin_To_Release build_match = {};
Darwin_To_Release kernel_match = {};
for (int build = 0; build < macos_release_count; build++) { for (int build = 0; build < macos_release_count; build++) {
Darwin_To_Release rel = macos_release_map[build]; Darwin_To_Release rel = macos_release_map[build];
// Do we have an exact match on the BUILD? // Do we have an exact match on the BUILD?
if (gb_strcmp(rel.build, (const char *)build_buffer) == 0) { if (gb_strcmp(rel.build, (const char *)build_buffer) == 0) {
match = rel; build_match = rel;
break; break;
} }
// Do we have an exact Darwin match? // Do we have an exact Darwin match?
if (rel.darwin[0] == major && rel.darwin[1] == minor && rel.darwin[2] == patch) { if (rel.darwin[0] == major && rel.darwin[1] == minor && rel.darwin[2] == patch) {
match = rel; kernel_match = rel;
break;
} }
// Major kernel version needs to match exactly, // Major kernel version needs to match exactly,
if (rel.darwin[0] == major) { if (rel.darwin[0] == major) {
// No major version match yet. // No major version match yet.
if (!match.os_name) { if (!kernel_match.os_name) {
match = rel; kernel_match = rel;
} }
if (minor >= rel.darwin[1]) { if (minor >= rel.darwin[1]) {
match = rel; kernel_match = rel;
if (patch >= rel.darwin[2]) { if (patch >= rel.darwin[2]) {
match = rel; kernel_match = rel;
} }
} }
} }
} }
Darwin_To_Release match = {};
if(!build_match.build) {
match = kernel_match;
} else {
match = build_match;
}
if (match.os_name) { if (match.os_name) {
gb_printf("%s %s %d", match.os_name, match.release.name, match.release.version[0]); gb_printf("%s %s %d", match.os_name, match.release.name, match.release.version[0]);
if (match.release.version[1] > 0 || match.release.version[2] > 0) { if (match.release.version[1] > 0 || match.release.version[2] > 0) {