Welcome, guest | Sign In | My Account | Store | Cart
import ctypes

class CDLL_errno(ctypes.CDLL):

   
class _FuncPtr(ctypes._CFuncPtr):
        _flags_
= ctypes._FUNCFLAG_CDECL | ctypes._FUNCFLAG_USE_ERRNO
        _restype_
= ctypes.c_int

       
def __call__(self, *args):
            ctypes
.set_errno(0)
           
try:
               
return ctypes._CFuncPtr.__call__(self, *args)
           
finally:
                errno
= ctypes.get_errno()
               
if errno:
                   
import os
                   
raise IOError(errno, os.strerror(errno))

   
def __init__(self, *args, **kw):
        ctypes
.CDLL.__init__(self, *args, **kw)
       
del self._FuncPtr

History