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