diff options
-rw-r--r-- | Foundation/GTMServiceManagement.c | 21 | ||||
-rw-r--r-- | GTM.xcodeproj/project.pbxproj | 4 |
2 files changed, 25 insertions, 0 deletions
diff --git a/Foundation/GTMServiceManagement.c b/Foundation/GTMServiceManagement.c index 9027f43..d19fd86 100644 --- a/Foundation/GTMServiceManagement.c +++ b/Foundation/GTMServiceManagement.c @@ -37,6 +37,7 @@ #if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_4 +#include <CoreServices/CoreServices.h> #include <paths.h> #include <unistd.h> #include <sys/stat.h> @@ -53,6 +54,18 @@ typedef struct { CFErrorRef *error; } GTMCFToLDictContext; +static bool IsOsYosemiteOrGreater() { + SInt32 version_major; + SInt32 version_minor; + require_noerr(Gestalt(gestaltSystemVersionMajor, &version_major), + failedGestalt); + require_noerr(Gestalt(gestaltSystemVersionMinor, &version_minor), + failedGestalt); + return version_major > 10 || (version_major == 10 && version_minor >= 10); + failedGestalt: + return false; +} + static CFErrorRef GTMCFLaunchCreateUnlocalizedError(CFIndex code, CFStringRef format, ...) CF_FORMAT_FUNCTION(2, 3); @@ -649,6 +662,14 @@ Boolean GTMSMJobRemove(CFStringRef jobLabel, CFErrorRef *error) { switch (resp_type) { case LAUNCH_DATA_ERRNO: { int e = launch_data_get_errno(resp); + + // In OSX 10.10+, launch_msg(LAUNCH_KEY_REMOVEJOB, ...) returns the + // error EINPROGRESS if the job was running at the time it was removed. + // This should be considered a success as it was on earlier OS versions. + if (e == EINPROGRESS && IsOsYosemiteOrGreater()) { + break; + } + if (e) { local_error = GTMCFLaunchCreateUnlocalizedError(e, CFSTR("")); } diff --git a/GTM.xcodeproj/project.pbxproj b/GTM.xcodeproj/project.pbxproj index bc3ff2b..92902ef 100644 --- a/GTM.xcodeproj/project.pbxproj +++ b/GTM.xcodeproj/project.pbxproj @@ -51,6 +51,7 @@ 33C372A70DD8A88500E97817 /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C372A50DD8A88500E97817 /* GTMNSString+URLArguments.m */; }; 33C374380DD8D44800E97817 /* GTMNSDictionary+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 33C374360DD8D44800E97817 /* GTMNSDictionary+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; }; 33C374390DD8D44800E97817 /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C374370DD8D44800E97817 /* GTMNSDictionary+URLArguments.m */; }; + 444B3B7719F6D24000B9191E /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 444B3B7619F6D24000B9191E /* CoreServices.framework */; }; 629445400EDDF647009295EA /* GTMNSArray+Merge.h in Headers */ = {isa = PBXBuildFile; fileRef = 6294453E0EDDF647009295EA /* GTMNSArray+Merge.h */; settings = {ATTRIBUTES = (Public, ); }; }; 629445410EDDF647009295EA /* GTMNSArray+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = 6294453F0EDDF647009295EA /* GTMNSArray+Merge.m */; }; 7F3EB38E0E5E09C700A7A75E /* GTMNSImage+Scaling.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F3EB38C0E5E09C700A7A75E /* GTMNSImage+Scaling.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -572,6 +573,7 @@ 33C374360DD8D44800E97817 /* GTMNSDictionary+URLArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSDictionary+URLArguments.h"; sourceTree = "<group>"; }; 33C374370DD8D44800E97817 /* GTMNSDictionary+URLArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+URLArguments.m"; sourceTree = "<group>"; }; 33C3745E0DD8D85B00E97817 /* GTMNSDictionary+URLArgumentsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+URLArgumentsTest.m"; sourceTree = "<group>"; }; + 444B3B7619F6D24000B9191E /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; }; 6294453E0EDDF647009295EA /* GTMNSArray+Merge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSArray+Merge.h"; sourceTree = "<group>"; }; 6294453F0EDDF647009295EA /* GTMNSArray+Merge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSArray+Merge.m"; sourceTree = "<group>"; }; 6294454B0EDDF89A009295EA /* GTMNSArray+MergeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSArray+MergeTest.m"; sourceTree = "<group>"; }; @@ -1045,6 +1047,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 444B3B7719F6D24000B9191E /* CoreServices.framework in Frameworks */, 8BC851D4127A19020046E0FB /* CoreFoundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1116,6 +1119,7 @@ 0867D691FE84028FC02AAC07 /* GTM */ = { isa = PBXGroup; children = ( + 444B3B7619F6D24000B9191E /* CoreServices.framework */, F4C978090D5B79C7001C29A6 /* ReleaseNotes.txt */, F440EDB70DFECC4B0003E81F /* BuildingAndUsing.txt */, 8B1A16050D90344B00CA1E8E /* GTMDefines.h */, |