Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Apple renamed all their OSes
[simgrid.git] / src / bindings / java / org / simgrid / NativeLib.java
index 1902618..d358a02 100644 (file)
@@ -79,7 +79,7 @@ public final class NativeLib {
                        System.err.println();
                        cause.printStackTrace();
                } else {
-                       System.err.println("This jar file does not seem to fit your system, and no usable SimGrid installation found on disk.");
+                       System.err.println("This jar file does not seem to fit your system, and no usable SimGrid installation found on disk for "+name+".");
                }
                System.exit(1);
        }
@@ -100,30 +100,29 @@ public final class NativeLib {
                   { name,
                     "lib"+name+".so",               /* linux */
                     name+".dll", "lib"+name+".dll", /* windows (pure and mingw) */
-                    "lib"+name+".dylib"             /* mac osx */}) {
+                    "lib"+name+".dylib"             /* macOS */}) {
                                                
                        File fileOut = new File(tempDir.toFile().getAbsolutePath() + File.separator + filename);
+                       boolean done = false;
                        try ( // Try-with-resources. These stream will be autoclosed when needed.
                                InputStream in = NativeLib.class.getClassLoader().getResourceAsStream(path+filename);
                                OutputStream out = new FileOutputStream(fileOut);
                        ) {
-                               if (in == null)
-                                       continue; // Try the next name: no such file found
-                               
-                               /* copy the library in position */
-                               byte[] buffer = new byte[4096];
-                               int bytesRead;
-                               while ((bytesRead = in.read(buffer)) != -1)     // Read until EOF
-                                       out.write(buffer, 0, bytesRead);
-                               
-                               out.close(); // Windows cannot open it twice, so close it first. Shame.
-                               
-                               /* load that shit */
+                               if (in != null) {
+                                       /* copy the library in position */
+                                       byte[] buffer = new byte[4096];
+                                       int bytesRead;
+                                       while ((bytesRead = in.read(buffer)) != -1)     // Read until EOF
+                                               out.write(buffer, 0, bytesRead);
+                                       done = true;
+                               }
+                       }
+                       if (done) {
+                               /* load that library */
                                System.load(fileOut.getAbsolutePath());
-                               
+
                                /* It loaded! we're good */
                                return true;
-                               
                        }
                }
                
@@ -143,11 +142,11 @@ public final class NativeLib {
                else if ("x86_64".equalsIgnoreCase(arch) || "AMD64".equalsIgnoreCase(arch))
                        arch = "amd64";
 
-               if (os.toLowerCase().startsWith("win")){
+               if (os.toLowerCase().startsWith("win")) {
                        os = "Windows";
-               } else if (os.contains("OS X"))
+               } else if (os.contains("OS X")) {
                        os = "Darwin";
-
+               }
                os = os.replace(' ', '_');
                arch = arch.replace(' ', '_');