Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Stieber2012-08-02 09:15:31 +0000
committerUwe Stieber2012-08-02 09:16:10 +0000
commit3b4cfe1a2162e3ae0d03ee460813a8e08d17d0b8 (patch)
tree24397fd76214bc20d7eff5adc2030615570d1ff4 /target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core
parent143f3cb832305c323b88f112cf18b980fdde116f (diff)
downloadorg.eclipse.tcf-3b4cfe1a2162e3ae0d03ee460813a8e08d17d0b8.tar.gz
org.eclipse.tcf-3b4cfe1a2162e3ae0d03ee460813a8e08d17d0b8.tar.xz
org.eclipse.tcf-3b4cfe1a2162e3ae0d03ee460813a8e08d17d0b8.zip
Fix Bug 386328 - Application output doesn't display correctly in the terminal
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core')
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/steps/LaunchProcessStep.java33
1 files changed, 32 insertions, 1 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/steps/LaunchProcessStep.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/steps/LaunchProcessStep.java
index b7454f9e8..b4c6cffbd 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/steps/LaunchProcessStep.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/steps/LaunchProcessStep.java
@@ -11,6 +11,7 @@ package org.eclipse.tcf.te.tcf.launch.core.steps;
import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
@@ -19,6 +20,8 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.tcf.protocol.IChannel;
+import org.eclipse.tcf.protocol.IPeer;
+import org.eclipse.tcf.protocol.Protocol;
import org.eclipse.tcf.services.IProcesses;
import org.eclipse.tcf.te.core.utils.text.StringUtil;
import org.eclipse.tcf.te.launch.core.persistence.DefaultPersistenceDelegate;
@@ -26,10 +29,14 @@ import org.eclipse.tcf.te.runtime.callback.Callback;
import org.eclipse.tcf.te.runtime.interfaces.callback.ICallback;
import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer;
import org.eclipse.tcf.te.runtime.properties.PropertiesContainer;
+import org.eclipse.tcf.te.runtime.services.interfaces.constants.ILineSeparatorConstants;
import org.eclipse.tcf.te.runtime.services.interfaces.constants.ITerminalsConnectorConstants;
import org.eclipse.tcf.te.runtime.stepper.StepperAttributeUtil;
import org.eclipse.tcf.te.runtime.stepper.interfaces.IFullQualifiedId;
import org.eclipse.tcf.te.runtime.stepper.interfaces.IStepContext;
+import org.eclipse.tcf.te.runtime.utils.Host;
+import org.eclipse.tcf.te.runtime.utils.net.IPAddressUtil;
+import org.eclipse.tcf.te.tcf.core.interfaces.ITransportTypes;
import org.eclipse.tcf.te.tcf.launch.core.activator.CoreBundleActivator;
import org.eclipse.tcf.te.tcf.launch.core.interfaces.ICommonTCFLaunchAttributes;
import org.eclipse.tcf.te.tcf.launch.core.interfaces.IRemoteAppLaunchAttributes;
@@ -105,7 +112,31 @@ public class LaunchProcessStep extends AbstractTcfLaunchStep {
// Launch the process
IPropertiesContainer container = new PropertiesContainer();
container.setProperties(launchAttributes);
- launcher.launch(getActivePeerModel(fullQualifiedId, data).getPeer(), container, new Callback(callback) {
+
+ final IPeer peer = getActivePeerModel(fullQualifiedId, data).getPeer();
+
+ // Determine if the launch is on local host. If yes, we can preset the
+ // line ending character.
+ final AtomicBoolean isLocalhost = new AtomicBoolean();
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ if (ITransportTypes.TRANSPORT_TYPE_TCP.equals(peer.getTransportName())
+ || ITransportTypes.TRANSPORT_TYPE_SSL.equals(peer.getTransportName())) {
+ isLocalhost.set(IPAddressUtil.getInstance().isLocalHost(peer.getAttributes().get(IPeer.ATTR_IP_HOST)));
+ }
+ }
+ };
+
+ if (Protocol.isDispatchThread()) runnable.run();
+ else Protocol.invokeAndWait(runnable);
+
+ if (isLocalhost.get()) {
+ container.setProperty(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR, Host.isWindowsHost() ? ILineSeparatorConstants.LINE_SEPARATOR_CRLF : ILineSeparatorConstants.LINE_SEPARATOR_LF);
+ }
+
+ launcher.launch(peer, container, new Callback(callback) {
@Override
protected void internalDone(Object caller, IStatus status) {
Object result = getResult();

Back to the top