This file contains a list of changes between distributions
in reverse chronological order.

--- Current, unreleased

--- Distribution of Apr 23, 1991

Would emit partial lines with track -w if getgrgid failed on a directory
or stamp failed on a file.  Fixed.

--- Distribution of Mar 15, 1991

Made calltrack use getopt, replaced sigblock/sigsetmask with signal,
defined SIG_RET_TYPE.

Locknames now track.slist instead of slist.  Change from chk@alias.com,
avoids smashing user files if locks are in /tmp.

Change from chk@alias.com for the R6000 to only use and xmit lower 16 bits
of stamp info.  Should really be lower 12 for statsfile, and lower 16 for
file header, but...

--- Distribution of Feb 21, 1991

Symlinks with absolute paths get transformed from srcfile to cmpfile/dstfile
if they point within the current slist entry.  eg. with a client slist of
/foo:/bar:::
the symlink /foo/a -> /foo/b will change to /bar/a -> /bar/b
when tracked over to the client.

Bugfix in error recovery when we can't find parent directory for a file
and -D isn't on, fix bug in error reporting.

Improved logging to show both sides of transactions with trackd.

Portability mods to trackd from C. Harald Koch <chk@alias.uucp>, should now
work on RS6000 with HAVE_SYS_SELECT defined.

--- Alpha distribution of Feb 7, 1991

added a simple test suite.  This is not fully automatic -- one has to run
mktests, and then dotests, and examine the output to make sure things are
working (diff -r between the client directories and server). The primary
purpose at present is to provide track developers with a test framework to
test different parts of track.

rewrote readnames to make one pass through the statfile, reducing the
number of calls to goodname further.  Runtime is even more dominated
by lstat time that before.  (Now something like 100 secs of system time
to 4 seconds of user time on a 30000 file statfile on an SGI, something
like 80 seconds system, 40 seconds user on a Sun3/280 for 15000 lines
worth of statfile) Uses much less memory since it doesn't gobble the
entire statfile into memory.  (potentially could use lots of memory
since it stashes the names of files it brings over in memory --
typically, this will be small)

stashes the list of tracked files per slist entry in memory in the stash
data structure.  See stash.[ch] The list of files that were tracked over is
now piped to commands that are run.  (previously the header for the file was
piped to the commands; it was less useful)

fixed -p to work nicely -- output of -p can be fed into track
as an slist, sorts the slist. -p now writes to stdout.

gratuitous cleanup in various parts of track.  Finally gave up and
cb'ed it, then delinted major lint complaints

Threw away more static buffers.  Check sizes on the remaining ones.

now uses getopt.  The only incompatibility this introduces is that
the argument after the -m cannot be left out.

reversed meaning on -t so we can use rsh version again.  (we had
changed default to VIA_TCP, rendering -t redundant, but there
was no way to use rsh)

-v now writes to stdout, not stderr.

-n uses the same code as the normal track does, so it's a more honest
reflection of what you're going to get, and is a lot faster.

fixed and documented the -O option for fast tracking. -O will only examine
files newer than the stat mtime on the old statfile.  track -w fudges
mtimes suitably.

Added the -o option for backward compatibility with trackds that don't sort
the statfiles.  Deleted the -o option once we discovered that sorting the
statfile wasn't a big win, and the server took forever to sort the statfile.

track doesn't hang on certain error conditions.  (if a file got
removed after the statfile was created, track would hang because
trackd would say nothing)  More consistent error handling between
client and server.  Server always connects stderr to nullmail now.

Added manual pages for calltrack and trackd.  The latter documents the
file exchange protocol. Renamed subscriptionlist.5 to slist.5, to reflect
the way everyone refers to the subscription list, make it easier to type,
and make it fit in 14 chars.

finally fixed get_head to check the buffer size instead of blithely
overrunning the buffer, shades of the Internet worm.  Increased the
size of errmsg so it can't overflow. get_head now returns number
of bytes read, other routines use this to check buffer sizes.

removed lots of redundant stats (and unused code)

Track now doesn't do -u even when -u isn't specified!

uses C News style portable locking with link().  See lock.c.

mypclose accepts the possibility that its child may have been reaped
already.

opentmp replaces mkstemp.

--- Distribution of Jul 30, 1990

Many many UofT bugfixes, performance improvements, robustness
improvements, security holes plugged.  It now runs MUCH faster than
the original track (we haven't the nerve to measure the old track on
large slists now)

John Linderman also sent in many robustness improvements and security
fixes.

Some added documentation and READMEs

--- Original Bellcore distribution, Novbember 4, 1986
