diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m
index 1c718d8e4f..ffd05affb6 100644
--- a/frontend/drivers/platform_darwin.m
+++ b/frontend/drivers/platform_darwin.m
@@ -15,19 +15,6 @@
* If not, see .
*/
-#include
-#include
-#include
-#include
-
-#ifdef __OBJC__
-#include
-#endif
-
-#include "../frontend_driver.h"
-#include "../../ui/ui_companion_driver.h"
-#include "../../general.h"
-
#include
#include
#include
@@ -35,6 +22,13 @@
#include
+#include
+#include
+
+#ifdef __OBJC__
+#include
+#endif
+
#if defined(OSX)
#include
#include
@@ -45,6 +39,14 @@
#include
#endif
+#include
+#include
+#include
+
+#include "../frontend_driver.h"
+#include "../../ui/ui_companion_driver.h"
+#include "../../general.h"
+
typedef enum
{
CFApplicationDirectory = 1, /* Supported applications (Applications) */
@@ -525,20 +527,32 @@ end:
return ret;
}
+#define DARWIN_ARCH_X86_64 0x23dea434U
+#define DARWIN_ARCH_X86 0x0b88b8cbU
+#define DARWIN_ARCH_POWER_MAC 0xba3772d8U
+
static enum frontend_architecture frontend_darwin_get_architecture(void)
{
struct utsname buffer;
+ uint32_t buffer_hash;
if (uname(&buffer) != 0)
return FRONTEND_ARCH_NONE;
+
+ (void)buffer_hash;
#ifdef OSX
- if (!strcmp(buffer.machine, "x86_64"))
- return FRONTEND_ARCH_X86_64;
- if (!strcmp(buffer.machine, "x86"))
- return FRONTEND_ARCH_X86;
- if (!strcmp(buffer.machine, "Power Macintosh"))
- return FRONTEND_ARCH_PPC;
+ buffer_hash = djb2_calculate(buffer.machine);
+
+ switch (buffer_hash)
+ {
+ case DARWIN_ARCH_X86_64
+ return FRONTEND_ARCH_X86_64;
+ case DARWIN_ARCH_X86:
+ return FRONTEND_ARCH_X86;
+ case DARWIN_ARCH_POWER_MAC:
+ return FRONTEND_ARCH_PPC;
+ }
#endif
return FRONTEND_ARCH_NONE;