]>
code.delx.au - osx-proxyconf/blob - sysconfig.c
d1028b2f08c4aefda826756601dc90ba3814bc3d
1 #include <CoreFoundation/CoreFoundation.h>
2 #include <SystemConfiguration/SCDynamicStoreCopySpecific.h>
4 const char* KEYFILE
= "/System/Library/Frameworks/SystemConfiguration.framework/Headers/SCSchemaDefinitions.h";
8 getNumberValue(int* numberVal
, const void* numberKey
)
10 assert(numberVal
!= NULL
);
11 assert(numberKey
!= NULL
);
14 CFDictionaryRef dictRef
;
15 CFNumberRef numberRef
;
18 dictRef
= SCDynamicStoreCopyProxies((SCDynamicStoreRef
)NULL
);
19 result
= (dictRef
!= NULL
);
21 numberRef
= (CFNumberRef
)CFDictionaryGetValue(dictRef
, numberKey
);
22 result
= (numberRef
!= NULL
&&
23 CFGetTypeID(numberRef
) == CFNumberGetTypeID());
26 result
= CFNumberGetValue(numberRef
, kCFNumberIntType
, numberVal
);
40 getStringValue(char* strVal
, size_t strSize
, const void* strKey
)
42 assert(strVal
!= NULL
);
43 assert(strKey
!= NULL
);
46 CFDictionaryRef dictRef
;
50 dictRef
= SCDynamicStoreCopyProxies((SCDynamicStoreRef
)NULL
);
51 result
= (dictRef
!= NULL
);
54 strRef
= (CFStringRef
)CFDictionaryGetValue(dictRef
, strKey
);
55 result
= (strRef
!= NULL
) &&
56 (CFGetTypeID(strRef
) == CFStringGetTypeID());
59 result
= CFStringGetCString(strRef
, strVal
, (CFIndex
)strSize
,
60 kCFStringEncodingASCII
);
74 createCFString(const char* str
)
76 return CFStringCreateWithCStringNoCopy(NULL
, str
,
77 kCFStringEncodingASCII
,
82 usage(const char* program
)
84 fprintf(stderr
, "Usage: %s (-n NumberKey) | (-s StringKey)\n", program
);
85 fprintf(stderr
, "Look in %s for keys. Eg, HTTPProxy\n\n", KEYFILE
);
89 main(int argc
, char** argv
)
96 CFStringRef keyRef
= createCFString(argv
[2]);
98 fprintf(stderr
, "Fatal error: Couldn't create CFStringRef from arg2\n");
103 if(strcmp("-n", argv
[1]) == 0) {
105 result
= getNumberValue(&var
, keyRef
);
109 } else if(strcmp("-s", argv
[1]) == 0) {
111 result
= getStringValue(str
, 1024, keyRef
);