6fba83
From 28f5c64f5443a6d465663a1b737e9fc20b7364d4 Mon Sep 17 00:00:00 2001
1d9dbc
From: Michael Simacek <msimacek@redhat.com>
1d9dbc
Date: Mon, 16 Jan 2017 11:31:32 +0100
6fba83
Subject: [PATCH 2/7] Load system library
1d9dbc
1d9dbc
---
1d9dbc
 src/com/sun/jna/Native.java | 80 ++-----------------------------------
1d9dbc
 1 file changed, 4 insertions(+), 76 deletions(-)
1d9dbc
1d9dbc
diff --git a/src/com/sun/jna/Native.java b/src/com/sun/jna/Native.java
6fba83
index 0cf39fa..603659c 100644
1d9dbc
--- a/src/com/sun/jna/Native.java
1d9dbc
+++ b/src/com/sun/jna/Native.java
1d9dbc
@@ -912,84 +912,12 @@ public final class Native implements Version {
1d9dbc
      * Loads the JNA stub library.
1d9dbc
      * First tries jna.boot.library.path, then the system path, then from the
1d9dbc
      * jar file.
1d9dbc
+    * MODIFIED FROM UPSTREAM - we rip out all sorts of gunk here that is
1d9dbc
+    * unnecessary when JNA is properly installed with the OS.
1d9dbc
      */
1d9dbc
     private static void loadNativeDispatchLibrary() {
1d9dbc
-        if (!Boolean.getBoolean("jna.nounpack")) {
1d9dbc
-            try {
1d9dbc
-                removeTemporaryFiles();
1d9dbc
-            }
1d9dbc
-            catch(IOException e) {
1d9dbc
-                LOG.log(Level.WARNING, "JNA Warning: IOException removing temporary files", e);
1d9dbc
-            }
1d9dbc
-        }
1d9dbc
-
1d9dbc
-        String libName = System.getProperty("jna.boot.library.name", "jnidispatch");
1d9dbc
-        String bootPath = System.getProperty("jna.boot.library.path");
1d9dbc
-        if (bootPath != null) {
1d9dbc
-            // String.split not available in 1.4
1d9dbc
-            StringTokenizer dirs = new StringTokenizer(bootPath, File.pathSeparator);
1d9dbc
-            while (dirs.hasMoreTokens()) {
1d9dbc
-                String dir = dirs.nextToken();
1d9dbc
-                File file = new File(new File(dir), System.mapLibraryName(libName).replace(".dylib", ".jnilib"));
1d9dbc
-                String path = file.getAbsolutePath();
1d9dbc
-                LOG.log(DEBUG_JNA_LOAD_LEVEL, "Looking in {0}", path);
1d9dbc
-                if (file.exists()) {
1d9dbc
-                    try {
1d9dbc
-                        LOG.log(DEBUG_JNA_LOAD_LEVEL, "Trying {0}", path);
1d9dbc
-                        System.setProperty("jnidispatch.path", path);
1d9dbc
-                        System.load(path);
1d9dbc
-                        jnidispatchPath = path;
1d9dbc
-                        LOG.log(DEBUG_JNA_LOAD_LEVEL, "Found jnidispatch at {0}", path);
1d9dbc
-                        return;
1d9dbc
-                    } catch (UnsatisfiedLinkError ex) {
1d9dbc
-                        // Not a problem if already loaded in anoteher class loader
1d9dbc
-                        // Unfortunately we can't distinguish the difference...
1d9dbc
-                        //System.out.println("File found at " + file + " but not loadable: " + ex.getMessage());
1d9dbc
-                    }
1d9dbc
-                }
1d9dbc
-                if (Platform.isMac()) {
1d9dbc
-                    String orig, ext;
1d9dbc
-                    if (path.endsWith("dylib")) {
1d9dbc
-                        orig = "dylib";
1d9dbc
-                        ext = "jnilib";
1d9dbc
-                    } else {
1d9dbc
-                        orig = "jnilib";
1d9dbc
-                        ext = "dylib";
1d9dbc
-                    }
1d9dbc
-                    path = path.substring(0, path.lastIndexOf(orig)) + ext;
1d9dbc
-                    LOG.log(DEBUG_JNA_LOAD_LEVEL, "Looking in {0}", path);
1d9dbc
-                    if (new File(path).exists()) {
1d9dbc
-                        try {
1d9dbc
-                            LOG.log(DEBUG_JNA_LOAD_LEVEL, "Trying {0}", path);
1d9dbc
-                            System.setProperty("jnidispatch.path", path);
1d9dbc
-                            System.load(path);
1d9dbc
-                            jnidispatchPath = path;
1d9dbc
-                            LOG.log(DEBUG_JNA_LOAD_LEVEL, "Found jnidispatch at {0}", path);
1d9dbc
-                            return;
1d9dbc
-                        } catch (UnsatisfiedLinkError ex) {
1d9dbc
-                            LOG.log(Level.WARNING, "File found at " + path + " but not loadable: " + ex.getMessage(), ex);
1d9dbc
-                        }
1d9dbc
-                    }
1d9dbc
-                }
1d9dbc
-            }
1d9dbc
-        }
1d9dbc
-        String jnaNosys = System.getProperty("jna.nosys", "true");
1d9dbc
-        if ((!Boolean.parseBoolean(jnaNosys)) || Platform.isAndroid()) {
1d9dbc
-            try {
1d9dbc
-                LOG.log(DEBUG_JNA_LOAD_LEVEL, "Trying (via loadLibrary) {0}", libName);
1d9dbc
-                System.loadLibrary(libName);
1d9dbc
-                LOG.log(DEBUG_JNA_LOAD_LEVEL, "Found jnidispatch on system path");
1d9dbc
-                return;
1d9dbc
-            }
1d9dbc
-            catch(UnsatisfiedLinkError e) {
1d9dbc
-            }
1d9dbc
-        }
1d9dbc
-        if (!Boolean.getBoolean("jna.noclasspath")) {
1d9dbc
-            loadNativeDispatchLibraryFromClasspath();
1d9dbc
-        }
1d9dbc
-        else {
1d9dbc
-            throw new UnsatisfiedLinkError("Unable to locate JNA native support library");
1d9dbc
-        }
1d9dbc
+        jnidispatchPath = "@LIBDIR@/" + System.mapLibraryName("jnidispatch");
1d9dbc
+		System.load(jnidispatchPath);
1d9dbc
     }
1d9dbc
 
1d9dbc
     static final String JNA_TMPLIB_PREFIX = "jna";
1d9dbc
-- 
6fba83
2.38.1
1d9dbc