[comp.bugs.4bsd] fix to tra

dave@lsuc.UUCP (05/17/87)

(Dunno whether this bug still exists on other 4BSD versions;
we run Perkin-Elmer's Edition VII Workbench, and the BSD stuff
which comes with it is from 4.1BSD or earlier.)

I wanted to use tra(1) to monitor the end of a file which
might get smaller (specifically, my mail file, which gets
smaller when I read and discard mail), and to pick up from
the new end-of-file point if the file shrinks.  (Incidentally,
we don't have BSD's biff(1).)

The hooks were all there; I just had to add one statement:

	do {
		fstat(0, &stbuf);
		if (stbuf.st_size > offset) {
			lseek(0, (long) offset, 0);
			while ((i = read(0, buf, sizeof buf)) > 0) {
				offset =+ i;
				write(1, buf, i);
			}
		}
+		/* David Sherman addition, May 17/87: handle
+		 * properly when file gets smaller, e.g. $MAIL
+		 */
+		else
+			offset = stbuf.st_size;
		sleep(interval);
		timeleft =- interval;
	} while (timeleft > 0);

David Sherman
The Law Society of Upper Canada
Toronto
-- 
{ seismo!mnetor  cbosgd!utgpu  watmath  decvax!utcsri  ihnp4!utzoo } !lsuc!dave