/* append-file.c

   Adauga la finalul unui fisier continutul altuia
   
   Autor: Sabin-Corneliu Buraga <busaco@infoiasi.ro> (c)1998-2002, 2005
   Versiunea: 1.2 (ultima actualizare: 17 februarie 2005)
*/    
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>

#define LUNG_BUF 1024 /* lungimea buffer-ului de copiere */

int
main (int argc, char **argv)
{
  int n, in, out;
  char buf[LUNG_BUF];

  /* nu s-au dat argumentele */
  if (argc != 3)
    {
      write (2, "Sintaxa: append <fisier1> <fisier2>\n", 36);
      exit (1);
    }

  /* deschidem primul fisier pentru citire */
  if ((in = open (argv[1], O_RDONLY)) < 0)
    {
      perror (argv[1]); /* tratam erorile */
      exit (1);
    }

  /* deschidem al doilea fisier pentru scriere (cu adaugare) */
  if ((out = open (argv[2], O_WRONLY | O_APPEND)) < 0)
    {
      perror (argv[2]);
      exit (1);
    }

  /* copiem datele din primul in al doilea fisier (ignoram erorile I/0) */
  while ((n = read (in, buf, sizeof (buf))) > 0)
    write (out, buf, n);

  /* inchidem fisierele */
  close (out);
  close (in);
  exit (0);
}

