diff options
author | Chad Versace <chad.versace@linux.intel.com> | 2013-11-24 14:51:37 -0800 |
---|---|---|
committer | Chad Versace <chad.versace@linux.intel.com> | 2013-11-24 15:31:09 -0800 |
commit | 142dba8db661dfa2b5b65c9fd2faa8821ec529ef (patch) | |
tree | c7f1ad0a8e9aeceafeaa0c4585e62479da70dd43 | |
parent | 302f2e30acd1fca67d72375c3fb3627e89bcc17e (diff) |
cgl: Gestalt is deprecated, stop using it
Don't use Gestalt() to get system version. Instead, get the
'ProductVersion' key from
'/System/Library/CoreServices/SystemVersion.plist'. This is the same fix
that Firefox used.
Fixes the following compilation warning:
warning: 'Gestalt' is deprecated: first deprecated in OS X 10.8
[-Wdeprecated-declarations]
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
-rw-r--r-- | src/waffle/cgl/cgl_platform.m | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/src/waffle/cgl/cgl_platform.m b/src/waffle/cgl/cgl_platform.m index ee3b7e7..ee3a23b 100644 --- a/src/waffle/cgl/cgl_platform.m +++ b/src/waffle/cgl/cgl_platform.m @@ -56,34 +56,38 @@ cgl_platform_destroy(struct wcore_platform *wc_self) static bool cgl_platform_set_system_version(struct cgl_platform *self) { - OSStatus st; - const char *majorminor; + NSString *plistPath = @"/System/Library/CoreServices/SystemVersion.plist"; + NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:plistPath]; + if (!dict) { + wcore_errorf(WAFFLE_ERROR_UNKNOWN, + "failed to open 'SystemVersion.plist'; " + "failed to get system version"); + return false; + } - st = Gestalt(gestaltSystemVersionMajor, - &self->system_version_major); - if (st) { - majorminor = "Major"; - goto error; + NSString *str = [dict objectForKey:@"ProductVersion"]; + if (!str) { + wcore_errorf(WAFFLE_ERROR_UNKNOWN, + "failed to get key 'ProductVersion' from 'SystemVersion.plist'; " + "failed to get system version"); + return false; } - st = Gestalt(gestaltSystemVersionMinor, - &self->system_version_minor); - if (st) { - majorminor = "Minor"; - goto error; + NSArray *array = [str componentsSeparatedByString:@"."]; + int len = [array count]; + if (len < 2) { + wcore_errorf(WAFFLE_ERROR_UNKNOWN, + "SystemVersion.plit:ProductVersion=\"%s\" has too few comonents; " + "failed to get system version", + [str UTF8String]); + return false; } + self->system_version_major = [(NSString*)[array objectAtIndex:0] integerValue]; + self->system_version_minor = [(NSString*)[array objectAtIndex:1] integerValue]; self->system_version_full = (self->system_version_major << 8) | self->system_version_minor; - return true; - -error: - wcore_errorf(WAFFLE_ERROR_UNKNOWN, - "failed to get system version. " - "Gestalt(gestaltSystemVersion%s) failed with 0x%x\n", - majorminor, st); - return false; } struct wcore_platform* |