Blame src/echoJob.cc

Packit 8f70b4
/*
Packit 8f70b4
 * lftp - file transfer program
Packit 8f70b4
 *
Packit 8f70b4
 * Copyright (c) 1996-2012 by Alexander V. Lukyanov (lav@yars.free.net)
Packit 8f70b4
 *
Packit 8f70b4
 * This program is free software; you can redistribute it and/or modify
Packit 8f70b4
 * it under the terms of the GNU General Public License as published by
Packit 8f70b4
 * the Free Software Foundation; either version 3 of the License, or
Packit 8f70b4
 * (at your option) any later version.
Packit 8f70b4
 *
Packit 8f70b4
 * This program is distributed in the hope that it will be useful,
Packit 8f70b4
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 8f70b4
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 8f70b4
 * GNU General Public License for more details.
Packit 8f70b4
 *
Packit 8f70b4
 * You should have received a copy of the GNU General Public License
Packit 8f70b4
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit 8f70b4
 */
Packit 8f70b4
Packit 8f70b4
#include <config.h>
Packit 8f70b4
Packit 8f70b4
#include "echoJob.h"
Packit 8f70b4
#include "misc.h"
Packit 8f70b4
Packit 8f70b4
#define super Job
Packit 8f70b4
Packit 8f70b4
echoJob::echoJob(const char *buf, int len, OutputJob *_output)
Packit 8f70b4
   : output(_output)
Packit 8f70b4
{
Packit 8f70b4
   AddWaiting(_output);
Packit 8f70b4
   output->Put(buf, len);
Packit 8f70b4
   output->PutEOF();
Packit 8f70b4
}
Packit 8f70b4
Packit 8f70b4
echoJob::echoJob(const char *buf, OutputJob *_output)
Packit 8f70b4
   : output(_output)
Packit 8f70b4
{
Packit 8f70b4
   AddWaiting(_output);
Packit 8f70b4
   output->Put(buf);
Packit 8f70b4
   output->PutEOF();
Packit 8f70b4
}
Packit 8f70b4
Packit 8f70b4
echoJob::~echoJob()
Packit 8f70b4
{
Packit 8f70b4
}
Packit 8f70b4
Packit 8f70b4
int echoJob::Done()
Packit 8f70b4
{
Packit 8f70b4
   return output->Done();
Packit 8f70b4
}
Packit 8f70b4
Packit 8f70b4
int echoJob::ExitCode()
Packit 8f70b4
{
Packit 8f70b4
   /* if the output fails, we failed */
Packit 8f70b4
   return output->Error()? 1:0;
Packit 8f70b4
}
Packit 8f70b4
Packit 8f70b4
/* We have no interesting status for "jobs", so we have no PrintStatus
Packit 8f70b4
 * override.  (The output job will print the output status, if relevant.) */
Packit 8f70b4
Packit 8f70b4
void  echoJob::ShowRunStatus(const SMTaskRef<StatusLine>& s)
Packit 8f70b4
{
Packit 8f70b4
   if(Done())
Packit 8f70b4
      return;
Packit 8f70b4
Packit 8f70b4
   /* Never call output->ShowStatusLine unless we're really going
Packit 8f70b4
    * to display something. */
Packit 8f70b4
   const char *stat = output->Status(s);
Packit 8f70b4
   if(*stat && output->ShowStatusLine(s))
Packit 8f70b4
      s->Show("echo: %s", stat);
Packit 8f70b4
}
Packit 8f70b4
Packit 8f70b4
void echoJob::Fg()
Packit 8f70b4
{
Packit 8f70b4
   super::Fg();
Packit 8f70b4
   if(output)
Packit 8f70b4
      output->Fg();
Packit 8f70b4
}
Packit 8f70b4
void echoJob::Bg()
Packit 8f70b4
{
Packit 8f70b4
   if(output)
Packit 8f70b4
      output->Bg();
Packit 8f70b4
   super::Bg();
Packit 8f70b4
}