Mercurial > cpython-lru_cache-weakref
annotate Mac/Modules/_scproxy.c @ 58765:2ba7677bfa95 legacy-trunk
testCopysign was defined twice in test_math; combine the definitions
| author | Mark Dickinson <dickinsm@gmail.com> |
|---|---|
| date | Sat, 06 Feb 2010 23:11:25 +0000 |
| parents | 1db6ee9d7be7 |
| children | 725be8f9418b |
| rev | line source |
|---|---|
|
56141
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
1 /* |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
2 * Helper method for urllib to fetch the proxy configuration settings |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
3 * using the SystemConfiguration framework. |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
4 */ |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
5 #include <Python.h> |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
6 #include <SystemConfiguration/SystemConfiguration.h> |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
7 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
8 static int32_t |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
9 cfnum_to_int32(CFNumberRef num) |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
10 { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
11 int32_t result; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
12 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
13 CFNumberGetValue(num, kCFNumberSInt32Type, &result); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
14 return result; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
15 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
16 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
17 static PyObject* |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
18 cfstring_to_pystring(CFStringRef ref) |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
19 { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
20 const char* s; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
21 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
22 s = CFStringGetCStringPtr(ref, kCFStringEncodingUTF8); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
23 if (s) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
24 return PyString_FromString(s); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
25 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
26 } else { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
27 CFIndex len = CFStringGetLength(ref); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
28 Boolean ok; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
29 PyObject* result; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
30 result = PyString_FromStringAndSize(NULL, len*4); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
31 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
32 ok = CFStringGetCString(ref, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
33 PyString_AS_STRING(result), |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
34 PyString_GET_SIZE(result), |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
35 kCFStringEncodingUTF8); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
36 if (!ok) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
37 Py_DECREF(result); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
38 return NULL; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
39 } else { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
40 _PyString_Resize(&result, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
41 strlen(PyString_AS_STRING(result))); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
42 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
43 return result; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
44 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
45 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
46 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
47 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
48 static PyObject* |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
49 get_proxy_settings(PyObject* mod __attribute__((__unused__))) |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
50 { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
51 CFDictionaryRef proxyDict = NULL; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
52 CFNumberRef aNum = NULL; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
53 CFArrayRef anArray = NULL; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
54 PyObject* result = NULL; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
55 PyObject* v; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
56 int r; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
57 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
58 proxyDict = SCDynamicStoreCopyProxies(NULL); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
59 if (!proxyDict) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
60 Py_INCREF(Py_None); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
61 return Py_None; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
62 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
63 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
64 result = PyDict_New(); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
65 if (result == NULL) goto error; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
66 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
67 aNum = CFDictionaryGetValue(proxyDict, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
68 kSCPropNetProxiesExcludeSimpleHostnames); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
69 if (aNum == NULL) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
70 v = PyBool_FromLong(0); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
71 } else { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
72 v = PyBool_FromLong(cfnum_to_int32(aNum)); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
73 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
74 if (v == NULL) goto error; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
75 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
76 r = PyDict_SetItemString(result, "exclude_simple", v); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
77 Py_DECREF(v); v = NULL; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
78 if (r == -1) goto error; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
79 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
80 anArray = CFDictionaryGetValue(proxyDict, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
81 kSCPropNetProxiesExceptionsList); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
82 if (anArray != NULL) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
83 CFIndex len = CFArrayGetCount(anArray); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
84 CFIndex i; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
85 v = PyTuple_New(len); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
86 if (v == NULL) goto error; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
87 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
88 r = PyDict_SetItemString(result, "exceptions", v); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
89 Py_DECREF(v); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
90 if (r == -1) goto error; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
91 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
92 for (i = 0; i < len; i++) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
93 CFStringRef aString = NULL; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
94 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
95 aString = CFArrayGetValueAtIndex(anArray, i); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
96 if (aString == NULL) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
97 PyTuple_SetItem(v, i, Py_None); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
98 Py_INCREF(Py_None); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
99 } else { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
100 PyObject* t = cfstring_to_pystring(aString); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
101 if (!t) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
102 PyTuple_SetItem(v, i, Py_None); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
103 Py_INCREF(Py_None); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
104 } else { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
105 PyTuple_SetItem(v, i, t); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
106 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
107 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
108 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
109 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
110 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
111 CFRelease(proxyDict); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
112 return result; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
113 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
114 error: |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
115 if (proxyDict) CFRelease(proxyDict); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
116 Py_XDECREF(result); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
117 return NULL; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
118 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
119 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
120 static int |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
121 set_proxy(PyObject* proxies, char* proto, CFDictionaryRef proxyDict, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
122 CFStringRef enabledKey, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
123 CFStringRef hostKey, CFStringRef portKey) |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
124 { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
125 CFNumberRef aNum; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
126 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
127 aNum = CFDictionaryGetValue(proxyDict, enabledKey); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
128 if (aNum && cfnum_to_int32(aNum)) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
129 CFStringRef hostString; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
130 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
131 hostString = CFDictionaryGetValue(proxyDict, hostKey); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
132 aNum = CFDictionaryGetValue(proxyDict, portKey); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
133 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
134 if (hostString) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
135 int r; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
136 PyObject* h = cfstring_to_pystring(hostString); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
137 PyObject* v; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
138 if (h) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
139 if (aNum) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
140 int32_t port = cfnum_to_int32(aNum); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
141 v = PyString_FromFormat("http://%s:%ld", |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
142 PyString_AS_STRING(h), |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
143 (long)port); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
144 } else { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
145 v = PyString_FromFormat("http://%s", |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
146 PyString_AS_STRING(h)); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
147 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
148 Py_DECREF(h); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
149 if (!v) return -1; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
150 r = PyDict_SetItemString(proxies, proto, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
151 v); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
152 Py_DECREF(v); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
153 return r; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
154 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
155 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
156 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
157 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
158 return 0; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
159 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
160 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
161 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
162 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
163 static PyObject* |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
164 get_proxies(PyObject* mod __attribute__((__unused__))) |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
165 { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
166 PyObject* result = NULL; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
167 int r; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
168 CFDictionaryRef proxyDict = NULL; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
169 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
170 proxyDict = SCDynamicStoreCopyProxies(NULL); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
171 if (proxyDict == NULL) { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
172 return PyDict_New(); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
173 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
174 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
175 result = PyDict_New(); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
176 if (result == NULL) goto error; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
177 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
178 r = set_proxy(result, "http", proxyDict, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
179 kSCPropNetProxiesHTTPEnable, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
180 kSCPropNetProxiesHTTPProxy, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
181 kSCPropNetProxiesHTTPPort); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
182 if (r == -1) goto error; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
183 r = set_proxy(result, "https", proxyDict, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
184 kSCPropNetProxiesHTTPSEnable, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
185 kSCPropNetProxiesHTTPSProxy, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
186 kSCPropNetProxiesHTTPSPort); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
187 if (r == -1) goto error; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
188 r = set_proxy(result, "ftp", proxyDict, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
189 kSCPropNetProxiesFTPEnable, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
190 kSCPropNetProxiesFTPProxy, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
191 kSCPropNetProxiesFTPPort); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
192 if (r == -1) goto error; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
193 r = set_proxy(result, "gopher", proxyDict, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
194 kSCPropNetProxiesGopherEnable, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
195 kSCPropNetProxiesGopherProxy, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
196 kSCPropNetProxiesGopherPort); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
197 if (r == -1) goto error; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
198 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
199 CFRelease(proxyDict); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
200 return result; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
201 error: |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
202 if (proxyDict) CFRelease(proxyDict); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
203 Py_XDECREF(result); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
204 return NULL; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
205 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
206 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
207 static PyMethodDef mod_methods[] = { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
208 { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
209 "_get_proxy_settings", |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
210 (PyCFunction)get_proxy_settings, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
211 METH_NOARGS, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
212 NULL, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
213 }, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
214 { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
215 "_get_proxies", |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
216 (PyCFunction)get_proxies, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
217 METH_NOARGS, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
218 NULL, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
219 }, |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
220 { 0, 0, 0, 0 } |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
221 }; |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
222 |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
223 void init_scproxy(void) |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
224 { |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
225 (void)Py_InitModule4("_scproxy", mod_methods, NULL, NULL, PYTHON_API_VERSION); |
|
1db6ee9d7be7
r74963 didn't include the merger of _scproxy.c
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
diff
changeset
|
226 } |
