const char* KEYFILE = "/System/Library/Frameworks/SystemConfiguration.framework/Headers/SCSchemaDefinitions.h";
+Boolean
+printCFTypeRef(CFTypeRef value);
+
Boolean
getDictValue(CFTypeRef* value, CFStringRef key)
return FALSE;
}
+Boolean
+printArray(CFArrayRef arrayRef)
+{
+ assert(arrayRef != NULL);
+
+ int length = CFArrayGetCount(arrayRef);
+ for(int i = 0; i < length; ++i) {
+ if(!printCFTypeRef(CFArrayGetValueAtIndex(arrayRef, i))) {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+Boolean
+printCFTypeRef(CFTypeRef value)
+{
+ if(value == NULL) {
+ return FALSE;
+ }
+ else if(CFStringGetTypeID() == CFGetTypeID(value)) {
+ return printString((CFStringRef)value);
+ }
+ else if(CFNumberGetTypeID() == CFGetTypeID(value)) {
+ return printNumber((CFNumberRef)value);
+ }
+ else if(CFArrayGetTypeID() == CFGetTypeID(value)) {
+ return printArray((CFArrayRef)value);
+ }
+ else {
+ return FALSE;
+ }
+}
+
CFStringRef
createCFString(const char* str)
{
}
- CFStringRef keyRef = createCFString(argv[1]);
+ CFStringRef keyRef = createCFString(key);
if(keyRef == NULL) {
fprintf(stderr, "Fatal error: Couldn't create CFStringRef from arg2\n");
return 1;
}
return 0;
}
- else if(CFStringGetTypeID() == CFGetTypeID(valueRef)) {
- printString((CFStringRef)valueRef);
- }
- else if(CFNumberGetTypeID() == CFGetTypeID(valueRef)) {
- printNumber((CFNumberRef)valueRef);
- }
- else {
+ if(!printCFTypeRef(valueRef)) {
fprintf(stderr, "Fatal error: Unsupported value type in dictionary\n");
CFRelease(valueRef);
return 1;