/*
 *
 * atomic testing in progress.  Test out the atomic file routines before
 * we use them.
 *
 */

#include "atom.h"
#include <sys/file.h>
#include <stdio.h>
#define min(a, b) (a < b ? a : b)

main(argc,argv)
int argc;
char **argv;
{
     afile af;
     int src_file, dest_file, numread;
     char *src_path,*dest_path;
     char buffer [2000];
     char ch;
     int pos = 0;
     int rpos;


     argc--;argv++;

     if (argc != 2)
	  goto lusage;

     src_path = *argv;
     argv++;
     dest_path = *argv;

     src_file = open (src_path, O_RDONLY, 0);
     if (src_file < 0) {
	  printf ("Can't open source file %s", src_path);
	  exit (1);
     }

     dest_file = open (dest_path, O_RDWR | O_CREAT, 0777);
     if (dest_file < 0) {
	  printf ("Can't open destination file %s", dest_path);
	  exit (1);
     }

     af = aopen (dest_file);

     for (;;) {
	  numread = read (src_file, buffer, 2000);
	  if (awrite (af, buffer, numread, pos) < 0) {
	       perror("atest");
	       exit(1);
	  }
	  pos += numread;
	  if (numread < 2000) break;
     }

     rpos = 0;
     while (pos > 0) {
	  numread = min (pos, 17);
	  if (aread (af, buffer, numread, rpos) < 0) {
	       perror("atest");
	       exit(1);
	  }
	  pos -= numread;
	  rpos += numread;
	  write (1, buffer, numread);
     }

     aclose (af);

     exit (0);

lusage:
     printf("Usage:  atest <srcfile> <destfile>\n");
     exit (0);
}
