[pypy-commit] cffi load-from-exe-dir: patch to search exe dir for dll before searching path

matti noreply at buildbot.pypy.org
Mon Apr 8 00:06:36 CEST 2013


Author: matti
Branch: load-from-exe-dir
Changeset: r1243:933f1308f466
Date: 2013-04-08 01:06 +0300
http://bitbucket.org/cffi/cffi/changeset/933f1308f466/

Log:	patch to search exe dir for dll before searching path

diff --git a/cffi/api.py b/cffi/api.py
--- a/cffi/api.py
+++ b/cffi/api.py
@@ -359,10 +359,23 @@
         backendlib = backend.load_library(name, flags)
     except OSError:
         import ctypes.util
-        path = ctypes.util.find_library(name)
-        if path is None:
-            raise OSError("library not found: %r" % (name,))
-        backendlib = backend.load_library(path, flags)
+        backendlib = None
+        if os.name == 'nt':
+            import sys
+            # Allow name in exe location, 
+            # like in ctypes.util.find_library
+            directory = os.path.dirname(sys.executable)
+            if os.path.isfile(os.path.join(directory, name)):
+                backendlib = backend.load_library(name)
+            if not name.lower().endswith('.dll'):
+                tmpname = os.path.join(directory, name + '.dll')
+                if os.path.isfile(tmpname):
+                    backendlib = backend.load_library(name)
+        if not backendlib:            
+            path = ctypes.util.find_library(name)
+            if path is None:
+                raise OSError("library not found: %r" % (name,))
+            backendlib = backend.load_library(path, flags)
     copied_enums = []
     #
     def make_accessor(name):


More information about the pypy-commit mailing list