Logo Search packages:      
Sourcecode: tardy version File versions  Download package

normal.cc

//
//    tardy - a tar post-processor
//    Copyright (C) 1998, 1999, 2003 Peter Miller;
//    All rights reserved.
//
//    This program is free software; you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation; either version 2 of the License, or
//    (at your option) any later version.
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with this program; if not, write to the Free Software
//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
//
// MANIFEST: functions to manipulate file output normals
//

#include <ac/fcntl.h>
#include <ac/unistd.h>
#include <file/output/normal.h>


00028 file_output_normal::~file_output_normal()
{
    if (fd >= 0 && ::close(fd))
      nfatal("close");
}


00035 file_output_normal::file_output_normal(const char *arg) :
    fn(arg),
    fd(-1)
{
    fd = ::creat(arg, 0666);
    if (fd < 0)
      nfatal("open");
}


00045 file_output_normal::file_output_normal(const file_output_normal &arg) :
    fn(arg.fn),
    fd(-1)
{
    fd = dup(arg.fd);
    if (fd < 0)
      nfatal("dup");
}


file_output_normal &
00056 file_output_normal::operator = (const file_output_normal &arg)
{
    if (&arg != this)
    {
      if (fd >= 0)
          ::close(fd);
      fn = arg.fn;
      fd = dup(arg.fd);
      if (fd < 0)
          nfatal("dup");
    }
    return *this;
}


void
00072 file_output_normal::write(const void *buffer, int nbytes)
{
    int count = ::write(fd, buffer, nbytes);
    if (count < 0)
      nfatal("write");
    if (count != nbytes)
      fatal("short write (gave %d, got %d)", nbytes, count);
}

const char *
00082 file_output_normal::filename()
    const
{
    return fn;
}

Generated by  Doxygen 1.6.0   Back to index