author | Yiteng Zhang <yiteng.zhang@oracle.com> |
Tue, 26 Jan 2016 13:08:18 -0800 | |
changeset 5341 | acafdc8d7dfc |
parent 1907 | 446472de62e9 |
child 5457 | 8f76366ca895 |
permissions | -rw-r--r-- |
1907 | 1 |
This patch is for Python 3 compatibility. It has not been submitted upstream, |
2 |
as the community appears to have gone dormant. |
|
3 |
||
4 |
--- pybonjour-1.1.1/pybonjour.py-orig 2013-02-13 04:39:03.391680773 -0600 |
|
5 |
+++ pybonjour-1.1.1/pybonjour.py 2013-02-13 04:39:15.452208372 -0600 |
|
5341
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
6 |
@@ -63,1 +63,4 @@ |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
7 |
+if sys.version[:3] > '3': |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
8 |
+ unicode = str |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
9 |
+ basestring = str |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
10 |
|
1907 | 11 |
@@ -804,7 +804,7 @@ def _create_function_bindings(): |
12 |
} |
|
13 |
||
14 |
||
15 |
- for name, (restype, errcheck, outparam, argtypes) in specs.iteritems(): |
|
16 |
+ for name, (restype, errcheck, outparam, argtypes) in specs.items(): |
|
17 |
prototype = _CFunc(restype, *argtypes) |
|
18 |
||
19 |
paramflags = [1] * len(argtypes) |
|
5341
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
20 |
@@ -848,14 +848,16 @@ |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
21 |
|
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
22 |
def _string_to_length_and_void_p(string): |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
23 |
if isinstance(string, TXTRecord): |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
24 |
- string = str(string) |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
25 |
+ string = str(string).encode('utf-8') |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
26 |
+ elif isinstance(string, str): |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
27 |
+ string = string.encode('utf-8') |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
28 |
void_p = ctypes.cast(ctypes.c_char_p(string), ctypes.c_void_p) |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
29 |
return len(string), void_p |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
30 |
|
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
31 |
|
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
32 |
def _length_and_void_p_to_string(length, void_p): |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
33 |
char_p = ctypes.cast(void_p, ctypes.POINTER(ctypes.c_char)) |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
34 |
- return ''.join(char_p[i] for i in xrange(length)) |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
35 |
+ return ''.join(char_p[i].decode('utf-8') for i in range(length)) |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
36 |
|
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
37 |
|
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
38 |
|
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
39 |
@@ -1942,7 +1942,7 @@ def __init__(self, items={}, strict=True): |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
40 |
self._names = [] |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
41 |
self._items = {} |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
42 |
|
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
43 |
- for name, value in items.iteritems(): |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
44 |
+ for name, value in items.items(): |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
45 |
self[name] = value |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
46 |
|
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
47 |
def __contains__(self, name): |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
48 |
@@ -2023,8 +2023,8 @@ def __setitem__(self, name, value): |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
49 |
|
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
50 |
if value is not None: |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
51 |
- if isinstance(value, unicode): |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
52 |
+ if sys.version[:3] < '3' and isinstance(value, unicode): |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
53 |
value = value.encode('utf-8') |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
54 |
else: |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
55 |
value = str(value) |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
56 |
length += 1 + len(value) |
acafdc8d7dfc
22494009 Python 3 fixes for pybonjour
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
1907
diff
changeset
|
57 |