From abc74a1b59cfe4b1b855f51fab124ddda7c31c75 Mon Sep 17 00:00:00 2001 From: James Bunton Date: Sat, 28 Jul 2007 13:25:58 +1000 Subject: [PATCH] Can now print CFArrays --- sysconfig.c | 48 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/sysconfig.c b/sysconfig.c index be94662..77ad88f 100644 --- a/sysconfig.c +++ b/sysconfig.c @@ -3,6 +3,9 @@ const char* KEYFILE = "/System/Library/Frameworks/SystemConfiguration.framework/Headers/SCSchemaDefinitions.h"; +Boolean +printCFTypeRef(CFTypeRef value); + Boolean getDictValue(CFTypeRef* value, CFStringRef key) @@ -58,6 +61,41 @@ printString(CFStringRef strRef) 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) { @@ -89,7 +127,7 @@ main(int argc, char** argv) } - 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; @@ -107,13 +145,7 @@ main(int argc, char** argv) } 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; -- 2.39.2