Beispiel #1
0
    def __init__(self,
                 name,
                 mode=DEFAULT_MODE,
                 handle=None,
                 use_errno=False,
                 use_last_error=False):
        self._name = name
        flags = self._func_flags_
        if use_errno:
            flags |= _FUNCFLAG_USE_ERRNO
        if use_last_error:
            flags |= _FUNCFLAG_USE_LASTERROR
        if _sys.platform.startswith("aix"):
            """When the name contains ".a(" and ends with ")",
               e.g., "libFOO.a(libFOO.so)" - this is taken to be an
               archive(member) syntax for dlopen(), and the mode is adjusted.
               Otherwise, name is presented to dlopen() as a file argument.
            """
            if name and name.endswith(")") and ".a(" in name:
                mode |= (_os.RTLD_MEMBER | _os.RTLD_NOW)

        class _FuncPtr(_CFuncPtr):
            _flags_ = flags
            _restype_ = self._func_restype_

        self._FuncPtr = _FuncPtr

        if handle is None:
            self._handle = _dlopen(self._name, mode)
        else:
            self._handle = handle
Beispiel #2
0
    def __init__(self, name, mode=DEFAULT_MODE, handle=None,
                 use_errno=False,
                 use_last_error=False):
        self._name = name
        flags = self._func_flags_
        if use_errno:
            flags |= _FUNCFLAG_USE_ERRNO
        if use_last_error:
            flags |= _FUNCFLAG_USE_LASTERROR
        if _sys.platform.startswith("aix"):
            """When the name contains ".a(" and ends with ")",
               e.g., "libFOO.a(libFOO.so)" - this is taken to be an
               archive(member) syntax for dlopen(), and the mode is adjusted.
               Otherwise, name is presented to dlopen() as a file argument.
            """
            if name and name.endswith(")") and ".a(" in name:
                mode |= ( _os.RTLD_MEMBER | _os.RTLD_NOW )

        class _FuncPtr(_CFuncPtr):
            _flags_ = flags
            _restype_ = self._func_restype_
        self._FuncPtr = _FuncPtr

        if handle is None:
            self._handle = _dlopen(self._name, mode)
        else:
            self._handle = handle
Beispiel #3
0
            def __init__(self,
                         name,
                         mode=DEFAULT_MODE,
                         handle=None,
                         use_errno=False,
                         use_last_error=False):
                self._name = name
                flags = self._func_flags_
                if use_errno:
                    flags |= _FUNCFLAG_USE_ERRNO
                if use_last_error:
                    flags |= _FUNCFLAG_USE_LASTERROR
                if _sys.platform.startswith('aix'):
                    if name:
                        pass
                if name.endswith(')'):
                    if '.a(' in name:
                        mode |= _os.RTLD_MEMBER | _os.RTLD_NOW

                    class _FuncPtr(_CFuncPtr):
                        _flags_ = flags
                        _restype_ = self._func_restype_

                    self._FuncPtr = _FuncPtr
                    if handle is None:
                        self._handle = _dlopen(self._name, mode)
                    else:
                        self._handle = handle
Beispiel #4
0
    def __init__(self,
                 name,
                 mode=DEFAULT_MODE,
                 handle=None,
                 use_errno=False,
                 use_last_error=False):
        self._name = name
        flags = self._func_flags_
        if use_errno:
            flags |= _FUNCFLAG_USE_ERRNO
        if use_last_error:
            flags |= _FUNCFLAG_USE_LASTERROR

        class _FuncPtr(_CFuncPtr):
            _flags_ = flags
            _restype_ = self._func_restype_

        self._FuncPtr = _FuncPtr

        self._builtin = {}

        if handle is None:
            if isinstance(self._name, dict):
                self._builtin = self._name['symbols']
                self._name = self._name['name']
                self._handle = 0
            else:
                self._handle = _dlopen(self._name, mode)
        else:
            self._handle = handle
Beispiel #5
0
    def __init__(self,
                 name,
                 mode=DEFAULT_MODE,
                 handle=None,
                 use_errno=False,
                 use_last_error=False,
                 winmode=None):
        self._name = name
        flags = self._func_flags_
        if use_errno:
            flags |= _FUNCFLAG_USE_ERRNO
        if use_last_error:
            flags |= _FUNCFLAG_USE_LASTERROR
        if _sys.platform.startswith("aix"):
            """When the name contains ".a(" and ends with ")",
               e.g., "libFOO.a(libFOO.so)" - this is taken to be an
               archive(member) syntax for dlopen(), and the mode is adjusted.
               Otherwise, name is presented to dlopen() as a file argument.
            """
            if name and name.endswith(")") and ".a(" in name:
                mode |= (_os.RTLD_MEMBER | _os.RTLD_NOW)
        if _os.name == "nt":
            if winmode is not None:
                mode = winmode
            else:
                import nt
                mode = nt._LOAD_LIBRARY_SEARCH_DEFAULT_DIRS
                if '/' in name or '\\' in name:
                    self._name = nt._getfullpathname(self._name)
                    mode |= nt._LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR
                # PATH is how DLL lookup has always worked in the past
                # in Python on Windows. IMHO both the above mode flags
                # are not wanted and should have been seen as serious
                # regressions to Python on Windows. We should however
                # propagate any PATH changes that have happened to Python
                # library and that is not yet implemented.
                LOAD_WITH_ALTERED_SEARCH_PATH = 0x00000008
                mode = LOAD_WITH_ALTERED_SEARCH_PATH

        class _FuncPtr(_CFuncPtr):
            _flags_ = flags
            _restype_ = self._func_restype_

        self._FuncPtr = _FuncPtr

        if handle is None:
            self._handle = _dlopen(self._name, mode)
        else:
            self._handle = handle
Beispiel #6
0
    def __init__(self,
                 name,
                 mode=DEFAULT_MODE,
                 handle=None,
                 use_errno=False,
                 use_last_error=False,
                 winmode=None):
        self._name = name
        flags = self._func_flags_
        if use_errno:
            flags |= _FUNCFLAG_USE_ERRNO
        if use_last_error:
            flags |= _FUNCFLAG_USE_LASTERROR
        if _sys.platform.startswith("aix"):
            """When the name contains ".a(" and ends with ")",
               e.g., "libFOO.a(libFOO.so)" - this is taken to be an
               archive(member) syntax for dlopen(), and the mode is adjusted.
               Otherwise, name is presented to dlopen() as a file argument.
            """
            if name and name.endswith(")") and ".a(" in name:
                mode |= (_os.RTLD_MEMBER | _os.RTLD_NOW)
        if _os.name == "nt":
            if winmode is not None:
                mode = winmode
            else:
                import nt
                mode = nt._LOAD_LIBRARY_SEARCH_DEFAULT_DIRS
                if '/' in name or '\\' in name:
                    self._name = nt._getfullpathname(self._name)
                    mode |= nt._LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR

        class _FuncPtr(_CFuncPtr):
            _flags_ = flags
            _restype_ = self._func_restype_

        self._FuncPtr = _FuncPtr

        self._builtin = {}

        if handle is None:
            if isinstance(self._name, dict):
                self._builtin = self._name['symbols']
                self._name = self._name['name']
                self._handle = 0
            else:
                self._handle = _dlopen(self._name, mode)
        else:
            self._handle = handle
Beispiel #7
0
 def __init__(self, name, mode=DEFAULT_MODE, handle=None,
              use_errno=False,
              use_last_error=False):
     self._name = name
     flags = self._func_flags_
     if use_errno:
         flags |= _FUNCFLAG_USE_ERRNO
     if use_last_error:
         flags |= _FUNCFLAG_USE_LASTERROR
     class _FuncPtr(_CFuncPtr):
         _flags_ = flags
         _restype_ = self._func_restype_
     self._FuncPtr = _FuncPtr
     if handle is None:
         self._handle = _dlopen(self._name, mode)
     else:
         self._handle = handle
Beispiel #8
0
 def __init__(self, name, mode=DEFAULT_MODE, handle=None,
              use_errno=False,
              use_last_error=False):
     self._name = name
     flags = self._func_flags_
     if use_errno:
         flags |= _FUNCFLAG_USE_ERRNO
     if use_last_error:
         flags |= _FUNCFLAG_USE_LASTERROR
     class _FuncPtr(_CFuncPtr):
         _flags_ = flags
         _restype_ = self._func_restype_
     self._FuncPtr = _FuncPtr
     if handle is None:
         self._handle = _dlopen(self._name, mode)
     else:
         self._handle = handle
Beispiel #9
0
 def __init__(self, name, mode=DEFAULT_MODE, handle=None):
     self._name = name
     if handle is None:
         self._handle = _dlopen(self._name, mode)
     else:
         self._handle = handle
Beispiel #10
0
 def __init__(self, name, mode=DEFAULT_MODE, handle=None):
     self._name = name
     if handle is None:
         self._handle = _dlopen(self._name, mode)
     else:
         self._handle = handle
Beispiel #11
0
 def __init__(self, name, mode=RTLD_LOCAL, handle=None):
     self._name = name
     if handle is None:
         self._handle = _dlopen(self._name, mode)
     else:
         self._handle = handle
Beispiel #12
0
 def __init__(self, name, mode=RTLD_LOCAL, handle=None):
     self._name = name
     if handle is None:
         self._handle = _dlopen(self._name, mode)
     else:
         self._handle = handle