From 55ede252d69f551e54526300d14f01b121fd8bfd Mon Sep 17 00:00:00 2001 From: Eclipse Date: Sat, 19 Jun 2021 02:18:44 +0300 Subject: [PATCH] Check fazecast.jSerialComm.appid property and use it to create an app-specific tmpdir folder so that multiple applications running jSerialComm simultaneously don't cause problems with each other --- src/main/java/com/fazecast/jSerialComm/SerialPort.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/com/fazecast/jSerialComm/SerialPort.java b/src/main/java/com/fazecast/jSerialComm/SerialPort.java index 1df9732..89e1f34 100644 --- a/src/main/java/com/fazecast/jSerialComm/SerialPort.java +++ b/src/main/java/com/fazecast/jSerialComm/SerialPort.java @@ -51,6 +51,9 @@ public final class SerialPort { // Static initializer loads correct native library for this machine private static final String versionString = "2.7.0"; + // Used to distinguish multiple processes running this lib + private static final String TMPDIR_APPID_PROPERTY = "fazecast.jSerialComm.appid"; + private static volatile boolean isAndroid = false; private static volatile boolean isUnixBased = false; private static volatile boolean isWindows = false; @@ -62,7 +65,13 @@ public final class SerialPort String tempFileDirectory = System.getProperty("java.io.tmpdir"); if ((tempFileDirectory.charAt(tempFileDirectory.length()-1) != '\\') && (tempFileDirectory.charAt(tempFileDirectory.length()-1) != '/')) tempFileDirectory += "/"; + + // Make sure to use appId to separate tmpdir directories if library is used by multiple modules, so they don't erase each others folders accidentally. + String appId = System.getProperty(TMPDIR_APPID_PROPERTY, ""); tempFileDirectory += "jSerialComm/"; + if (!appId.isEmpty()) { + tempFileDirectory += appId + (!appId.endsWith("/") ? "/" : ""); + } deleteDirectory(new File(tempFileDirectory)); // Determine Operating System and architecture