summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChad Versace <chad.versace@linux.intel.com>2013-11-24 14:51:37 -0800
committerChad Versace <chad.versace@linux.intel.com>2013-11-24 15:31:09 -0800
commit142dba8db661dfa2b5b65c9fd2faa8821ec529ef (patch)
treec7f1ad0a8e9aeceafeaa0c4585e62479da70dd43
parent302f2e30acd1fca67d72375c3fb3627e89bcc17e (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.m44
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*