1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-07 17:56:01 +02:00

Bug 521515: Update to JNA 5.6.0

Change-Id: Id56f6366e0bbaa33b1d0967cd64487fc173b3833
This commit is contained in:
Jonah Graham 2020-07-22 02:46:47 -04:00
parent 3e485f66d1
commit 9c370cfcf0
9 changed files with 26 additions and 78 deletions

View file

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2 Bundle-ManifestVersion: 2
Bundle-Name: %pluginName Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.core.native;singleton:=true Bundle-SymbolicName: org.eclipse.cdt.core.native;singleton:=true
Bundle-Version: 6.1.0.qualifier Bundle-Version: 6.1.100.qualifier
Bundle-Activator: org.eclipse.cdt.internal.core.natives.CNativePlugin Bundle-Activator: org.eclipse.cdt.internal.core.natives.CNativePlugin
Bundle-Vendor: %providerName Bundle-Vendor: %providerName
Bundle-Localization: plugin Bundle-Localization: plugin

View file

@ -23,7 +23,7 @@
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<version>6.1.0-SNAPSHOT</version> <version>6.1.100-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.core.native</artifactId> <artifactId>org.eclipse.cdt.core.native</artifactId>
<packaging>eclipse-plugin</packaging> <packaging>eclipse-plugin</packaging>

View file

@ -17,6 +17,7 @@ import java.util.Map;
import org.eclipse.cdt.internal.core.natives.CNativePlugin; import org.eclipse.cdt.internal.core.natives.CNativePlugin;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Platform;
/** /**
* @author DSchaefer * @author DSchaefer
@ -33,14 +34,19 @@ public abstract class WindowsRegistry {
} }
public static WindowsRegistry getRegistry() { public static WindowsRegistry getRegistry() {
if (registry == null) { if (Platform.getOS().equals(Platform.OS_WIN32)) {
try { if (registry == null) {
registry = CNativePlugin.getDefault().getWindowsRegistry(); try {
} catch (CoreException e) { registry = CNativePlugin.getDefault().getWindowsRegistry();
} catch (CoreException e) {
CNativePlugin.log("Failed to load WindowsRegistry", e); //$NON-NLS-1$
}
} }
return registry;
} else {
return null;
} }
return registry;
} }
/** /**

View file

@ -2,12 +2,12 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2 Bundle-ManifestVersion: 2
Bundle-Name: %fragmentName.win32 Bundle-Name: %fragmentName.win32
Bundle-SymbolicName: org.eclipse.cdt.core.win32; singleton:=true Bundle-SymbolicName: org.eclipse.cdt.core.win32; singleton:=true
Bundle-Version: 6.0.100.qualifier Bundle-Version: 6.0.200.qualifier
Bundle-Vendor: %providerName Bundle-Vendor: %providerName
Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[6.1.0,7.0.0)" Fragment-Host: org.eclipse.cdt.core.native;bundle-version="[6.1.0,7.0.0)"
Bundle-Localization: plugin Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-11 Bundle-RequiredExecutionEnvironment: JavaSE-11
Eclipse-PlatformFilter: (osgi.os=win32) Eclipse-PlatformFilter: (osgi.os=win32)
Automatic-Module-Name: org.eclipse.cdt.core.win32 Automatic-Module-Name: org.eclipse.cdt.core.win32
Require-Bundle: com.sun.jna;bundle-version="4.5.1", Require-Bundle: com.sun.jna;bundle-version="[5.6.0,6.0.0)",
com.sun.jna.platform;bundle-version="4.5.1" com.sun.jna.platform;bundle-version="[5.6.0,6.0.0)"

View file

@ -11,7 +11,7 @@
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<version>6.0.100-SNAPSHOT</version> <version>6.0.200-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.core.win32</artifactId> <artifactId>org.eclipse.cdt.core.win32</artifactId>
<packaging>eclipse-plugin</packaging> <packaging>eclipse-plugin</packaging>

View file

@ -15,79 +15,16 @@
package org.eclipse.cdt.internal.core.win32; package org.eclipse.cdt.internal.core.win32;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.eclipse.cdt.core.IProcessInfo; import org.eclipse.cdt.core.IProcessInfo;
import org.eclipse.cdt.core.IProcessList; import org.eclipse.cdt.core.IProcessList;
import com.sun.jna.Native; import com.sun.jna.platform.win32.Kernel32Util;
import com.sun.jna.platform.win32.Kernel32; import com.sun.jna.platform.win32.PsapiUtil;
import com.sun.jna.platform.win32.Win32Exception; import com.sun.jna.platform.win32.Win32Exception;
import com.sun.jna.platform.win32.WinDef.DWORD;
import com.sun.jna.platform.win32.WinNT;
import com.sun.jna.platform.win32.WinNT.HANDLE;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.win32.W32APIOptions;
public class ProcessList implements IProcessList { public class ProcessList implements IProcessList {
// TODO: Remove this inner class when JNA 5.6 is available
private static abstract class PsapiUtil {
public interface Psapi extends com.sun.jna.platform.win32.Psapi {
Psapi INSTANCE = Native.loadLibrary("psapi", Psapi.class, W32APIOptions.DEFAULT_OPTIONS); //$NON-NLS-1$
boolean EnumProcesses(int[] lpidProcess, int cb, IntByReference lpcbNeeded);
}
public static int[] enumProcesses() {
int size = 0;
int[] lpidProcess = null;
IntByReference lpcbNeeded = new IntByReference();
do {
size += 1024;
lpidProcess = new int[size];
if (!Psapi.INSTANCE.EnumProcesses(lpidProcess, size * DWORD.SIZE, lpcbNeeded)) {
throw new Win32Exception(Kernel32.INSTANCE.GetLastError());
}
} while (size == lpcbNeeded.getValue() / DWORD.SIZE);
return Arrays.copyOf(lpidProcess, lpcbNeeded.getValue() / DWORD.SIZE);
}
}
// TODO: Remove this inner class when JNA 5.6 is available
private static abstract class Kernel32Util extends com.sun.jna.platform.win32.Kernel32Util {
public static final String QueryFullProcessImageName(int pid, int dwFlags) {
HANDLE hProcess = null;
Win32Exception we = null;
try {
hProcess = Kernel32.INSTANCE.OpenProcess(WinNT.PROCESS_QUERY_INFORMATION | WinNT.PROCESS_VM_READ, false,
pid);
if (hProcess == null) {
throw new Win32Exception(Kernel32.INSTANCE.GetLastError());
}
return QueryFullProcessImageName(hProcess, dwFlags);
} catch (Win32Exception e) {
we = e;
throw we; // re-throw to invoke finally block
} finally {
try {
closeHandle(hProcess);
} catch (Win32Exception e) {
if (we == null) {
we = e;
} else {
we.addSuppressed(e);
}
}
if (we != null) {
throw we;
}
}
}
}
private IProcessInfo[] NOPROCESS = new IProcessInfo[0]; private IProcessInfo[] NOPROCESS = new IProcessInfo[0];
@Override @Override

View file

@ -21,6 +21,7 @@ import org.eclipse.cdt.utils.WindowsRegistry;
import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Platform;
import com.sun.jna.Native; import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.Advapi32; import com.sun.jna.platform.win32.Advapi32;
import com.sun.jna.platform.win32.Advapi32Util; import com.sun.jna.platform.win32.Advapi32Util;
import com.sun.jna.platform.win32.Advapi32Util.EnumKey; import com.sun.jna.platform.win32.Advapi32Util.EnumKey;
@ -114,7 +115,7 @@ public class WindowsRegistryImpl extends WindowsRegistry {
char[] lpValueName = new char[Advapi32.MAX_KEY_LENGTH]; char[] lpValueName = new char[Advapi32.MAX_KEY_LENGTH];
IntByReference lpcchValueName = new IntByReference(Advapi32.MAX_KEY_LENGTH); IntByReference lpcchValueName = new IntByReference(Advapi32.MAX_KEY_LENGTH);
int rc = Advapi32.INSTANCE.RegEnumValue(phkKey.getValue(), index, lpValueName, lpcchValueName, null, int rc = Advapi32.INSTANCE.RegEnumValue(phkKey.getValue(), index, lpValueName, lpcchValueName, null,
null, null, null); null, (Pointer) null, null);
if (rc != W32Errors.ERROR_SUCCESS) { if (rc != W32Errors.ERROR_SUCCESS) {
throw new Win32Exception(rc); throw new Win32Exception(rc);

View file

@ -216,6 +216,8 @@
<bundle id="com.google.gson" version="0.0.0"/> <bundle id="com.google.gson" version="0.0.0"/>
<bundle id="org.freemarker" version="0.0.0"/> <bundle id="org.freemarker" version="0.0.0"/>
<bundle id="org.yaml.snakeyaml" version="0.0.0"/> <bundle id="org.yaml.snakeyaml" version="0.0.0"/>
<bundle id="com.sun.jna" version="0.0.0"/>
<bundle id="com.sun.jna.platform" version="0.0.0"/>
<bundle id="org.eclipse.tools.templates.core" version="0.0.0"/> <bundle id="org.eclipse.tools.templates.core" version="0.0.0"/>
<bundle id="org.eclipse.tools.templates.core.source" version="0.0.0"/> <bundle id="org.eclipse.tools.templates.core.source" version="0.0.0"/>
<bundle id="org.eclipse.tools.templates.freemarker" version="0.0.0"/> <bundle id="org.eclipse.tools.templates.freemarker" version="0.0.0"/>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?> <?pde version="3.8"?>
<target name="cdt" sequenceNumber="102"> <target name="cdt" sequenceNumber="103">
<locations> <locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit"> <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.license.feature.group" version="0.0.0"/> <unit id="org.eclipse.license.feature.group" version="0.0.0"/>
@ -74,6 +74,8 @@
<unit id="org.mockito" version="0.0.0"/> <unit id="org.mockito" version="0.0.0"/>
<unit id="org.slf4j.impl.log4j12" version="0.0.0"/> <unit id="org.slf4j.impl.log4j12" version="0.0.0"/>
<unit id="org.yaml.snakeyaml" version="0.0.0"/> <unit id="org.yaml.snakeyaml" version="0.0.0"/>
<unit id="com.sun.jna" version="5.6.0.v20200716-0148"/>
<unit id="com.sun.jna.platform" version="5.6.0.v20200722-0209"/>
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20201130205003/repository"/> <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20201130205003/repository"/>
</location> </location>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit"> <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">