[pypy-svn] r76953 - pypy/branch/rsocket-improvements/pypy/rlib
fijal at codespeak.net
fijal at codespeak.net
Wed Sep 8 21:00:46 CEST 2010
Author: fijal
Date: Wed Sep 8 21:00:44 2010
New Revision: 76953
Modified:
pypy/branch/rsocket-improvements/pypy/rlib/rsocket.py
Log:
Fix translation by handling conversion char* -> str by hand
Modified: pypy/branch/rsocket-improvements/pypy/rlib/rsocket.py
==============================================================================
--- pypy/branch/rsocket-improvements/pypy/rlib/rsocket.py (original)
+++ pypy/branch/rsocket-improvements/pypy/rlib/rsocket.py Wed Sep 8 21:00:44 2010
@@ -210,7 +210,13 @@
rffi.setintfield(p, 'c_ifr_ifindex',
rffi.getintfield(a, 'c_sll_ifindex'))
if (_c.ioctl(fd, _c.SIOCGIFNAME, p) == 0):
- ifname = rffi.charp2str(p.c_ifr_name)
+ # eh, the iface name is a constant length array
+ i = 0
+ d = []
+ while p.c_ifr_name[i] != '\x00' and i < len(p.c_ifr_name):
+ d.append(p.c_ifr_name[i])
+ i += 1
+ ifname = ''.join(d)
else:
ifname = ""
lltype.free(p, flavor='raw')
@@ -238,7 +244,10 @@
def get_addr(self):
a = self.lock(_c.sockaddr_ll)
lgt = rffi.getintfield(a, 'c_sll_halen')
- res = rffi.charpsize2str(a.c_sll_addr, lgt)
+ d = []
+ for i in range(lgt):
+ d.append(a.c_sll_addr[i])
+ res = "".join(d)
self.unlock()
return res
More information about the Pypy-commit
mailing list