[pypy-svn] r42663 - in pypy/dist/pypy: module/select rlib
afa at codespeak.net
afa at codespeak.net
Fri May 4 11:03:17 CEST 2007
Author: afa
Date: Fri May 4 11:03:16 2007
New Revision: 42663
Modified:
pypy/dist/pypy/module/select/interp_select.py
pypy/dist/pypy/rlib/_rsocket_ctypes.py
Log:
The select module now correctly translates on win32.
It even seem to work.
Modified: pypy/dist/pypy/module/select/interp_select.py
==============================================================================
--- pypy/dist/pypy/module/select/interp_select.py (original)
+++ pypy/dist/pypy/module/select/interp_select.py Fri May 4 11:03:16 2007
@@ -143,11 +143,10 @@
return space.newlist([])
if ret < 0: # WSA_WAIT_FAILED is unsigned...
- from pypy.rlib._rsocket_ctypes import socket_strerror, geterrno
- errno = geterrno()
+ errno = _c.geterrno()
w_module = space.getbuiltinmodule('select')
w_errortype = space.getattr(w_module, space.wrap('error'))
- message = socket_strerror(errno)
+ message = _c.socket_strerror(errno)
raise OperationError(w_errortype,
space.newtuple([space.wrap(errno),
space.wrap(message)]))
Modified: pypy/dist/pypy/rlib/_rsocket_ctypes.py
==============================================================================
--- pypy/dist/pypy/rlib/_rsocket_ctypes.py (original)
+++ pypy/dist/pypy/rlib/_rsocket_ctypes.py Fri May 4 11:03:16 2007
@@ -140,6 +140,8 @@
FD_READ FD_WRITE FD_ACCEPT FD_CONNECT FD_CLOSE
WSA_WAIT_TIMEOUT WSA_WAIT_FAILED INFINITE
FD_CONNECT_BIT FD_CLOSE_BIT
+WSA_IO_PENDING WSA_IO_INCOMPLETE WSA_INVALID_HANDLE
+WSA_INVALID_PARAMETER WSA_NOT_ENOUGH_MEMORY WSA_OPERATION_ABORTED
'''.split()
for name in constant_names:
@@ -261,10 +263,11 @@
('revents', c_short)])
if _MS_WINDOWS:
CConfig.WSAEVENT = ctypes_platform.SimpleType('WSAEVENT', c_void_p)
- CConfig.WSANETWORKEVENTS = ctypes_platform.Struct('WSANETWORKEVENTS',
- [('lNetworkEvents', c_long),
- ('iErrorCode', c_int * 10), #FD_MAX_EVENTS
- ])
+ CConfig.WSANETWORKEVENTS = ctypes_platform.Struct(
+ 'struct _WSANETWORKEVENTS',
+ [('lNetworkEvents', c_long),
+ ('iErrorCode', c_int * 10), #FD_MAX_EVENTS
+ ])
CConfig.timeval = ctypes_platform.Struct('struct timeval',
@@ -685,8 +688,18 @@
# errno.WSANO_RECOVERY: "Unexpected server error encountered",
# errno.WSANO_DATA: "Valid name without requested data",
# errno.WSANO_ADDRESS: "No address, look for MX record",
+
+ # select() errors
+ WSA_IO_PENDING: "WSA_IO_PENDING",
+ WSA_IO_INCOMPLETE: "WSA_IO_INCOMPLETE",
+ WSA_INVALID_HANDLE: "WSA_INVALID_HANDLE",
+ WSA_INVALID_PARAMETER: "WSA_INVALID_PARAMETER",
+ WSA_NOT_ENOUGH_MEMORY: "WSA_NOT_ENOUGH_MEMORY",
+ WSA_OPERATION_ABORTED: "WSA_OPERATION_ABORTED",
}
+ assert len(WIN32_ERROR_MESSAGES) == 53 # detect duplicates
+
def socket_strerror(errno):
return WIN32_ERROR_MESSAGES.get(errno, "winsock error %d" % errno)
else:
More information about the Pypy-commit
mailing list