From f456d47c506d87265ce0ff6080cba5374dced011 Mon Sep 17 00:00:00 2001 From: Al Sutton Date: Wed, 19 Nov 2014 19:50:48 +0000 Subject: [PATCH] Fix building on modern versions of Xcode and OS X. Recent versions of XCode fail to compile the adb and fastboot binaries due to two functions being deprecated in 10.9 (GetCurrentProcess and ProcessInformationCopyDictionary), and the use of -Werrror. This patch replaces the method implementations which use calls to methods deprecated in the 10.9 SDK with versions which only call non-deprecated methods. Change-Id: I855bf26aff45093ca9022924f3ecd1b80f2305a8 --- adb/get_my_path_darwin.c | 14 +++++++------- fastboot/util_osx.c | 17 +++++++++-------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/adb/get_my_path_darwin.c b/adb/get_my_path_darwin.c index 5b95d1534..9141b5799 100644 --- a/adb/get_my_path_darwin.c +++ b/adb/get_my_path_darwin.c @@ -19,12 +19,12 @@ void get_my_path(char *s, size_t maxLen) { - ProcessSerialNumber psn; - GetCurrentProcess(&psn); - CFDictionaryRef dict; - dict = ProcessInformationCopyDictionary(&psn, 0xffffffff); - CFStringRef value = (CFStringRef)CFDictionaryGetValue(dict, - CFSTR("CFBundleExecutable")); - CFStringGetCString(value, s, maxLen, kCFStringEncodingUTF8); + CFBundleRef mainBundle = CFBundleGetMainBundle(); + CFURLRef bundleURL = CFBundleCopyBundleURL(mainBundle); + CFStringRef bundlePathString = CFURLCopyFileSystemPath(bundleURL, kCFURLPOSIXPathStyle); + CFRelease(bundleURL); + + CFStringGetCString(bundlePathString, s, maxLen, kCFStringEncodingASCII); + CFRelease(bundlePathString); } diff --git a/fastboot/util_osx.c b/fastboot/util_osx.c index 26b832a35..e80a8f356 100644 --- a/fastboot/util_osx.c +++ b/fastboot/util_osx.c @@ -31,14 +31,15 @@ void get_my_path(char s[PATH_MAX]) { - char *x; - ProcessSerialNumber psn; - GetCurrentProcess(&psn); - CFDictionaryRef dict; - dict = ProcessInformationCopyDictionary(&psn, 0xffffffff); - CFStringRef value = (CFStringRef)CFDictionaryGetValue(dict, - CFSTR("CFBundleExecutable")); - CFStringGetCString(value, s, PATH_MAX - 1, kCFStringEncodingUTF8); + CFBundleRef mainBundle = CFBundleGetMainBundle(); + CFURLRef bundleURL = CFBundleCopyBundleURL(mainBundle); + CFStringRef bundlePathString = CFURLCopyFileSystemPath(bundleURL, kCFURLPOSIXPathStyle); + CFRelease(bundleURL); + + CFStringGetCString(bundlePathString, s, PATH_MAX - 1, kCFStringEncodingASCII); + CFRelease(bundlePathString); + + char *x; x = strrchr(s, '/'); if(x) x[1] = 0; }