
/*
**    append.c    
**
**    public domain use only    Mark Ellington 
**
**    This program appends two files to make a third, larger file.
**    Arguments are taken from the command line.  Text files only. 
**
*/

/*
   append two files into destination file  
*/

#include printf.c


int fptr, f1ptr, f2ptr;
char temp[30];
static char ins[100];


main(argc,argv)
int argc; char *argv[];
{
char *s, *sc;
char sv[3];
char c;

	if (argc != 4) {
		printf("\nusage: append [infilename1.ext] "); 
		printf("[infilename2.ext] [outfile.ext]");
                exit();
	}

	if ((f1ptr = fopen(argv[1],"r")) == 0) {
		printf("\nCan't open %s\n",argv[1]);
		exit();
	}
	printf("\n%s open to read",argv[1]);


	if ((f2ptr = fopen(argv[2],"r")) == 0) {
		printf("\nCan't open %s\n",argv[2]);
		exit();
	}
	printf("\n%s open to read\n",argv[2]);


	if ((fptr = fopen(argv[3],"w")) == 0) {
		printf("\nCan't open %s\n",argv[3]);
		exit();
	}
	printf("\n%s open to write\n",argv[3]);


	transfer(f1ptr);

	transfer(f2ptr);

	printf("\n\nExiting append\n");

	fclose(fptr);
	fclose(f1ptr);
	fclose(f2ptr);
}


transfer(ptr)
int ptr; 
{
	while (fgets(ptr) != 0) {
		fputs(fptr);
	} 
	fputs(fptr);
}


fgets(f)
int f; 
{
	char ch, *s;
	s = ins;
	while ((ch = getc(f)) != -1) {
		*s++ = ch;
		if (ch == '\n') {
			*s = '\0';
			return(1);
		}
	}
	*s = '\0';
	return(0);
}	
	

fputs(f)
int f;
{
	char *s;
	s = ins;
	while(*s) putc(*s++,f);
}










