<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent changes to 2: Bug in SshExec.RunCommand, duplicate data</title><link href="https://sourceforge.net/p/sharpssh/bugs/2/" rel="alternate"/><link href="https://sourceforge.net/p/sharpssh/bugs/2/feed.atom" rel="self"/><id>https://sourceforge.net/p/sharpssh/bugs/2/</id><updated>2007-08-02T14:22:08Z</updated><subtitle>Recent changes to 2: Bug in SshExec.RunCommand, duplicate data</subtitle><entry><title>Bug in SshExec.RunCommand, duplicate data</title><link href="https://sourceforge.net/p/sharpssh/bugs/2/" rel="alternate"/><published>2007-08-02T14:22:08Z</published><updated>2007-08-02T14:22:08Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.netc02e798dae97d530761fda4ca8afb58bc0ad4133</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Description:&lt;br /&gt;
The function RunCommand(cmd, stdout, stderr) duplicates output when output retrieved exceeds the 1k boundry (class SshExec).&lt;/p&gt;
&lt;p&gt;Problem:&lt;br /&gt;
The output is assigned using the =+ operator after the string builder is used to append the read buffer. &lt;/p&gt;
&lt;p&gt;Solution:&lt;br /&gt;
Assign the output after reading all the data using the string builder ToString function.&lt;/p&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;p&gt;public int RunCommand(string command, ref string StdOut, ref string StdErr)&lt;br /&gt;
{&lt;br /&gt;
StdOut = "";&lt;br /&gt;
StdErr = "";&lt;br /&gt;
m_channel = GetChannelExec(command);&lt;br /&gt;
System.IO.Stream stdout = m_channel.getInputStream();&lt;br /&gt;
System.IO.Stream stderr = ((ChannelExec)m_channel).getErrStream();&lt;br /&gt;
m_channel.connect();&lt;br /&gt;
byte[] buff = new byte[1024];&lt;br /&gt;
StringBuilder sbStdOut = new StringBuilder();&lt;br /&gt;
StringBuilder sbStdErr = new StringBuilder();&lt;br /&gt;
int o=0; int e=0;&lt;br /&gt;
while(true)&lt;br /&gt;
{&lt;br /&gt;
if(o!=-1) o = stdout.Read(buff, 0, buff.Length);&lt;br /&gt;
if(o!=-1) sbStdOut.Append(Encoding.ASCII.GetString(buff, 0, o));&lt;br /&gt;
if(e!=-1) e = stderr.Read(buff, 0, buff.Length);&lt;br /&gt;
if(e!=-1) sbStdErr.Append(Encoding.ASCII.GetString(buff, 0, e));&lt;br /&gt;
if((o==-1)&amp;amp;&amp;amp;(e==-1)) break;&lt;br /&gt;
}&lt;br /&gt;
m_channel.disconnect();&lt;br /&gt;
StdOut = sbStdOut.ToString();&lt;br /&gt;
StdErr = sbStdErr.ToString();&lt;/p&gt;
&lt;p&gt;return m_channel.getExitStatus();&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;Author:&lt;br /&gt;
Ronald Bosscher&lt;br /&gt;
Ronald.Bosscher@capgemini.com&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>