$Id: NEWS,v 1.17 2006/10/15 12:09:02 airborne Exp $


This file describes the external changes and important bug fixes
between different libcddb releases.  These changes might impact the
programs that use this library.  It does not describe every single
change made to the code tree.  An overview of the CVS changes can be
found in the Changelog file.


CHANGES 1.2.2 -> 1.3.0

* [IMPORTANT] The text search functionality currently does not work
  anymore.  This feature uses the search form on the freedb.org
  website.  But since this form has disappeared, text search fails.
  In the mean time you might make use of the album command of the
  freedb2.org servers (see below).

* [NEW] Support was added for the 'album' command of the freedb2.org
  servers.  This feature can be used to do a text search for a certain
  album.  It does not perform any HTML page parsing but uses an
  extension of the CDDB protocol.  As input the function needs a disc
  with either the artist or title filled in.  The results are similar
  as for the query command; i.e. a list of matching disc IDs together
  with their categories.  The example program also supports this
  feature.

* [NEW] Functions where added to set (libcddb_set_flags) or reset
  (libcddb_reset_flags) some flags.  The flags used influence the
  behaviour of the library.  By default all flags are disabled.
  Currently the following flags are available:
  - CDDB_F_EMPTY_STR: When this flag is set, the library will never
    return a NULL pointer for a string.  Instead the empty string will
    be returned.
  - CDDB_F_NO_TRACK_ARTIST: When this flag is set, the library will
    not return the disc artist if the track artist is undefined.  A
    NULL pointer (or the empty string if CDDB_F_EMPTY_STR is set) will
    be returned instead.


CHANGES 1.2.1 -> 1.2.2

* [BUGFIX] Correctly specify the character set (UTF-8) when submitting
  data to a server.


CHANGES 1.2.0 -> 1.2.1

* [NEW] It is now possible to fine tune the text search by specifying
  which fields and categories to consider.

* [BUGFIX] Fixed cddb_sites function returning random values due to
  uninitialized value.

* [UPDATE] The value of the LIBCDDB_VERSION_NUM defined variable is
  now 121.


CHANGES 1.1.0 -> 1.2.0

* [NEW] Support for searching the FreeDB database using a text string
  has been added.  This feature has a similar API as the query
  command but uses a string instead of actual disc data.

* [UPDATE] The value of the LIBCDDB_VERSION_NUM defined variable is
  now 120.


CHANGES 1.0.2 -> 1.1.0

* [IMPORTANT] The installed header files now no longer contain any
  actual structure definitions.  All libcddb structures are now truly
  opaque for the user of the library.  Some of the structures have
  also been updated.  This means that the library is not binary
  compatible with the previous version.  It should however be possible
  to just recompile any software using libcddb and link it against
  this new library.  The API is backwards compatible so no changes to
  the software should be necessary.

* [NEW] Support for the FreeDB sites command that can be used to get a
  list of mirror servers.  A function was also added to initialize the
  libcddb server connection data using one of the servers returned by
  this command

* [NEW] A new error code was added (CDDB_ERR_INVALID) that is returned
  when invalid input parameters are passed to one of the library
  functions.

* [UPDATE] The value of the LIBCDDB_VERSION_NUM defined variable is
  now 110.


CHANGES 1.0.1 -> 1.0.2

* [NEW] Added cddb_set_http_proxy_credentials function that allows you
  to specify proxy user name and password in one go.  It also does not
  store the user's credentials as cleartext in memory.

* [FIX] An extra error code/message has been added to signal proxy
  authentication failure.


CHANGES 1.0.0 -> 1.0.1

* [NEW] Added --without-cdio option to the configure script so you can
  manually disable CD access support for the example program.

* Fixed iconv compiler warnings for Solaris and Cygwin.

* Fixed regex compilation issue on MacOS X.


CHANGES 0.9.6 -> 1.0.0

* [NEW] Added support for proxy authentication.

* [BUGFIX] Memory leaks fixed in regular expression handling.

* Iconv compilation fixes for Solaris.


CHANGES 0.9.5 -> 0.9.6

* Libcddb now uses the FreeDB protocol version 6.  The difference with
  version 5 is that now the responses from the FreeDB server are in
  UTF-8 format instead of ISO8859-1.  So if the CD you query contains
  non-US-ASCII characters the results will be different in this new
  version of libcddb.

* [NEW] It is now possible to set the character set that libcddb has
  to use when returning disc data (see also above).  Use the
  cddb_set_charset function to set the user's character set.  The
  example program, cddb_query, now also has a command-line option for
  specifying the character set.

* [BUGFIX] FreeDB changed the specs of their CDDB file format.  The
  results for certain discs failed to parse correctly because the
  libcddb parser was too strict.  This should be fixed now.

* [BUGFIX] When writing disc to cache, fill in category if genre is
  not specified.

* [BUGFIX] When in CACHE_ONLY mode, do not perform network access when
  writing disc record.


CHANGES 0.9.4 -> 0.9.5

* It is now possible to query CD entries if you only know the track
  length.  Previous versions of libcddb needed the track offsets from
  the CD.  Track offsets will be calculated automatically when a
  length is specified and the offset is missing.  This is less precise
  than using the actual frame offsets.  So whenever possible use the
  offsets instead.

* Fixed some possible buffer overflows.  The internal buffer size has
  also been increased from 257 to 1024 bytes.  It is now also possible
  to change this buffer size in the cddb_cmd.h.

* Updated regression tests with less strict testing.  Changes in the
  queried CDDB entries should no longer trigger a test failure.

* Improved support for Win32 platforms (thx to Rocky Bernstein).

* Improved support for Mac OS X (thx to Rocky Bernstein and Derk-Jan
  Hartman).

* It is now possible to specify the CD-ROM device to be used in the
  example program.


CHANGES 0.9.3 -> 0.9.4

* The libcddb now installs a pkg-config(1) configuration file.

* Support for tilde-expansion (~) in the local cache directory has
  been added.  If the cache directory starts wit a tilde and the $HOME
  environment variable is defined, then the tilde will be replaced by
  the value of $HOME.

* All the networking code (DNS query, connect, read, write) now
  supports time-outs to prevent blocking indefinitely.  By default
  this time-out is set to ten seconds.  See the cddb_conn_t structure
  for more information.

* A logging framework was added.  This framework supports different
  log levels and provides the possibility to install a custom log
  handler.  (based on a similar framework in libcdio, thx Rocky)
  Because of this new framework, the --enable-debug configure
  parameter has been obsoleted by --enable-loglevel=LVL.

* Added support for extended disc and track data.  The parsing has
  been updated and getters and setters were added to the disc and
  track structures.

* If the DTITLE field of a CDDB entry does not contain both an artist
  name and a disc title, libcddb assumes that they are equal.

* Extra regression tests were updated and added.  The test framework
  was also improved to skip proxy tests if the http_proxy environment
  variable is not defined.


CHANGES 0.9.2 -> 0.9.3

* [SECURITY] The default values for the user name and the host name
  that is used when contacting a CDDB server have been changed to
  'anonymous@localhost'.  Libcddb used to take the values from the
  $USER and $HOSTNAME environment variables if they were present.
  This would reveal confidential information about a user without that
  person knowing it.  It is still necessary to use a valid e-mail
  address when submitting a new or updated CDDB entry to the server.
  The libcddb write command will fail if the default value are still
  present.

* Extra regression tests were added to test caching behaviour.

* Some getters and setters were added for fields in the connection
  structure.

* It is now possible to customize the program name and version that is
  used when contacting a CDDB server.  This used to default to
  'libcddb' and the version number of the library being used.  Now it
  is possible for a developer to use the name of the program using the
  library.


CHANGES 0.9.1 -> 0.9.2

* [BUGFIX] There was a problem with multi-line track titles.  The
  title was being appended to title of the disc instead of to the one
  from the track.  This should now work correctly.

* [BUGFIX] The parsing state machine did not correctly detect the end
  of the stream if there was no extended data present.  This has been
  fixed by putting the state machine in the STOP state when the end of
  the stream is encountered.

* [BUGFIX] Fixed some memory leaks reported by Valgrind.

* The example program now returns the libcddb error code when exiting
  after a failure.  Proxy support has also been implemented.

* The regression tests have been expanded to include scripts that test
  the libcddb CDDB entry parser and networking code.  These networking
  tests need Internet connectivity and a working proxy server enabled
  through the http_proxy environment variable.


CHANGES 0.9.0 -> 0.9.1

* A Gentoo Linux ebuild file has been added in the misc/ directory.

* It is now possible to delete a disc/track title and artist name by
  setting it to NULL using one of the set functions for these fields.

* [BUGFIX] In the previous release, when reusing a CDDB disc structure
  for subsequent read operations, the disc and artist name were
  appended to what was already present in the structure.  This has
  been fixed by reseting those strings before setting the new values.

* The example program has been improved.  It now supports two extra
  commands.  One can be used to calculate the disc ID.  The other will
  query a CDDB server and report any matches that are found.  Support
  was also added to retrieve the necessary disc information from a CD
  in the CD-ROM drive.  To use this feature you will need an extra
  library, i.e. libcdio.  Information about this library can be found
  at: http://savannah.nongnu.org/projects/libcdio/.

* Extra getters and setters were added and the documentation of other
  library functions has been updated.


CHANGES 0.1.6 -> 0.9.0

* The src/ directory has been removed from the distribution.  But a
  new examples/ directory was added.  Currently the example program
  only supports the CDDB read command.  This example will be expanded
  in order to demonstrate every public function of the library.

* Local CDDB cache semantics have been expanded.  Next to the option
  to enable and disable caching that was already present, it is now
  also possible to force the use of the cache.  When this
  functionality is enabled and an entry is not found in the local
  cache a CDDB_ERR_DISC_NOT_FOUND error is returned.  Three functions
  have also been added to set the desired caching mode:
  - cddb_cache_enable(c)
  - cddb_cache_only(c)
  - cddb_cache_disable(c)
  All three functions expect a CDDB connection structure as a
  parameter.

* Several get and set functions have been added to the API.  It is my
  intention to have such functions for every possible field that a
  user is allowed to alter in the different library structures.  This
  will prevent problems in the future if the internal structures
  should change.

* When the length of a CD track is not set when you call the
  cddb_track_get_length function, it will be calculated.  The
  calculation uses the frame offsets of the current and next track and
  possibly the disc length.  The current implementation does not do
  any rounding of the calculated value to the nearest second.
  Therefore it is possible that the sum of the track lengths does not
  equal the disc length.  If the length can not be calculated -1 is
  returned.

* The network access code has been rewritten to use the network
  sockets directly instead of wrapping them in file descriptors.  This
  should enable BeOS users to use the library without having to change
  any code.  I don not have a BeOS system myself and am still waiting
  for a confirmation whether the changes were enough.

* Support has been added for reading CDDB entries that have
  multi-lined fields.  Support to also split certain fields into
  multiple lines when writing them (to the network or disc) is not yet
  present.  The FreeDB spec states that no line should be longer than
  256 characters.  This limit is not yet checked.

* Support to parse the year field of a CDDB entry has been added.
