this repo has no description
at fixPythonPipStalling 127 lines 3.1 kB view raw
1/* 2 * Copyright (c) 2000-2004, 2010, 2011, 2017, 2018 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 * November 9, 2000 Allan Nathanson <ajn@apple.com> 31 * - initial revision 32 */ 33 34#include "scutil.h" 35#include "cache.h" 36#include "session.h" 37#include "notifications.h" 38 39 40static void 41reconnected(SCDynamicStoreRef store, void *info) 42{ 43#pragma unused(store) 44#pragma unused(info) 45 SCPrint(TRUE, stdout, CFSTR("SCDynamicStore server restarted, session reconnected\n")); 46 return; 47} 48 49 50__private_extern__ 51void 52do_open(int argc, char **argv) 53{ 54#pragma unused(argv) 55 if (store) { 56 CFRelease(store); 57 CFRelease(watchedKeys); 58 CFRelease(watchedPatterns); 59 } 60 61 if (argc < 1) { 62 store = SCDynamicStoreCreate(NULL, CFSTR("scutil"), storeCallback, NULL); 63 } else { 64 CFMutableDictionaryRef options; 65 66 options = CFDictionaryCreateMutable(NULL, 67 0, 68 &kCFTypeDictionaryKeyCallBacks, 69 &kCFTypeDictionaryValueCallBacks); 70 CFDictionarySetValue(options, kSCDynamicStoreUseSessionKeys, kCFBooleanTrue); 71 store = SCDynamicStoreCreateWithOptions(NULL, 72 CFSTR("scutil"), 73 options, 74 storeCallback, 75 NULL); 76 CFRelease(options); 77 } 78 if (store == NULL) { 79 SCPrint(TRUE, stdout, CFSTR(" %s\n"), SCErrorString(SCError())); 80 return; 81 } 82 83 (void) SCDynamicStoreSetDisconnectCallBack(store, reconnected); 84 85 watchedKeys = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks); 86 watchedPatterns = CFArrayCreateMutable(NULL, 0, &kCFTypeArrayCallBacks); 87 88 _SCDynamicStoreCacheClose(store); 89 90 return; 91} 92 93 94__private_extern__ 95void 96do_close(int argc, char **argv) 97{ 98#pragma unused(argc) 99#pragma unused(argv) 100 if (notifyRls != NULL) { 101 if (doDispatch) { 102 (void) SCDynamicStoreSetDispatchQueue(store, NULL); 103 } else { 104 CFRunLoopSourceInvalidate(notifyRls); 105 CFRelease(notifyRls); 106 } 107 notifyRls = NULL; 108 } 109 110 if (notifyRl != NULL) { 111 CFRunLoopStop(notifyRl); 112 notifyRl = NULL; 113 } 114 115 if (store != NULL) { 116 CFRelease(store); 117 store = NULL; 118 CFRelease(watchedKeys); 119 watchedKeys = NULL; 120 CFRelease(watchedPatterns); 121 watchedPatterns = NULL; 122 } 123 124 _SCDynamicStoreCacheClose(store); 125 126 return; 127}