3.0.2 Mon Mar  6 08:52:48 EST 2006 (autophagocytosis)

	* compat: entropy be gone

3.0.1 Sat Apr  6 01:59:56 EST 2002 (ap.pog.gia.tu.ra)

	* compat: update config.sub and config.guess to autoguess
	          Darwin / MacOSx
	* compat: update ./configure to autoconf-2.53

3.0-b2 Fri Apr  5 01:32:28 EST 2002 (oneiromancy)
	
	* new:	  README.pam
	* change: use $libexec/nntpcache.debug for debug symbols
	* new:	  permit ':' and '@' in username and password
		  definitions. some At-Home & MS passport
		  controlled (ugh) were of this format
	* compat: be more flexible in closing and re-assigning
		  file-descriptors. fixes some bogus openlog()/
		  closelog() implementations
	* change: doc/proff.style NAZI's
	* compat: eliminate pid_t warning in src/debug.c
	* compat: change "stat" to "status" for
		  contrib/newshound/newshound.c. "stat" conflicted
		  with the stat.h definition under AIX-5.1
	* change: don't try and debug the debug task if it
		  can no-longer read messages from other
		  tasks
	* new:	  explicitly tell users to use 'nntpcached -n'
		  for INSTALL step 8

3.0-b1 Sat Mar 30 11:51:29 EST 2002 (Enantiomorphosis)

	* new:	  idiot proof nntpcache.servers configuration
	* new:	  Make the decision to use a new mmap backing
		  file on restart configuration via "refreshMmap"
	* change: explicitly enable core dumps
	* bugfix: fix bogus log message in src/xover.c
	* new:	  prevent runaway debug analysis by checking
		  at most once every half hour
	* change: use mode, as opposed to flock/lockf locking for
		  cached articles/headers. this technique is more
		  reliable over nfs and newserver/reader crashes
	* new:	  robustify newsgroup structure locking	
	* compat: under MacOSX, cc reports as gcc, but gcc CPP is
		  not "gcc -E"
	* compat: AIX needs -lbsd for flock()
	* new:	  verbosely describe "server rebuild in progress" error
	* change: don't warn on seeing (\r[^\n])+\r\n, as this
		  seems to be embedded in quite a few wild articles
	* bugfix: fix a few (usually rare) xover bugs
	* change: reorganise xover opening/locking/writing
		  functions
	* compat: parse numbers representing time_t
		  so as not to depend on the size of time_t
		  (Tru64/OSF/alpha needed this)
	* compat: remove extra ';' in src/http.c which caused
		  SUNSpro (Solaris CC) to choke
	* new:	  improved xover expiry
	* change: remove a warning in src/bregex.c. Note that the
		  other warnings (at least under gcc and SUNSpro
		  are bogus)
	* compat: use strrchr instead of rindex in src/authinfo_pipe.c	
	* compat: EXPORT PAM functions only after pam types
		  have been defined
	* compat: PAM compatability for Solaris and FreeBSD
		  (tested on Solaris-8.x and FreeBSD-4.x)
	* compat: at least one newsreader used AUTHINFO with
		  no arguments simply to check that the command
		  was available. In this case return
		    "350 Continue with authorization sequence"
	* compat: smarter scripts/genextern.sh
	* compat: add/reorder includes for mmap/mmap_tests.c
	* bugfix: don't use autoconf to generate mk/rules.mk,
		  as automake uses this file before configure
		  time.
	* compat: add SPT_PADCHAR definition for Linux in
		  libproff/setproctiltle.c
	* change: add comment about bogus gcc warning in
		  libproff/pattern.c
	* change: update doc/proff.style
	* change: move newshound config file to /etc/newshound/
	* bugfix: various newshound bugfixes
	* new:	  perl newshound contributed by jer@gweep.net
	* bugfix: add missing /* */ pair in log.h (amazingly
		  gcc compiled the previous code without
		  complaint)
	* compat: wrap all GNU C extensions in GNUC_EXT
		  macros, including extensions exported by
		  scripts/genextern.sh (EXPORT macros)
	* compat: explicitly check for GNU make variations
		  at ./configure time and give copious help
		  if GNU make can not be located. Explicitly
		  tell the user to use the discovered GNU make.
	* bugfix: CPP does not define build symbols which
		  are needed by scripts/genextern.sh as
		  opposed to cc -E. Always check for cc -E
		  at ./configure time
	* new:	  NEWS file
	* change: modify INSTALL so even the pentagon can
		  understand nntpcache builds with GNUMake
	* change: modify INSTALL to reflect new mailinglist details
	* bugfix: extensive three pass automake hackery to force
		  regeneration of .ext's at the correct time and in
		  the correct order
	* bugfix: sometimes a HEAD followed by a BODY when neither
		  was previously cached resulted additional header
		  characters in the body. Triggered by Pine.
	* compat: don't use creeping bsd featureisms (warn,<err.h>)
		  in libproff
	
2.4-b5:	Mon Jun 12 05:39:08 EST 2000 (something amazing, a boy falling)

	* new:	  PAM support
	* change: several small debugging related changes
	* compat: some years ago libproff added a strcasestr()
		  function. recent versions of glibc added this function
		  to their includes causing conflict.  this was predicted,
		  but the auto-detect code did not handle all
		  eventualities, causing build failures under some
		  versions of linux
	* bugfix: due to extreme bogosities in openlog()/closelog()
		  implementations (e.g linux), port 119 despite being
		  bound by nntpcache, was closed by syslog().  This was
		  reported as fixed in 2.4.0b4, but such reports were
		  somewhat premature due to the sporadic nature of the bug
		  on nntpcache.com development machines.
	
2.4-b4: Wed May 24 01:34:32 EST 2000 (calcium? who needs calcium?)

	* change: order mmap target before libproff
	* bugfix: fix port binding problem under Linux and FreeBSD
	* change: add watch process label
	* bugfix: fix ifdef typo in libradius
	* change: update parts of libproff
	* change: update style guide
	* bugfix: fix egregious NEWGROUPS y2k bugfixes
	* change: upgrade autoconf / automake
	* change: update nocem pgp keys
	
2.4-b3: Sat Feb 20 20:20:19 EST 2000 (an age of longing)

	* bugfix: the number of master tasks was, for statistical
		  purposes, counted incorrectly
	* new:    delay auth attempts via unixauth to avoid password
	          scanning
	* compat: support for linux shadow passwords
	* bugfix: support SIGHUP a little better
	* change: don't treat all critical errors as equally severe
		  Exit(2) now exits without abort()
	* new:	  handle some more NEWGROUPS y2k broken
		  news readers. We now handle several types of years:
			yy 	->	2000+yy if yy < 70, else 1900+yy
		       yyy      ->      1900+yy
		      yyyy	->	yyyy
		     191yy      ->      191yy - 17000
	* new:	  reorganise code-path to detach from the tty as late as
		  possible. log messages to tty and syslog until detach
	* bugfix: authinfo_pipe support wasn't automatically compiled in
	* new:	  more intelligent debugging support
	* change: rfc931 idents off by default
	* new:	  support for tcpwrappers (useLibWrap)
	* compat: support a few more stat{v,}fs types. Apparently this was
		  causing src/expire.c to refuse to compile under certain
		  versions of linux
	
2.4-b2: Fri Dec 31 15:45:59 EST 1999 (it was the afternoon before Armageddon...)
	
	* compat: squash printf warnings
	* new:    2.3.x -> 2.4 upgrade documentation	
	* new:	  slightly more intelligent banner messages
	* bugfix: sending AUTHINFO to remote servers, was too secure for
		  its own good. it sent the username twice. and the password
		  not at all. mmmmm, user contributed patches.
	* bugfix: potential shared memory race conditions in the allocation
		  of pointers to new task_info structures.

2.4-b1: Fri Dec 24 21:20:07 EST 1999 (it was the night before Christmas...)

	* new:    better documentation. ok. just kidding
	* new:	  iterative percentage based expiry. minBlocksFree and
	          minFilesFree are now minBlocksFreePercent and
	          minFilesFreePercent
	* compat: glibc2+ defines strdup. nuke it from orbit
	* new:    AUTHINFO to remote servers via user:pass@server
	* new:	  gdb bug report script
	* bugfix: reset some lists stats if the newsgroup list could not
		  be recovered
	* new:	  generic support for AUTHINFO authenticators 	
	* new:	  /etc/passwd AUTHINFO support
	* new:	  LDAP AUTHINFO support
	* new:	  pipe authenticator support
	* new:	  radius support (substantially complete, but untested)
	* change: eliminate unistd.h related warning under NetBSD/BSDI
	* change: remove all remaining support for the depreciated
		  stats@nntpcache magic article ID (the http statistics
 		  are far more verbose)
	* new:    make the rfc931 timeout configurable as
		  rfc931Timeout (surprise!)
	* change: drop the default rfc931 timeout to 5 seconds
	* new:	  Per connection byte accounting
	* bugfix: According to the rfc, NEWGROUPS takes 2 digit years.
		  consequently there's a y2k issue. Hack around it using the
		  < 50 rule.
	* bugfix: use [] rather than <> when generating http forbidden
		  message.
	* change: la pr?somption d'innocence.
	* new:    various configure time functionality added:
		  --enable-debug, --with-debug, --with-debug-libs,
		  --with-efence, --with-dmalloc, --with-optimise,
 		  --with-profiling, --with-block-profiling, --with-static,
 		  --with-mstats
	* new:	  support gcc style printf style type checking for
		  emitf et al
	* bugfix: reset list statistics when reinvoked with
		  anonymous shared memory or corrupted file backed
		  shared memory.
	* and:    the unmentionable in pursuit of the uncodeable
	
2.3.3:  Fri Aug 21 07:23:02 EST 1998

	* change: updated copyrights to reflect movement to nacf.
	
2.3.3b4: Wed Aug 19 21:21:07 EST 1998

	* change: update & collate NoCem keys.
	* bugfix: the nntpcache master erroneously freed
		  task structures, leading to reuse of
		  task structures by new tasks (!).
	* bugfix: a couple of places in src/{ihave,group}.c
		  sigsegv'd when trying to update statistics
		  for a server that had fallen over.
	* change: core-dump when an assertion fails, in order
		  to avoid potential shared memory corruption.
	* bugfix: missing "static" in render_idx resulted in
	          config file int's being printed as garbage
		  in the web-stats display (reported for
		  hp-ux, but theoretically other systems too).
	* bugfix: bad article hits were falsely marked (for
		  the porposes of keeping statistics) as good.

2.3.3b3: Wed Aug  5 05:00:37 EST 1998

	* bugfix: By default groups that had always (in nntpcache's
	          experience) contained 0 messages had their
		  high and low water marks ignored.
	* bugfix: if a remote connection timed out, on
	          auto-reconnection, "next" would return an
	          incorrect article number

2.3.3b2: Tue Aug  4 08:05:53 EST 1998

	* new:	  nocemCache config option - turn on/off caching
		  of articles obtained during a nocem scan
	* bugfix: typo in failed post inn compat logging macro
	* compat:   OSF3.0 sia_getgroup() passed a NULL pointer to
		  our custom (checking) free() routine. For now
		  we just ignore NULL's pointers passed to free().
	* bugfix: nntpcache.c:1368 failed assertion: task_desc[nc_none] == NULL
	          nc_none should have been nc_last
	* bugfix: @@lists@@ statistics macro was returning the
		  number of list requests (by type) formatted as
		  time displacement. This was fine till one
		  hit 60, from then on the result took a little
		  head scratching to comprehend :)

2.3.3b1: Mon Aug  3 07:50:25 EST 1998

	* change: task structures revamped
	* new:	  user definable nice values for process crew.
	* change: Exit -> retire_vm_proc where applicable.
	* bugfix: process pid was wrongly reported in process list
	* new:	  web-server / statistics substantially extended
	* bugfix: the introduction of 64 bit counters in
	          nntpcache-2.3.2 caused headaches (e.g sigsegvs,
		  in the nocem logging macros/statistics) for
		  systems which didn't auto-demote 64bit - 64bit
		  arithmetic into a 32bit int when used as an
		  argument to *printf corresponding to a
		  '%d' format specifier.
	* bugfix: src/nocem.c:nocem_scan_group() typo caused
		  the last nocem update time to be miscalculated.
	* bugfix: missing flushes in src/ihave.c caused IHAVE to
		  sometimes pause forever.
	* bugfix: more than maxXoverNodes * 512 (10240 by default)
	          XOVER's being accessed in one hit resulted in
		  XOVER's prior to this figure (in the same hit)
		  not making it onto the disk.
	* bugfix: /* hpux */ comment in configure.in naturally
		  tried to run the first thing in the root directory ;)
	* bugfix: don't believe a news-server when it says there are
		  0 0 articles in a group in response to a GROUP
		  command - 0 0 means `undefined' according to
		  RFC977.
	* bugfix: potential race condition for Update and Expire
		  daemon reaping.
	* bugfix: gif images were not always presented
		  correctly from the nntpcahce web-server
		  (cache miss conditional blank line in the
	          HTTP prelude).
	* change: clarify a few type definitions that
		  egcs-2.91.50+1998071 took a disliking to.
		  now compiles with -O9 and -mpentium
	* bugfix: ARTICLE <stats@nntpcache> sigsegv'd. this
	 	  code was/is being phased out anyway (in favour
		  of statistics as presented by the web-server),
		  it now (mostly) works again.
	* bugfix: global (as opposed to per-server) byte
		  counter statistics were not collected
		  correctly. 
	* bugfix: trivial typo (extra \r\n) for loginn macro
	          in src/post.c
	* bugfix: add a dummy call to calloc() to force linking
		  with our calloc() replacement. some systems
		  (e.g linux/libc6) don't over-ride libc
		  calloc otherwise and thus suffer from interference
		  between the nntpcahce shared memory [cm]alloc
		  replacement library and libc calloc
		  (the latter being called not from nntpcache,
		  but directly from libc routines).
	* bugfix: tweak inn logging compatability macros for
		  greater verismiltude.
	* bugfix: taskInfoPrivacy (concealing the current group
	          of a client from ps(1)) wasn't obeyed everywhere.
	* bugfix: add a few missing closelog()'s (not important)
	* bugfix: trivial logging typo in src/nntpcache.c
	* bugfix: force `mode reader' for async ACTIVE/NEWSGROUPS
	          (etc) updates. Some news-servers refused
	          to dish out active lists et al when not in reader
		  mode.
	* new:	  adaptive LISTGROUP
	* new:	  smarter handling of high/low article counts
	* bugfix: "permissions" in src/http.c somehow ended up as
	          "permimacroons". No-one caught this before.
		  Like the peasents cheering the emperor's imaginary
		  clothes, no one wanted to admit they were just
		  too unhip to dig it.

2.3.2.1: Sun Feb 15 16:30:35 EST 1998

	* bugifx: break mmap_tests.c out of cf and into its own
		  directory (mmap/) (fixes a build ordering problem
		  under irix)
	* compat:	  OSF3.2 getgrid(), in its wisdom, calls free(NULL).
		  nntpcache's malloc debuging library wasn't too happy
		  with this (as you might expect). For now, we
		  just ignore free(NULL)
	* bugfix: server dowtime (and thus availability) wasn't
		  calculated correctly under certain cercumstances
	* new:	  verbose error messages for src/http.c
	* new:	  new configuration variable "taskInfoPrivacy" --
		  if true, don't display current group in the process
		  list for reader clients
	* compat:	  HPUX's native compiler choked on a couple of
		  functional like constructs in src/http.c -
		  i.e functions such as foo() {return bar();} or
		  foo () {#ifdef NOTON stuff() #endif; return;}
	* bugfix: insignificant typo corrected in src/http.c
		  (closing </html> was "</html")
	* bugfix: a typo in src/nntpcache.c caused cache.base to be
		  saved with mode 0x664 rather than 0664
	* compat:	  under IRIX6.4 sa_len is #defined (polluted!) in
		  <sys/sockets.h> to be an indirect method of examining
		  a memeber of a union in struct sockaddr. src/sockets.c
		  was using "sa_len" as the name of one of its local
		  variables. changed to "slen" in order to avoid
		  conflict.
	* new:	  expand mmap_tests.c to test for merged vm/buffer cache

2.3.2: Sat Jan 31 19:33:38 EST 1998

	* bugfix: if a server was defined for a group, but the group
		  didn't exist in the server's active file, then GROUP group
		  incorrectly returned a "remote server down?" message,
		  rather than "no such group".
	* new:	  maxMsgIDsearch, used for throttling recursive msgid
	          lookups, and excessive consulting with external servers
	* bugfix: stringl types in confused were returning only the last
	          node in certain circumstances.
	* bugfix: fix potential (rare) memory leak in src/article.c
	
2.3.1: Sat Jan 31 10:04:47 EST 1998

	* bugfix: if logInn was on, any unrecognised NNTP command would
		  cause the client daemon to SIGSEGV (missing argument
		  in the logging macro)
	* bugfix: overview.fmt signatures were miscalculated, resulting
		  in nntpcache working under the false presumption that
		  the server had no overview.fmt at all!
	* bugfix: server uptime/downtime for list fetch attempts wasn't
		  updated correctly

2.3: Fri Jan 30 17:59:04 EST 1998

	* new:	  more http statistics
	* change: optimised list.c
	* bugfix: nocem log entry format
	* new:	  minUpdateFailDelay and minUpdateSyntaxDelay, now control
		  how long we flag a server/list tuple as being unavailable
	* bugfix: LoC and LoXover (statistics) were not calculated correctly
	* bugfix: remove potential race condition in src/lists.c
		  pertaining to updating overview_fmt information in
		  shared memory
	* new: 	  expanded nntpcache.servers-dist examples
	* bugfix: server uptime/down time calculation missed some cases
	* change: consistent case-independence in wild mats
	* change: smarter handling of newnews errors

2.3pre1: Wed Jan 28 07:12:19 EST 1998

	* new: 	  nntpcacherized innreport+GD
	* new:	  logInn - switchable nnrpd compatible log messages
	* bugfix: typo in article.c caused filtered not-cached BODY's, fetched
	          from a server marked as article caching enabled to
		  return the article head prepended to the body.
	* new:	  full pat1,!pat2,pat3 support throughout for
		  configuration wildmat's
	* new:	  innreport/nnrpd compatible log messages everywhere
	* compat:	  added strerror() for systems that don't have it
	* bugix:  \r\n missing from NNTP server down error message in
	 	  ihave.c
	* new:	  statistics collated on a per-server basis
	* change: IHAVE robustness increased
	* change: attempt to deal with clients that don't send
		  MODE READER as their first instruction
	* new:	  expand our mmalloc() memory corruption detector to
		  report the source line and number the corrupted region
		  was malloc'd from. Only takes an additional 4 bytes
		  per malloc.
	* new:	  various cool http server statistical display features
	* bugfix: XGTITLE alt.foo* (i.e pattern) worked fine, but XGTITLE
	          alt.foo activated a hash table optimisation trap for
		  LIST ACTIVE specific.group -- and would return the
		  high and low water marks (etc) instead of the group
		  name
	* new:	  force a cache miss for GROUP immediately following
		  POST, so readers can see an updated article count
	* bugfix: the NoCem daemon neglected to flag itself has being
		  in reader mode, consequently, if it spoke to servers
		  that defaulted taking NNTP rather than NNRP, it was
		  unable to fetch any articles.
	* change: more specific NNTP error messages in group.c
	* bugfix: the NoCem daemon skipped all articles due to missing 
		  slaveClient directive in emitf().

2.2b7: Mon Jan 19 06:39:13 EST 1998

	* bugfix: relayUnknowns was broken during the re-organisation of the
		  cmd loop. This caused trn and some versions of tin to
		  hang on startup.
	
2.2b6:	Mon Jan 19 04:30:11 EST 1998

	* compat:	  modify ./configure to auto detect -lresolv and -lbind
	* compat:	  modify include file order in contrib/newshound/conf.h for
		  solaris 2.5.1
	* new:	  core web-server code merged
	* bugfix: some systems created mmapBaseFile with mode 0 permissions
		  due to a missing argument in nntpache.c
	* compat:	  modifiy configure.in and common/ntypes.h to handle HPUX's
		  disbelief in underscores (HPUX uses uint64_t while the
		  rest of the world uses u_int64_t)
	* new:	  greatly improved NEWNEWS handling
	* compat:	  BSDOS <time.h> included sys/types.h which caused compile-time
		  error pertaining to nconf's redefinition of FD_SETSIZE in
		  src/date.c
	* change: set the default listActiveThreshold to 0 in cf/nnconf.cf.in.
		  The default threshold of 5 was quite reasonable, but
		  until the news admin is familar with how nntpcache works,
		  it's preferable that the active file be identical (or only
		  expanded) after nntpcache lands on the scene.
	* bugfix: serverDownRecheck was declared as "int" not "time" in
		  cf/nnconf.cf.in

2.2b5: Thu Jan 15 16:51:27 EST 1998
	
	* bugfix: Some sort of depravity caused the default umask in nnconf.cf.in
		  to be set to 0755 instead of 022.
	* change: alt.nocem.misc -> news.lists.filters. The latter is more widely
		  carried.
	* new:	  Greatly expanded the last example in nntpcache.servers, as some
		  servers were placing news.nntpcache.com too high up on their
		  server list (meaning news.nntpcache.com got hit with hundreds
		  of <msgid> lookups)
	* change: -dist(ify) installed files in pgp/ so local configuration isn't
		  over-written. update INSTALL accordingly
	* bugfix: make 'install' neglected to set the ownerships of $(sysconfdir)
		  and $(localstatedir) correctly
	
2.2b4: Wed Jan 14 12:17:09 EST 1998
	
	* bufix:  nntpcache had a ceiling on msgid lengths of 127 characters.
		  Pine, in its infamy, places the hostname, operating system
		  version information, architecture information, time, Pine version
 		  etc into the Message-ID. nntpcache would silently truncate these
		  moby-msgid's to 127 characters. Changed the Message-ID length to
		  500 characters.
	* change: reverse the logic of 'PORTS'. Maintaining an uptodate list
		  of what nntpcache worked on proved futile, because nntpcache
		  functions well on most platforms now. Instead, we list
		  the platforms nntpcache doesn't work on :)
	* change: minor modifications to INSTALL to reflect -dist and
		  autodetection of promising UID/GID's
	* change: the nntpcache.* config files are now installed as
	          nntpcache.*-dist, e.g nntpache.config-dist, so old
		  configurations are not wiped-out.

2.2b3: Wed Jan 14 10:41:24 EST 1998

	* new:	  toggle nocemPGP at configure time based on detection of
		  PGP (or otherwise)
	* bugfix: installation targets in cf/Makefile.am presumed a fresh
		  install - if there was existing cache data, then the top
		  level directories became mode 600, and nntpcache was unable
		  to access them
	* new:    user definable umask
	* bugfix: consistency in directory creation permissions, sometimes
		  directories were created as 0775-umask, sometimes as
		  0755-umask. all are now 0775-umask. all file
		  creations are 0664-umask
	* change: minor extensions to strKToi()
	* new:	  confused now handles octal (0) and hex (0x) integers

2.2b2 : Tue Jan 13 17:24:10 EST 1998

	* bugfix: Exit(1) -> Exit(0) in sigpipe() - if a client disconnected before
		  QUIT (quite common), then the new Exit() handler would force
		  an abort()
	* change: updated INSTALL to reflect V2 changes
	* bugfix: misplaced debugging macro in ihave.c caused IHAVE's to fail if
		  logDebug was enabled
	* new:	  HELP command
	* new:	  adminEmail config variable (only used in HELP so far)
	* new:	  autodetect hostname at compile time
	* bugix:  code for the DATE command was present, but the keyword had gone
		  walk-about
	* new:	  nntpcache news server (for nntpcache.* groups) now open to
		  the world on news.nntpcache.com! example config file changes to
		  reflect this.
	* bugix:  final \n was missing from nnconf.cf.in causing some systems
		  to ignore the last entry (mmapBaseFile)
	* compat:	  libproff/utils.c now has a setenv() -> putenv() wrapper
		  for systems missing setenv () - e.g solaris 2.5.
		  redundent tests for HAVE_SETENV in nntpcache.c removed.

2.2b1: Mon Jan 12 17:08:22 EST 1998

	* new:	  autoconf detection of PGP
	* new:	  autoconf detection of available nntpcache UID/GID's
	* new:	  autodetection/adaption for FD_SETSIZE
	* new:	  confused is now capable of generating and parsing arbitrary
		  configuration structures, code changes all-over to
		  reflect this
	* new:	  assertion macros from marutukku
	* change: general code rationalisation
	* new:	  Exit() now a macro to eliminate compiler warnings
	* compat:	  adaptive handling of mmap address differences
	* new:	  smarter handling of /* */ style comments in nntpcache.servers
		  parsing code
	* new:	  strXMListAdd()/strXMListFree(), shared memory versions
		  of libproff functions strListAdd()/strListFree()
	* new:	  conf.[ch] -> nnconf.[ch] to reflect changes in
		  confused
	* new:	  smarter logging during list merges
	* new:	  autoconf'ed internal fixed-bit type system, n_8 -> n_u64
	* new:	  handle lame newsgroup listings (newsgroups with
		  out any descriptions)
	* new:	  smarter NNTP error message output in group.c
	* new:	  safeGroup characters now definable in config
	* new:	  highly optimised safeGroup()
	* new:	  smarter NNTP error message output in date.c
	* new:	  statsArticleID now settable at run time
	* change: smarter NNTP error message output in article.c
	* change: X() auto-extern/prototype generator changed to
		  the more sophisticated and TAGS friendly
		  EXPORT macro system. Code changes throughout
		  to reflect this.
	* new:	  migration of all make files to GNU automake
	* new:	  complete source tree reorganisation
	* new:	  "FAQ" and "FAQ.html"
	* new:	  "HACKING" documentation
	* change: overviewFmt -> overviewFmtInternal,
		  overviewFmtDef -> overviewFmtBozo (migrated to
		  stringl types, the name changes are designed to
		  be incompatible with older configuration files)
	* new:	  ihaveSpeedHandshake -- fast multiserver IHAVE
		  handshaking
	* new:	  readersMax config keyword - limit concurrent
		  reader population
	* new:	  postStripHeader config regex
	* new:	  serverDownRecheck config keyword
	* new:	  complete NoCem daemon and PGP support code.
	* new:	  NoCem config keywords: nocem, nocemIntitialScan,
		  nocemInterval, nocemGroups, nocemFrom, nocemType,
		  nocemAction, nocemPGP, nocemPGPbegin, nocemPGPend,
		  nocemPGPcommand, nocemPGPgood, nocemPGPPATH
	* new:	  NoCem pgp dir -> contains public keys for most
		  valid NoCem posters
	* new:	  libconfused - smarter handling of quotes
	* new:	  libconfused - support for new `stringl' type
	* new:	  cleaner headers in libproff/*.c
	* bugfix: libproff/str.c/strStackAdd() had dubious boundary
		  allocation methods
	* new:	  NoCem access controls in acc.c
	* new:	  more intelligent error message handling in group.c
	* new:	  verbose setproctitile() suport throughout
	* new:	  smarter/multi-server IHAVE support
	* new:	  unsafe group stripping during list merge phase
	* new:	  active threshold (listActiveThreshold) and
		  (listPermitLoneyness) configuration variables
	* new:	  improved logging for in list merge phase
	* new:	  NOTREACHED macro
	* new:	  various new logging macros in log.h
	* new:	  logListMerge and logListCorrelation configuration
		  variables
	* new:	  html source code analysis/tour
	* new:	  www.nntpcache.com web pages
	* new:	  nntpcache.com back again
	* new:	  -f flag (with [acnu] arguments) to hold off execution of
		  children (used for debugging)
	* new:	  Complete restructuring of nntpcache.c to support
		  internal daemons in addition to general hardening.
	* new:	  make_vm_proc() and retire_vm_proc() for internal
		  daemons.
	* new:	  Regex based generic header stripper for post.c
	* new:	  Global sever availability status now monitored
		  and used to intelligently bypass faulty servers
		  across multiple clients
	* new:    Generic method of writing efficient loop-back daemons -
		  emit*() routines modified to capture data that would
		  have ended up being send to the client in a strStack
	* new:	  NoCem statistics support in stats.h
	* new:	  NoCem support for xovers
	* change: smarter handling of XHDR fields
	* change: truth values now returned by most CMD* functions
	* new:	  confused has a new type "stringl" which defined
		  a struct strList linked list of strings
	* change: all round smarter handling of xover format definitions
	* new:	  smarter handling of mmap base addresses when
		  mmapAnon is not used/available, the first
		  acquired base address is used and
		  tracked via con.mmapBaseFile
	* bugfix: typos in nntpcache.c caused anonMmap option
	          to be always true in certain circumstances.
	* bugfix: If the client idle time was set to n seconds
	          and n-m seconds had elapsed (| 0<m<n) and
	          the client issued a command that took longer
		  than m-n seconds, the client would erroniously 
		  find itself idle nuked.
	* new:	  QUICK keyword for the access file, completes
	          rule parsing on the current entry.
	* bugfix: some sscanf implementations insist on passing the
	          entire string to be sscanf'ed - this caused problems
		  at one place in article.c where the string to be
		  passed was not \0 terminated. 
	* bugfix: Under some circumstances double frees could occur
	          in xover.c and post.c, resulting in the infamous
		  "memory corrupt" error.
	* bugfix: a close in xover.c was using (recently) freed data
	* bugfix: When delayed server binding was introduced it broke
		  IHAVE support (sent `mode reader' on server connect)
	* new:	  use 64bit ints (if available) or doubles for statistical
		  byte counters (some stats were wrapping around due
		  to the low ceiling of 32 bit ints)
	* bugfix: keyword entry for LAST was (bizarrely) missing
	* new:	  IHAVE permission flag added to access controls
	* bugfix: Various bogosity in libproff/str.c strcase* fixed
	* new:    Added SO_KEEPALIVE to more frequently detect network
	          hangs
	* change: Minor changes to make clean
	* bugfix: improved syncing of next/last article numbers

1.0.7 : Sat Jul 12 08:35:05 EST 1997

	* bugfix: various statistics are now correctly collected
	* new:	  statistics structure is now saved to disk immediately
	          after every update daemon excursion
	* change: quite a few minor optimisations
	* new:	  statistics collection now bypasses IPC, using
		  shared memory instead
	* new:    auto-detection of statistics file version changes
	* new:	  allow fetching of stats via magic article-id
		  <stats@nntpcache>
	* compat:   remove ftell method of of client byte counts
		  (broken under linux)
	* change: remove %m from syslog wrappers that didn't
	          set errno
	* bugfix: SIGHUP (re-read config file) caused nntpcached
	          to stop listening to ports
	* change: Exit() now uses parameters
	* new:    nnrpd compatible logging messages - permits
	          nnrpd statistics gathering programs to process
		  nntpcached logs
	* new:	  add per-group counting for the above
	* new:	  CPU (user/system) time accounting
	* bugfix: typo in libproff/utils.c malloc wrappers meant
		  the code would loop forever trying to allocate
		  memory, even if none was available
	* bugfix: proctitle implimentations which use argv space
		  were over-writing command line configuration
		  strings. this meant -c, -a and -b could not
		  be used correctly
	* bugfix: -r (zorching) attempted to remove files based on
                  the default location, rather than the config file
	* bugfix: genextern.sh was generating unneeded declerations
	* bugfix: under certain circumstances white-space in xover xref headers
		  would be dropped
	* bugfix: multi-server same group article number collision for xovers
		  wasn't being delt with correctly as the article number wasn't
		  stripped off during server lookups
	* new:	  remoteIdleTimeout - drop the connection to
		  a remote NNTP server if the data channel remains
		  inactive for longer than this period. 

1.0.6 : Tue Apr  1 23:36:49 EST 1997 /* no joke :) */

	* compat: snprintf/vsnprintf functions in
		  libproff for systems that didn't have it.
	* compat: setproctitle support code in libproff for
		  systems that didn't have it in libc
		  (the majority).
	* update: autoconf 2.12
	* bugfix: Permit ':' in path's. Safepath() didn't
		  permit ':' before and as a consequence
		  some operations on servers on ports
 	          other than 119 failed.
	* change: various optimisations thoughout
	* change: updated version of user-contributed
		  pre-caching code "newshound" from
		  Andre Dedio.
	* new:	  re-thread the newsgroup nodes with an
		  activity queue. we don't actually use this
		  thread yet, but it forms the backbone of
		  the active-pre-cache code.
	* new:	  active re-writing of colliding Xref:'s. It was
		  possible on a multi-server configuration to
		  experience articles that were cross-posted to
		  newsgroups, spaning news servers. Because
		  different servers have different article
		  numbering for the same group, it was possible
		  for news-readers to falsely take the view that
		  an article in a group handled by another
		  server has already been read when it has not.
		  This sometimes caused even more severe problems
		  with trn4, when the false-article count was
		  over high-water - causing trn4 to believe that
		  ALL the messages in the affected group were
		  read sometime into the future.
	* bugfix: when a group was in the group list, and the group
		  information had expired in the cache, and the
		  designated server refused to serve the server
		  refused to serve the group, TWO error messages
		  were given instead of one (confusing news readers).
	* new:    optimise LIST {list-type} pattern, where "pattern"
		  is actually a fixed newsgroup (i.e not a pattern).
		  trn fetches group information using this evil
		  construct.
	* compat: modify genextern.sh to use only sed and egrep, and
		  avoid the use of cpp(1). some cpp's (noticibly
		  linux) didn't work correctly with the below form:

			#define foo(x) #y

		  or

			#define foo(x) x
			foo(#foo)
	* bugfix: history collection for groups with _ in their
		  names was buggy
	* change: lower syslog priority of bad client quit's to
		  DEBUG

1.0.5: Tue Mar  4 22:27:05 EST 1997

	* bugfix: we lied in 1.0.4 when we said the history rebuilding
	          code was fixed ;)

1.0.4: Mon Mar  3 17:54:47 EST 1997

	* compat: work around for OSF "memory currupt" - the OSF
		  rtld was calling malloc() before entering main()
	* compat: revamp automatic extern generation 
		  as OSF/1 CC choked macro(#ifdef)
	* compat: change itod() and dtoi() -> nnitod(), nndtoi()
		  as AIX/HPUX used dtoi() for vnode manipulation
	* bugfix: history rebuilding code didn't actually work
		  due to missing space
	* change: smarter locating of cpp for genextern
	* bugfix: spelling police

1.0.3: Tue Feb 25 02:07:47 EST 1997

	* change: improved logging/scanning in build_history.c
	* compat: remove usage of isblank() (sunos didn't have it)
	* change: smarter use of MAX_SYSLOG
	* compat: undef itod in libproff/time.c (apparently
		  itod(x,y) is an inode macro under HPUX/AIX)

1.0.2 : Sat Feb 22 04:26:32 EST 1997

	* new: 	  rebuild history file code
	* bugfix: use available blocks not free blocks
		  for space checks
	* bugfix: fix HAVE_STATFS #ifdefs
	* new:	  setproctitle support throughout
	* compat: be smarter about MIN/MAX defines
	* misc:	  new credits
	* change: better debugging of suspect groups
	* bugfix: special case body length buffer
		  calculation (was causing problems
		  for trn)
	* bugfix: kill double free in ipc.c
	* compat: change a %lu to %u for 64 bit systems
	* bugfix: smarter overview_fmt hanlding
	* bugfix: track cwd more effectively
	* bugfix: specific binding actually works
		  now from the command line, not just
		  config file
	* bugfix: work-around for strange fd behavior
	* change: more uniform logging thoughout
	* bugfix: removed FILE* mem leak
	* change: tell idled out clients that we have
		  had enough, rather than dropping
		  them silently (which confused)
	* change: better error reporting in file
		  locking code
	* bugfix: case-independent pattern matching
	* change: better PAGESIZE support
	* compat:	  use bcopy on systems without memmove
	* new:	  newshound (contributed software)
	
1.0.1 : Sat Nov  9 06:55:34 EST 1996

	* change: rationalisation of autoconf defines
	* change: groups with zero messages ever passed
		  through them were stripped out of
		  the active file, we now pass them
		  through, just in case an nntpcache
		  user wants to be the first poster ;)
	* bugfix: SIGHUPing nntpcached would sometimes
		  confuse it as to the cwd
	* compat:   some systems define MMAP_ANONYMOUS
	          but not MMAP_ANON, we now test and
		  correct for this
	* compat: ./configure wasn't detecting mmap
		  in situations where it should have
		  been. we now just test for the
		  call with configure and use our
		  own code for the back-magic stuff
	* bugfix: some mmap detection macros were
		  mutually exclusive
	* bugfix: mmalloc ported to 64 bit 
		  memory systems

1.0    : Sun Oct 20 23:05:39 EST 1996

	* Woo!

0.93.4 : Mon Oct 14 12:29:30 EST 1996

	* compat: fixed configure/path
                problem with FreeBSD port
 	* compat: updated solaris+GCC2.7.2 port

0.93.3 : Tue Oct  8 11:38:15 EST 1996

	* bugfix: <msgid> handling
	* bugfix: un-needed group negotiation
	* bugfix: re use of xover buffer offsets
	* bugfix: xover bitmap initialisation
	* bugfix: handles long (non-rfc) lines

0.93.2 : Sun Oct  6 11:38:19 EST 1996

	* small bug fix in anti-caching of
	  expired xovers

0.93.1 : Sat Oct  5 19:09:03 EST 1996

	* several important bug fixes

0.92.8 : Mon Sep 16 09:36:21 EST 1996

	* FreeBSD ports file
	* rationalisation/autodetection of
	  target directories

0.92.6 : Sun Sep 15 20:12:31 EST 1996
	
	* bugfix: a patch was submitted that changed
	  a strcasecmp() into a strCaseEq(), for a
	  system that was missing strcasecmp(). However,
	  the tri-code nature of strcasecmp() was needed,
	  and the boolean strCaseEq() just didn't cut it.
	  As a result several GROUPish things broke.

	* replacement strcasecmp() added for compatibility.

0.92.5 : Mon Sep  9 04:06:52 EST 1996

	* bugfix: a bad file descriptor would sometimes creap
          into the master select() mask, causing the master to
          exit, or (0.92.4) endlessly select

0.92.4 : Thu Sep  5 01:15:03 EST 1996

	* Unixware port
	* spam.filter expanded
	* xover/xhdr filters may be toggled seperately to
	  stat/head/body/article filters
        * listen() queue increased to 50
	* bug fix, multi-line filter definitions
	  were not read in correctly
	* bug fix, xover filters did not scan
	  the entire header value
	* bug fix, master deamon would exit when
	  select() failed
	* bug fix, non-cached article headers were
	  not displayed correctly causing some
	  news readers to behave strangely
	* bug fix, expired xover caching was
	  still requesting some expired xovers

0.92.3 : Wed Sep  4 04:14:51 EST 1996

	* minor bug fix in to server traffic logging
	* addressed more portability issues in
	  mmap() routines
	* tweaked solaris port. solaris 2.3 couldn't
	  compile due to lack of getpagesize()

0.92.1 : Sat Aug 31 14:47:39 EST 1996

	* enhanced robustability for list collation
	  code. Daemon exists previously,
	  if a server refused an overview.fmt list
	* removed use of MAP_FIXED in mmap routines. This
	  was inherrently non-portable.
	* other minor tweaks here and there

0.92.0 : Mon Aug 19 15:15:58 EST 1996

	* added compile time support for Electric fence
	  (a VM based malloc checker) no malloc under/over
	  runs detected thus far.
	* article handling optimised (again)
	* use MMAP_ANON or /dev/zero if possible
	* made groupSecurity on LISTs a seperate option to
	  cut down on overhead involved in performing
	  security checks on every line of the list
	* content filters for xover/xhdr/head/article/body
	  and stat. looks kind of impressive, but has
	  hasn't been tested yet
	* optimised article caching. e.g articles are now
	  mmaped rather than read(), and we write out
	  full articles in a single write() from an mmaped
	  region
	* mmap capability testing. mmap implimentation's
	  differ in how they handle a number of situations.
	  we now test for a large number of behaviours at
	  compile time and generate macros from the
	  results (autoconf style)
	* cache information about which xover's no-one has.
	  previously, we would ask for any range of xover's
	  not in the cache. this was a problem when articles
	  were cancelled or expired early as it left "holes"
	  in the cache which would nntpcache would try to
	  futilely attempt to fill.
	* circular stack xover file descriptor cache, and 
	  xover index cache
	* fortified all sprintf's
	* AUTHINFO security routines. not completely finished yet.
	  advise against use.
	* Check newsgroup names for suspect characters
	* Prettier change log
	* Better error handling. Previously when a nntp-server
	  died, the nntpcache child would also die. now we
	  only block those functions that would have used
	  that server.
	* Improved STAT caching. STATS are now handled as
	  HEAD's internally
	* Fixed memory leak in article caching
	* Fixed small messageid bug in posting code
	* Save overview.fmt's to disk, incase we can't reach
	  the applicable server's on startup
	* Disabled setvbuf, was causing SEGV's under linux (weird)
	* /**/ comments in servers/groups file
	* Lots of server/group examples
	* Check server Xpath's etc for suspect chars/strs (e.g "../")
	* XPATH caching
	* daemon() for systems that have it
	* NEXT/LAST implimented (not cached yet)
	* vsnprintf for logging macros
	* AIX port
	* Greater granularity in caching controls
	* GROUP cached
	* Current group is CWD. Speeds namei translations.
	* Per-server cache hierarchies (removes possible xpost collisions)
	* Now able to use multiple ports/news_servers same on same host
	* Enhanced traffic logging
	* Optional relaying of unknown commands
	* Optional replacement of "Organization" header in POSTs
	* Removed "Default Server" concept
	* Delayed startup (cool)
	* Large stdio/socket output buffers
	* Config files moved to /etc/nntpcache
	* Pattern matching for NEWGROUPS/LIST *
	* Group level security on output of NEWGROUPS/LIST *
	* Complete internal merge of newsgroups/active/active.times/.tide
	* FULL shared memory operation and mmaped mmalloc (yay!)
	* Complete re-write of list.c
	* NEWGROUPS caching implemented
	* XGITLTE implemented
	* Bug fix to blocks free expire code
	* All documentation moved to doc directory
	* New docs
	* Autodetect for strcasestr
	* Removed a few case dependencies
	* Bug fixes in get by <msgid> security code
	* Ports for native SGI cc
	* Auto-detect for strcasecmp - NCR sysvR4 port needed it.
	* Removed nntpcache.stats newsgroup. nntpcache.stats file
	* still persists. (crashed some netscape readers)
	* configure.in now checks for gcc -O2 strength-reduce bug.

0.88.3UL: Fri Jun 14 20:29:38 EST 1996

	* New access controls.
	* Group security controls now workd for fetch by <msgid>.
	* Multi-server NEWNEWS support added (dodgy).
	* Pass on unsupported commands instead of blocking.
	* Minor logging changes.
	* New contributed perl log parser (contrib/p.pl).
	* strdup added to libproff for systems that don't have it.
	* IHAVE support added.
	* Multi-server NEWGROUPS support added.
	* Cleanup of access/remote hostname code.
	* NNTP response changes for newsdump compatability.
	* Dbz portability.
	* Fixed bug in xover.c (missing \r\n when no overview.fmt found)
	* Bug fixes complete with replacement bugs ;)

0.88.2UL : Thu Jun  6 18:36:52 EST 1996

	* Fixed -Wall and -pipe auto-detects in configure.in
	* Ported to HP-UX 9.05.
	* Little bug fixes.

0.88.1UL : Thu Jun  6 08:43:59 EST 1996

	* Bug fixes.
	* Solaris port.
	* chroot() option.
	* New security / nntpcache.access stuff
	* More statistics.
	* Rationalised nntpcache.config
	* Optimisations.

0.87.9UL : Sun Jun  2 01:59:42 EST 1996

	* Too many to describe really. But among the more visible were...

	* Many bug fixes and optimisations.
	* Rationalisation of the logging system.
	* XHDR caching (merged with xover cache).
	* Automatic xover format translation.
	* User definable fields to keep in xover cache.
	* Enhanced docs and auto-configure.
	* New site distribution site: nntpcache.com (!)
	 LocalWords:  nacf bugfix src ihave
	
