1/* 2 * Simple test program that lists the Back to My Mac domains on a Mac. 3 * 4 * Compile with: 5 * 6 * clang -o testbtmm -g testbtmm.c -framework SystemConfiguration -framework CoreFoundation 7 */ 8 9#include <stdio.h> 10#include <CoreFoundation/CoreFoundation.h> 11#include <SystemConfiguration/SystemConfiguration.h> 12 13 14/* 15 * 'dnssdAddAlias()' - Add a DNS-SD alias name. 16 */ 17 18static void 19show_domain(const void *key, /* I - Key */ 20 const void *value, /* I - Value (domain) */ 21 void *context) /* I - Unused */ 22{ 23 char valueStr[1024]; /* Domain string */ 24 25 26 (void)key; 27 (void)context; 28 29 if (CFGetTypeID((CFStringRef)value) == CFStringGetTypeID() && 30 CFStringGetCString((CFStringRef)value, valueStr, sizeof(valueStr), 31 kCFStringEncodingUTF8)) 32 printf("Back to My Mac domain: \"%s\"\n", valueStr); 33 else 34 puts("Bad Back to My Mac domain in dynamic store."); 35} 36 37 38int 39main(void) 40{ 41 SCDynamicStoreRef sc; /* Context for dynamic store */ 42 CFDictionaryRef btmm; /* Back-to-My-Mac domains */ 43 44 45 sc = SCDynamicStoreCreate(kCFAllocatorDefault, CFSTR("cups"), NULL, NULL); 46 47 if (!sc) 48 { 49 puts("Unable to open dynamic store."); 50 exit(1); 51 } 52 53 btmm = SCDynamicStoreCopyValue(sc, CFSTR("Setup:/Network/BackToMyMac")); 54 if (btmm && CFGetTypeID(btmm) == CFDictionaryGetTypeID()) 55 { 56 printf("%d Back to My Mac domains.\n", (int)CFDictionaryGetCount(btmm)); 57 CFDictionaryApplyFunction(btmm, show_domain, NULL); 58 } 59 else if (btmm) 60 puts("Bad Back to My Mac data in dynamic store."); 61 else 62 puts("No Back to My Mac domains."); 63 64 return (1); 65} 66