def __init__(self, ffi, filename, flags): with rffi.scoped_str2charp(filename) as ll_libname: if filename is None: filename = "<None>" try: handle = dlopen(ll_libname, flags) except DLOpenError, e: raise wrap_dlopenerror(ffi.space, e, filename)
def dlopen_w(space, w_filename, flags): from pypy.module._cffi_backend.cdataobj import W_CData from pypy.module._cffi_backend import ctypeptr autoclose = True if isinstance(w_filename, W_CData): # 'flags' ignored in this case w_ctype = w_filename.ctype if (not isinstance(w_ctype, ctypeptr.W_CTypePointer) or not w_ctype.is_void_ptr): raise oefmt( space.w_TypeError, "dlopen() takes a file name or 'void *' handle, not '%s'", w_ctype.name) handle = w_filename.unsafe_escaping_ptr() if not handle: raise oefmt(space.w_RuntimeError, "cannot call dlopen(NULL)") fname = w_ctype.extra_repr(handle) handle = rffi.cast(DLLHANDLE, handle) autoclose = False # elif WIN32 and space.isinstance_w(w_filename, space.w_unicode): fname = space.text_w(space.repr(w_filename)) utf8_name = space.utf8_w(w_filename) uni_len = space.len_w(w_filename) with rffi.scoped_utf82wcharp(utf8_name, uni_len) as ll_libname: try: handle = dlopenU(ll_libname, flags) except DLOpenError as e: raise wrap_dlopenerror(space, e, fname) else: if space.is_none(w_filename): fname = None else: fname = space.fsencode_w(w_filename) with rffi.scoped_str2charp(fname) as ll_libname: if fname is None: fname = "<None>" try: handle = dlopen(ll_libname, flags) except DLOpenError as e: raise wrap_dlopenerror(space, e, fname) return fname, handle, autoclose
def __init__(self, space, name, mode): self.flags = libffi.FUNCFLAG_CDECL self.space = space if name is None: self.name = "<None>" else: self.name = name try: self.cdll = libffi.CDLL(name, mode) except DLOpenError, e: raise wrap_dlopenerror(space, e, self.name)
def __init__(self, ffi, filename, flags): with rffi.scoped_str2charp(filename) as ll_libname: if filename is None: filename = "<None>" try: handle = dlopen(ll_libname, flags) except DLOpenError as e: raise wrap_dlopenerror(ffi.space, e, filename) W_LibObject.__init__(self, ffi, filename) self.libhandle = handle self.register_finalizer(ffi.space)
def __init__(self, space, filename, flags): self.space = space with rffi.scoped_str2charp(filename) as ll_libname: if filename is None: filename = "<None>" try: self.handle = dlopen(ll_libname, flags) except DLOpenError as e: raise wrap_dlopenerror(space, e, filename) self.name = filename self.register_finalizer(space)
def dlopen_w(space, w_filename, flags): if WIN32 and space.isinstance_w(w_filename, space.w_unicode): fname = space.text_w(space.repr(w_filename)) unicode_name = space.unicode_w(w_filename) with rffi.scoped_unicode2wcharp(unicode_name) as ll_libname: try: handle = dlopenU(ll_libname, flags) except DLOpenError as e: raise wrap_dlopenerror(space, e, fname) else: if space.is_none(w_filename): fname = None else: fname = space.fsencode_w(w_filename) with rffi.scoped_str2charp(fname) as ll_libname: if fname is None: fname = "<None>" try: handle = dlopen(ll_libname, flags) except DLOpenError as e: raise wrap_dlopenerror(space, e, fname) return fname, handle