#ifdef ournix #include "ournix.h" #endif char sccsID[] = "@(#) tail.c V0.1 Copyright Vector Systems Ltd(pjc) 1988\n" ; /* tail - a file Author Philip Cockcroft */ #include 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); }