This is the NEWS (history) file for the Cats library:

* (2.02) I didn't remove db_init() and db_free() from lib/catgets.c.
  This fixes that error.  Note that this is just more clean-up, and
  does not change the functionality at all, because I included the
  compatibility functions.  Looks like even I can benefit from my own
  helpfulness!

* (2.01) Oops.  I didn't build this before I made a release.  This is
  a fix to lib/catgets.c so it will build properly, and to
  src/makefile.bc so it will build the foo2.exe test program.

* (2.0) Replaced the back-end db storage system with a hash.  This is
  much more efficient.  Also, this makes it easier to code.  Note that
  this will require some changes to any programs that were using the
  underlying db storage system directly (you shouldn't have been doing
  that, anyway.)  Specifically, these functions were deprecated:

   db_init()    - sets the initial size of the db array
   db_free()	- free the memory associated with the db array
   db_compare() - no one should have been using this anyway!

  If your program used these functions, you will be happy to know that
  compatibility functions were put in that "fake" a successful return.
  So you don't have to re-write your program right now, but you will
  want to remove your dependencies on these very soon now.

  Also, the db_insert() function has changed in release 2.0.  Instead
  of returning an "int", it now returns "db_t *".

* (1.8) Added a hack to make a compromise between those who want to
  use 2-letter language codes, such as LANG=en, and those who want to
  use the long country codes, such as LANG=en-UK. If a 2-letter code,
  then Cats keeps it.  If longer than that, and it is of the form
  "xx-YY" then I chop it off at the "-". Else, I just truncate to 3
  characters to make a file ext.  This bit should work fine.  (Also
  renamed NLS\CATS.X to NLS\CATS.XX, so I could do better testing.)

* (1.7) fixed the bug in the BUGGY_CODE.  It now seems to work the
  way it is intended.  Removed the UNIX Makefiles, since this has
  been DOS-only for a while now.

* (1.6) added code that defines the catalog file in terms of NLSPATH
  and LANG as %NLSPATH%\%LANG%\cat (was %NLSPATH%\cat.%LANG%).  I have
  not tested this new code, so I protected it in a '#ifdef BUGGY_CODE'
  block.  To test it yourself, do a '-DBUGGY_CODE' when you compile.

* (1.5) updated catgets.c so that any message catalog string that has
  '#' as the *first* character on the line is ignored (a comment.)  I
  didn't test-compile this, but it should work out okay.

* (1.4) implemented MCLoadBySet and MCLoadAll as symbolic constants in
  catgets.h, so that now your UNIX programs that use these constants
  will work without changes.

* (1.3) catopen() now opens a file if 'name' contains a directory
  separator ('\' for DOS) and opens a system-wide catalog file
  otherwise. Currently, catopen() will assume 'name' is the base name
  of a message catalog file, and uses NLSPATH and LANG to open the
  correct file. Most programs would probably open a catalog called
  "myprog" and there would be a corresponding "myprog.en" available for
  English and "myprog.de" for German.

* (1.2) now uses NLSPATH as a directory that contains the message
  catalog files, and LANG as the country abbreviation.  catopen() now
  looks for the message catalog as %NLSPATH%\name.%LANG%

* (1.1) first release that compiles cleanly on DOS systems.  Renamed
  my dcatgets() to catgets(), etc., so that I now provide a UNIX-like
  catgets() library for DOS.

* (1.0) first release: a simple in-memory key-value database.  It is
  only capable of inserting values and fetching them.  You are not
  able to delete entries once they are there.
