From 7d7d21cc678bc3260feede84904d5a8edd8d5ad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B6rn=20Svensson?= Date: Wed, 4 Nov 2020 23:01:45 +0100 Subject: [PATCH] Bug 568079: Reuse existing way of fetching data from registry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use the WindowsRegistry implementation rather than having yet another implementation for reading the Windows registry in native code. Change-Id: If12068319ea3b99934112208a0a21538c792909c Signed-off-by: Torbjörn Svensson --- .../META-INF/MANIFEST.MF | 1 + .../org_eclipse_cdt_serial_SerialPort.h | 7 ---- .../native_src/serial.c | 35 ---------------- .../os/win32/x86_64/serial.dll | Bin 381152 -> 379016 bytes .../org/eclipse/cdt/serial/SerialPort.java | 38 +++++++++--------- 5 files changed, 21 insertions(+), 60 deletions(-) diff --git a/native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF b/native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF index 2c90f7276a3..52b48f6b3df 100644 --- a/native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF +++ b/native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF @@ -8,3 +8,4 @@ Bundle-RequiredExecutionEnvironment: JavaSE-11 Export-Package: org.eclipse.cdt.serial Automatic-Module-Name: org.eclipse.cdt.native.serial Bundle-Localization: plugin +Require-Bundle: org.eclipse.cdt.core.native;bundle-version="6.0.100" diff --git a/native/org.eclipse.cdt.native.serial/native_src/include/org_eclipse_cdt_serial_SerialPort.h b/native/org.eclipse.cdt.native.serial/native_src/include/org_eclipse_cdt_serial_SerialPort.h index d5da82fce57..44505c12fff 100644 --- a/native/org.eclipse.cdt.native.serial/native_src/include/org_eclipse_cdt_serial_SerialPort.h +++ b/native/org.eclipse.cdt.native.serial/native_src/include/org_eclipse_cdt_serial_SerialPort.h @@ -50,13 +50,6 @@ JNIEXPORT void JNICALL Java_org_eclipse_cdt_serial_SerialPort_write0(JNIEnv *, j */ JNIEXPORT void JNICALL Java_org_eclipse_cdt_serial_SerialPort_write1(JNIEnv *, jobject, jlong, jbyteArray, jint, jint); -/* - * Class: org_eclipse_cdt_serial_SerialPort - * Method: getPortName - * Signature: (I)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_serial_SerialPort_getPortName(JNIEnv *, jclass, jint); - #ifdef __cplusplus } #endif diff --git a/native/org.eclipse.cdt.native.serial/native_src/serial.c b/native/org.eclipse.cdt.native.serial/native_src/serial.c index ec42c9bddc2..91943f5c85a 100644 --- a/native/org.eclipse.cdt.native.serial/native_src/serial.c +++ b/native/org.eclipse.cdt.native.serial/native_src/serial.c @@ -520,38 +520,3 @@ JNIEXPORT void JNICALL FUNC(write1)(JNIEnv *env, jobject jobj, jlong jhandle, jb CloseHandle(olp.hEvent); #endif } - -#ifdef __MINGW32__ -JNIEXPORT jstring FUNC(getPortName)(JNIEnv *env, jclass cls, jint i) { - HKEY key; - - if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"HARDWARE\\DEVICEMAP\\SERIALCOMM", 0, KEY_READ, &key) != ERROR_SUCCESS) { - // There are none - return NULL; - } - - wchar_t name[256]; - DWORD len = sizeof(name); - LONG rc = RegEnumValue(key, (DWORD)i, name, &len, NULL, NULL, NULL, NULL); - if (rc != ERROR_SUCCESS) { - if (rc != ERROR_NO_MORE_ITEMS) { - throwIOException(env, "Can not enum value"); - } - RegCloseKey(key); - return NULL; - } - - wchar_t value[256]; - DWORD type; - len = sizeof(value); - if (RegQueryValueEx(key, name, NULL, &type, (BYTE *)value, &len) != ERROR_SUCCESS) { - throwIOException(env, "Can not query value"); - RegCloseKey(key); - return NULL; - } - - jstring result = (*env)->NewString(env, (jchar *)value, (jsize)wcslen(value)); - RegCloseKey(key); - return result; -} -#endif diff --git a/native/org.eclipse.cdt.native.serial/os/win32/x86_64/serial.dll b/native/org.eclipse.cdt.native.serial/os/win32/x86_64/serial.dll index c4cc3e47a2820c9e59b7acb16f844ac55cc69009..a37480b7cc68ddc0d0fb033f85ad2795609bdaa3 100755 GIT binary patch delta 18247 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 delta 20029 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 R&`<50`ViJ8otL%={|6eR;`;yq diff --git a/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java index ef18b1291d0..80970dafe25 100644 --- a/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java +++ b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java @@ -28,6 +28,7 @@ import java.util.Map; import java.util.regex.Pattern; import org.eclipse.cdt.serial.internal.Messages; +import org.eclipse.cdt.utils.WindowsRegistry; /** * @since 5.8 @@ -223,8 +224,6 @@ public class SerialPort { private native void write1(long handle, byte[] b, int off, int len) throws IOException; - private static native String getPortName(int i) throws IOException; - private static String[] listDevs(final Pattern pattern) { File dev = new File("/dev"); //$NON-NLS-1$ File[] files = dev.listFiles(new FilenameFilter() { @@ -257,24 +256,27 @@ public class SerialPort { } else if (osName.equals("Linux")) { //$NON-NLS-1$ return listDevs(Pattern.compile("(ttyUSB|ttyACM|ttyS).*")); //$NON-NLS-1$ } else if (osName.startsWith("Windows")) { //$NON-NLS-1$ - List ports = new ArrayList<>(); - int i = 0; - String name = null; - do { - try { - name = getPortName(i++); - if (name != null) { - ports.add(name); + final WindowsRegistry registry = WindowsRegistry.getRegistry(); + if (registry != null) { + final String subKey = "HARDWARE\\DEVICEMAP\\SERIALCOMM"; //$NON-NLS-1$ + + List ports = new ArrayList<>(); + int i = 0; + String valueName = null; + String value = null; + do { + valueName = registry.getLocalMachineValueName(subKey, i++); + if (valueName != null) { + value = registry.getLocalMachineValue(subKey, valueName); + if (value != null) { + ports.add(value); + } } - } catch (IOException e) { - // TODO log the exception - e.printStackTrace(); - } - } while (name != null); - return ports.toArray(new String[ports.size()]); - } else { - return new String[0]; + } while (valueName != null && value != null); + return ports.toArray(new String[ports.size()]); + } } + return new String[0]; } /**