Blame src/echoJob.cc

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