ultimatepp/uppsrc/Core/SSH/Exec.cpp
oblivion c9ecfb9806 Core/SSH: SshExec: Fixed a truncation issue with stdout/stderr buffers.
git-svn-id: svn://ultimatepp.org/upp/trunk@14693 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2020-07-21 18:31:06 +00:00

50 lines
No EOL
966 B
C++

#include "SSH.h"
namespace Upp {
int SshExec::Execute(const String& cmd, String& out, String& err)
{
if(RequestExec(cmd)) {
ReadStdOut(out);
ReadStdErr(err);
if(Shut(IsError() ? GetErrorDesc() : Null))
return GetExitCode();
}
return GetError();
}
void SshExec::ReadStdOut(String& out)
{
String s;
while(!(s = Get(ssh->chunk_size)).IsEmpty())
out.Cat(s);
}
void SshExec::ReadStdErr(String& err)
{
String s;
while(!(s = GetStdErr(ssh->chunk_size)).IsEmpty())
err.Cat(s);
}
int SshExecute(SshSession& session, const String& cmd, String& out, String& err)
{
return SshExec(session).Execute(cmd, out, err);
}
int SshExecute(SshSession& session, const String& cmd, String& out)
{
String err;
int rc = SshExec(session).Execute(cmd, out, err);
if(!IsNull(err))
out.Cat(err);
return rc;
}
String SshExecute(SshSession& session, const String& cmd)
{
String out, err;
return SshExecute(session, cmd, out, err) ? String::GetVoid(): out;
}
}