diff options
Diffstat (limited to 'core/org.eclipse.cdt.core.win32/src')
-rw-r--r-- | core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/ProcessList.java | 49 |
1 files changed, 19 insertions, 30 deletions
diff --git a/core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/ProcessList.java b/core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/ProcessList.java index 6ffe99c723e..1469ec3cc5d 100644 --- a/core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/ProcessList.java +++ b/core/org.eclipse.cdt.core.win32/src/org/eclipse/cdt/internal/core/win32/ProcessList.java @@ -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) { + } } } } |