#ifdef	ournix
#include "ournix.h"
#endif
char sccsID[] = "@(#) tail.c V0.1 Copyright http://www.berklix.com (pjc) 1988\n" ;

/* tail	- a file Author Philip Cockcroft */

#include <stdio.h>

char	buf[4096];
FILE	*fp;
int	count =	10;
int	amount;

char	**ARGV ;
main(argc, argv)
char	**argv;
{
	char	*p;
	long	curpos,	ftell();

	ARGV = argv ;
#ifdef	VSL	/* { */
#include	"../../include/vsl.h"
#endif		/* } */
	for(argv++, argc--; argc > 0 ; argv++, argc--){
		p = *argv;
		if(*p == '-'){
			switch(*++p){
			case '0': case '1': case '2':
			case '3': case '4': case '5':
			case '6': case '7': case '8':
			case '9':
				count =	atoi(p);
				if(count < 0 ||	count >	4096)
					count =	10;
				break;
			}
		}
		else {
			fp = fopen(p, "r");
			if(fp == 0){
				fprintf(stderr,	"Cannot	find %s\n",p);
				exit(1);
			}
			break;
		}
	}
	if(fp == 0)
		fp = stdin;
	
	(void) fseek(fp, (long)0, 2);
	curpos = ftell(fp);
	curpos -= 4096;
	if(curpos < 0)
		curpos = 0;
	(void) fseek(fp, curpos, 0);
	amount = fread(buf, 1, 4096, fp);
	if(amount < 0){
		fprintf(stderr,	"Read <	0\n");
		exit(2);
	}
	p = buf	+ amount;
	while(p	> buf && count)
		if(*--p	== '\n')
			count--;
	if(count == 0)
		p++;
	(void) fwrite(p, 1, buf + amount - p, stdout);
	exit(0);
}
