1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-03 14:25:37 +02:00

Use Eclipse 3.o API to find the fragment location.

This commit is contained in:
Alain Magloire 2004-02-18 03:50:38 +00:00
parent 50f8f8a971
commit 7c2f688b9a
2 changed files with 26 additions and 30 deletions

View file

@ -1,3 +1,10 @@
2004-02-17 Alain Magloire
Remove old Eclipse2.0 interface and
use what 3.0 provides instead.
* src/org/eclipse/cdt/internal/core/win32/ProcessList.java
2004-02-12 Alex Chapiro
Update starter and spawner to use named pipes.

View file

@ -5,7 +5,6 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
@ -13,10 +12,9 @@ import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.IProcessInfo;
import org.eclipse.cdt.core.IProcessList;
import org.eclipse.cdt.utils.spawner.ProcessFactory;
import org.eclipse.core.boot.BootLoader;
import org.eclipse.core.runtime.IPluginDescriptor;
import org.eclipse.core.runtime.model.PluginDescriptorModel;
import org.eclipse.core.runtime.model.PluginFragmentModel;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
/*
* Currently this will only work for Windows XP since tasklist
@ -33,33 +31,23 @@ public class ProcessList implements IProcessList {
Process p = null;
String command = null;
InputStream in = null;
IPluginDescriptor desc = CCorePlugin.getDefault().getDescriptor();
if (desc instanceof PluginDescriptorModel) {
PluginDescriptorModel model = (PluginDescriptorModel) desc;
PluginFragmentModel[] fragments = model.getFragments();
for (int i = 0; i < fragments.length; i++) {
String location = fragments[i].getLocation();
try {
URL url = new URL(location + "/os/" + BootLoader.getOS() + "/" + BootLoader.getOSArch());
File path = new File(url.getFile(), "listtasks.exe");
if (path.exists()) {
command = path.getCanonicalPath();
break;
}
} catch (MalformedURLException e1) {
} catch (IOException e) {
}
}
}
if (command != null) {
try {
IPluginDescriptor desc = CCorePlugin.getDefault().getDescriptor();
try {
URL url = desc.find(new Path("$os$/listtasks.exe"));
url = Platform.resolve(url);
String path = url.getFile();
File file = new File(path);
if (file.exists()) {
command = file.getCanonicalPath();
if (command != null) {
p = ProcessFactory.getFactory().exec(command);
in = p.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
return parseListTasks(reader);
} catch (IOException e) {
}
}
} catch (IOException e) {
}
return NOPROCESS;
}
@ -73,11 +61,12 @@ public class ProcessList implements IProcessList {
if (tab != -1) {
String proc = line.substring(0, tab).trim();
String name = line.substring(tab).trim();
try {
int pid = Integer.parseInt(proc);
processList.add(new ProcessInfo(pid, name));
} catch (NumberFormatException e) {
name = null;
if (proc.length() > 0 && name.length() > 0) {
try {
int pid = Integer.parseInt(proc);
processList.add(new ProcessInfo(pid, name));
} catch (NumberFormatException e) {
}
}
}
}