1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-30 20:35:38 +02:00

[411343] Provide access to readers in host shell implementation for

synchronous running commands
This commit is contained in:
David Dykstal 2013-09-17 07:42:46 -05:00
parent b14baa94e3
commit 28304f4dec
3 changed files with 23 additions and 10 deletions

View file

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.rse.services;singleton:=true
Bundle-Version: 3.2.200.qualifier
Bundle-Version: 3.3.0.qualifier
Bundle-Activator: org.eclipse.rse.internal.services.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin

View file

@ -22,6 +22,7 @@
* Anna Dushistova (MontaVista) - [258720] SshHostShell fails to run command if initialWorkingDirectory supplied
* Rob Stryker (JBoss) - [335059] TerminalServiceShellOutputReader logs error when hostShell.exit() is called
* Martin Oberhuber (Wind River) - [356132] wait for initial output
* Ioana Grigoropol (Intel) - [411343] Provide access to readers in host shell
*******************************************************************************/
package org.eclipse.rse.internal.services.shells;
@ -47,7 +48,7 @@ public class TerminalServiceHostShell extends AbstractHostShell {
public static final String SHELL_INVOCATION = ">"; //$NON-NLS-1$
ITerminalShell fTerminalShell;
BufferedReader fBufReader;
private TerminalServiceShellOutputReader fStdoutHandler;
private TerminalServiceShellOutputReader fStderrHandler;
@ -60,21 +61,21 @@ public class TerminalServiceHostShell extends AbstractHostShell {
try {
fTerminalShell = terminalShell;
String encoding = fTerminalShell.getDefaultEncoding();
BufferedReader bufReader;
if (encoding != null) {
bufReader = new BufferedReader(new InputStreamReader(fTerminalShell
fBufReader = new BufferedReader(new InputStreamReader(fTerminalShell
.getInputStream(), encoding));
} else {
bufReader = new BufferedReader(new InputStreamReader(fTerminalShell
fBufReader = new BufferedReader(new InputStreamReader(fTerminalShell
.getInputStream()));
}
//bug 356132: wait for initial output before sending any command
//FIXME this should likely move into the TerminalServiceShellWriterThread, so wait can be canceled
bufReader.mark(1);
bufReader.read();
bufReader.reset();
fBufReader.mark(1);
fBufReader.read();
fBufReader.reset();
fStdoutHandler = new TerminalServiceShellOutputReader(this, bufReader, false);
fStdoutHandler = new TerminalServiceShellOutputReader(this, fBufReader, false);
fStderrHandler = new TerminalServiceShellOutputReader(this, null, true);
OutputStream outputStream = fTerminalShell.getOutputStream();
if (encoding != null) {
@ -170,4 +171,7 @@ public class TerminalServiceHostShell extends AbstractHostShell {
return "echo $PWD'>'"; //$NON-NLS-1$
}
public BufferedReader getReader(boolean isErrorReader) {
return fBufReader;
}
}

View file

@ -11,11 +11,13 @@
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
*
* Contributors:
* {Name} (company) - description of contribution.
* Ioana Grigoropol (Intel) - [411343] Provide access to readers in host shell
********************************************************************************/
package org.eclipse.rse.services.shells;
import java.io.BufferedReader;
public abstract class AbstractHostShell implements IHostShell
{
@ -33,5 +35,12 @@ public abstract class AbstractHostShell implements IHostShell
errReader.addOutputListener(listener);
}
}
/**
* @since 3.3
*/
public BufferedReader getReader(boolean isErrorReader) {
return null;
}
}