this repo has no description
at fixPythonPipStalling 114 lines 3.1 kB view raw
1/* 2 * Copyright (c) 2000-2005, 2009-2011, 2013, 2016-2019 Apple Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24/* 25 * Modification History 26 * 27 * June 1, 2001 Allan Nathanson <ajn@apple.com> 28 * - public API conversion 29 * 30 * March 24, 2000 Allan Nathanson <ajn@apple.com> 31 * - initial revision 32 */ 33 34#include "SCDynamicStoreInternal.h" 35#include "config.h" /* MiG generated file */ 36 37 38Boolean 39SCDynamicStoreRemoveValue(SCDynamicStoreRef store, CFStringRef key) 40{ 41 SCDynamicStorePrivateRef storePrivate; 42 kern_return_t status; 43 CFDataRef utfKey; /* serialized key */ 44 xmlData_t myKeyRef; 45 CFIndex myKeyLen; 46 int sc_status; 47 48 if (store == NULL) { 49 store = __SCDynamicStoreNullSession(); 50 if (store == NULL) { 51 /* sorry, you must provide a session */ 52 _SCErrorSet(kSCStatusNoStoreSession); 53 return FALSE; 54 } 55 } 56 57 storePrivate = (SCDynamicStorePrivateRef)store; 58 if (storePrivate->server == MACH_PORT_NULL) { 59 /* sorry, you must have an open session to play */ 60 _SCErrorSet(kSCStatusNoStoreServer); 61 return FALSE; 62 } 63 64 if (storePrivate->cache_active) { 65 if (storePrivate->cached_set != NULL) { 66 CFDictionaryRemoveValue(storePrivate->cached_set, key); 67 } 68 69 if (storePrivate->cached_removals == NULL) { 70 storePrivate->cached_removals = CFArrayCreateMutable(NULL, 71 0, 72 &kCFTypeArrayCallBacks); 73 } 74 75 if (!CFArrayContainsValue(storePrivate->cached_removals, 76 CFRangeMake(0, CFArrayGetCount(storePrivate->cached_removals)), 77 key)) { 78 CFArrayAppendValue(storePrivate->cached_removals, key); 79 } 80 81 return TRUE; 82 } 83 84 /* serialize the key */ 85 if (!_SCSerializeString(key, &utfKey, (void **)&myKeyRef, &myKeyLen)) { 86 _SCErrorSet(kSCStatusFailed); 87 return FALSE; 88 } 89 90 retry : 91 92 /* send the key to the server */ 93 status = configremove(storePrivate->server, 94 myKeyRef, 95 (mach_msg_type_number_t)myKeyLen, 96 (int *)&sc_status); 97 98 if (__SCDynamicStoreCheckRetryAndHandleError(store, 99 status, 100 &sc_status, 101 "SCDynamicStoreRemoveValue configremove()")) { 102 goto retry; 103 } 104 105 /* clean up */ 106 CFRelease(utfKey); 107 108 if (sc_status != kSCStatusOK) { 109 _SCErrorSet(sc_status); 110 return FALSE; 111 } 112 113 return TRUE; 114}