diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index deb61dd92d..703d423a26 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -27,6 +27,7 @@ #ifdef __OBJC__ #include +#include #endif #if defined(OSX) @@ -310,6 +311,26 @@ static void frontend_darwin_get_os(char *s, size_t len, int *major, int *minor) get_ios_version(major, minor); strlcpy(s, "iOS", len); #elif defined(OSX) + typedef struct + { + NSInteger majorVersion; + NSInteger minorVersion; + NSInteger patchVersion; + } NSMyOSVersion; + if ([[NSProcessInfo processInfo] respondsToSelector:@selector(operatingSystemVersion)]) + { + NSMyOSVersion version = ((NSMyOSVersion(*)(id, SEL))objc_msgSend_stret)([NSProcessInfo processInfo], @selector(operatingSystemVersion)); + *major = version.majorVersion; + *minor = version.minorVersion; + } + else + { + UInt32 version = 0; + OSStatus err = Gestalt(gestaltSystemVersion, (SInt32*)&version); + (void)err; + + sscanf(version, "%d.%d", major, minor); + } strlcpy(s, "OSX", len); #endif }