this repo has no description
at fixPythonPipStalling 183 lines 7.3 kB view raw
1#include <DiskArbitration/DiskArbitration.h> 2#include <stddef.h> 3#include <string.h> 4#include <CoreFoundation/CFRuntime.h> 5#include <CoreFoundation/CFBase.h> 6#include <CoreFoundation/CFURL.h> 7#include <CoreFoundation/CFDictionary.h> 8#include <CoreFoundation/CoreFoundation.h> 9 10#define CONST_STRING_DECL(name, value) const CFStringRef name = CFSTR(value); 11 12CONST_STRING_DECL(kDADiskDescriptionVolumeKindKey, "kDADiskDescriptionVolumeKindKey"); 13CONST_STRING_DECL(kDADiskDescriptionVolumeMountableKey, "kDADiskDescriptionVolumeMountableKey"); 14CONST_STRING_DECL(kDADiskDescriptionVolumeNameKey, "kDADiskDescriptionVolumeNameKey"); 15CONST_STRING_DECL(kDADiskDescriptionVolumeNetworkKey, "kDADiskDescriptionVolumeNetworkKey"); 16CONST_STRING_DECL(kDADiskDescriptionVolumePathKey, "kDADiskDescriptionVolumePathKey"); 17CONST_STRING_DECL(kDADiskDescriptionVolumeUUIDKey, "kDADiskDescriptionVolumeUUIDKey"); 18 19CONST_STRING_DECL(kDADiskDescriptionMediaBlockSizeKey, "kDADiskDescriptionMediaBlockSizeKey"); 20CONST_STRING_DECL(kDADiskDescriptionMediaBSDMajorKey, "kDADiskDescriptionMediaBSDMajorKey"); 21CONST_STRING_DECL(kDADiskDescriptionMediaBSDMinorKey, "kDADiskDescriptionMediaBSDMinorKey"); 22CONST_STRING_DECL(kDADiskDescriptionMediaBSDNameKey, "kDADiskDescriptionMediaBSDNameKey"); 23CONST_STRING_DECL(kDADiskDescriptionMediaBSDUnitKey, "kDADiskDescriptionMediaBSDUnitKey"); 24CONST_STRING_DECL(kDADiskDescriptionMediaContentKey, "kDADiskDescriptionMediaContentKey"); 25CONST_STRING_DECL(kDADiskDescriptionMediaEjectableKey, "kDADiskDescriptionMediaEjectableKey"); 26CONST_STRING_DECL(kDADiskDescriptionMediaIconKey, "kDADiskDescriptionMediaIconKey"); 27CONST_STRING_DECL(kDADiskDescriptionMediaKindKey, "kDADiskDescriptionMediaKindKey"); 28CONST_STRING_DECL(kDADiskDescriptionMediaLeafKey, "kDADiskDescriptionMediaLeafKey"); 29CONST_STRING_DECL(kDADiskDescriptionMediaNameKey, "kDADiskDescriptionMediaNameKey"); 30CONST_STRING_DECL(kDADiskDescriptionMediaPathKey, "kDADiskDescriptionMediaPathKey"); 31CONST_STRING_DECL(kDADiskDescriptionMediaRemovableKey, "kDADiskDescriptionMediaRemovableKey"); 32CONST_STRING_DECL(kDADiskDescriptionMediaSizeKey, "kDADiskDescriptionMediaSizeKey"); 33CONST_STRING_DECL(kDADiskDescriptionMediaTypeKey, "kDADiskDescriptionMediaTypeKey"); 34CONST_STRING_DECL(kDADiskDescriptionMediaUUIDKey, "kDADiskDescriptionMediaUUIDKey"); 35CONST_STRING_DECL(kDADiskDescriptionMediaWholeKey, "kDADiskDescriptionMediaWholeKey"); 36CONST_STRING_DECL(kDADiskDescriptionMediaWritableKey, "kDADiskDescriptionMediaWritableKey"); 37CONST_STRING_DECL(kDADiskDescriptionMediaEncryptedKey, "kDADiskDescriptionMediaEncryptedKey"); 38CONST_STRING_DECL(kDADiskDescriptionMediaEncryptionDetailKey, "kDADiskDescriptionMediaEncryptionDetailKey"); 39 40CONST_STRING_DECL(kDADiskDescriptionDeviceGUIDKey, "kDADiskDescriptionDeviceGUIDKey"); 41CONST_STRING_DECL(kDADiskDescriptionDeviceInternalKey, "kDADiskDescriptionDeviceInternalKey"); 42CONST_STRING_DECL(kDADiskDescriptionDeviceModelKey, "kDADiskDescriptionDeviceModelKey"); 43CONST_STRING_DECL(kDADiskDescriptionDevicePathKey, "kDADiskDescriptionDevicePathKey"); 44CONST_STRING_DECL(kDADiskDescriptionDeviceProtocolKey, "kDADiskDescriptionDeviceProtocolKey"); 45CONST_STRING_DECL(kDADiskDescriptionDeviceRevisionKey, "kDADiskDescriptionDeviceRevisionKey"); 46CONST_STRING_DECL(kDADiskDescriptionDeviceUnitKey, "kDADiskDescriptionDeviceUnitKey"); 47CONST_STRING_DECL(kDADiskDescriptionDeviceVendorKey, "kDADiskDescriptionDeviceVendorKey"); 48CONST_STRING_DECL(kDADiskDescriptionDeviceTDMLockedKey, "kDADiskDescriptionDeviceTDMLockedKey"); 49 50CONST_STRING_DECL(kDADiskDescriptionBusNameKey, "kDADiskDescriptionBusNameKey"); 51CONST_STRING_DECL(kDADiskDescriptionBusPathKey, "kDADiskDescriptionBusPathKey"); 52 53struct __DADisk 54{ 55 CFRuntimeBase _parent; 56 DASessionRef session; 57 CFStringRef path; 58}; 59 60static CFTypeID _kDADiskTypeID = 0; 61static void DADiskFinalize(CFTypeRef cf); 62static Boolean DADiskEqual(CFTypeRef cf1, CFTypeRef cf2); 63static CFHashCode DADiskHash(CFTypeRef cf); 64static DADiskRef DADiskCreateCopy (CFAllocatorRef allocator, DADiskRef disk); 65 66static CFRuntimeClass DADiskClass = { 67 0, 68 "DADisk", 69 NULL, 70 (CFTypeRef (*)(CFAllocatorRef, CFTypeRef)) DADiskCreateCopy, 71 DADiskFinalize, 72 DADiskEqual, 73 DADiskHash, 74 NULL, 75 NULL 76}; 77 78__attribute__((constructor)) 79void 80DADiskInitialize (void) 81{ 82 _kDADiskTypeID = _CFRuntimeRegisterClass (&DADiskClass); 83} 84 85#define DADISK_SIZE sizeof(struct __DADisk) - sizeof(CFRuntimeBase) 86 87static void 88DADiskFinalize (CFTypeRef cf) 89{ 90 DADiskRef disk = (DADiskRef) cf; 91 CFRelease(disk->session); 92 CFRelease(disk->path); 93} 94 95static Boolean 96DADiskEqual (CFTypeRef cf1, CFTypeRef cf2) 97{ 98 DADiskRef d1 = (DADiskRef) cf1; 99 DADiskRef d2 = (DADiskRef) cf2; 100 return CFStringCompare(d1->path, d2->path, 0) == kCFCompareEqualTo; 101} 102 103static CFHashCode 104DADiskHash (CFTypeRef cf) 105{ 106 return CFHash(((DADiskRef) cf)->path); 107} 108 109static DADiskRef 110DADiskCreateCopy (CFAllocatorRef allocator, DADiskRef disk) 111{ 112 CFStringRef path; 113 DADiskRef new; 114 115 new = (DADiskRef) _CFRuntimeCreateInstance (allocator, _kDADiskTypeID, 116 DADISK_SIZE, 0); 117 new->path = (CFStringRef) CFRetain(disk->path); 118 new->session = (DASessionRef) CFRetain(disk->session); 119 120 return new; 121} 122 123CFTypeID DADiskGetTypeID(void) 124{ 125 return _kDADiskTypeID; 126} 127 128DADiskRef DADiskCreateFromBSDName(CFAllocatorRef allocator, 129 DASessionRef session, const char* name) 130{ 131 CFStringRef path; 132 DADiskRef new; 133 134 path = CFStringCreateWithCString(allocator, name, kCFStringEncodingUTF8); 135 136 new = (DADiskRef) _CFRuntimeCreateInstance (allocator, _kDADiskTypeID, 137 DADISK_SIZE, 0); 138 new->path = path; 139 new->session = (DASessionRef) CFRetain(session); 140 141 return new; 142} 143 144DADiskRef DADiskCreateFromIOMedia(CFAllocatorRef allocator, 145 DASessionRef session, io_service_t media) 146{ 147 return DADiskCreateFromBSDName(allocator, session, "/dummy"); 148} 149 150DADiskRef DADiskCreateFromVolumePath(CFAllocatorRef allocator, 151 DASessionRef session, CFURLRef url) 152{ 153 CFStringRef path; 154 DADiskRef new; 155 156 new = (DADiskRef) _CFRuntimeCreateInstance (allocator, _kDADiskTypeID, 157 DADISK_SIZE, 0); 158 new->path = (CFStringRef) CFRetain(CFURLGetString(url)); 159 new->session = (DASessionRef) CFRetain(session); 160 161 return new; 162} 163 164const char* DADiskGetBSDName(DADiskRef disk) 165{ 166 return disk->path; 167} 168 169io_service_t DADiskCopyIOMedia(DADiskRef disk) 170{ 171 return 0; 172} 173 174CFDictionaryRef DADiskCopyDescription(DADiskRef disk) 175{ 176 return CFDictionaryCreate(NULL, NULL, NULL, 0, 177 &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); 178} 179 180DADiskRef DADiskCopyWholeDisk(DADiskRef disk) 181{ 182 return (DADiskRef) CFRetain(disk); 183}