RELEASE-1.0.3 (30-Jan-2005)
===========================

 -- Incorporated changes from Jon Leonard for building on Solaris with Sun's C
    compiler instead of GCC.
 -- Added this log of changes to the distribution, and removed safestr-c99.h
    from the distribution (this file is automatically generated--how did that
    get into EXTRA_DIST?!?!?!)
 -- Fixed safestr_join() so that if the joiner string is a temporary and the
    list of strings to join together is empty, the joiner string will be freed
    as expected.
 -- Fixed safestr_resize() to copy the null terminator not normally included in
    a string's length upon growth.
 -- Fixed safestr_search() in a forward direction to properly find the
    substring in a string when the substring and string are the same.
 -- Added new convenience APIs: safestr_asprintf(), safestr_vasprintf(),
    safestr_startswith(), and safestr_endswith()
 -- Fixed string comparison functions to return proper results when the two
    strings are of differing lengths and a limit is specified.
 -- Fixed string comparison functions to do a quick pointer check as appropriate
    in an effort to possibly speed comparison.


NOTE: The changes documented for SafeStr release prior to 1.0.3 were found by
      comparing the versions; a change log was not well kept.  In some cases,
      the changes were extensive, and a completely accurate log of the changes
      was very difficult to ascertain.  The list of changes below should not be
      considered 100% accurate.


RELEASE-1.0.2 (19-Nov-2003)
===========================

 -- Removed the man pages contributed by Jose Nazario from the installation.
    They are still present in the distribution, however.  The man pages have
    been removed because they are out of date.
 -- Added a new flag to configure, --enable-profile, which will enable the
    GCC flags for building with profiling information.  This flag may not work
    with compilers other than GCC.  Patches welcome.
 -- Changed reference counts from 16-bit integers mixed in with the string's
    flags to a separate 32-bit integer.
 -- Fixed output functions in the printf-style formatting functions to not
    throw an exception if there's nothing to be written.  This only happens
    on some platforms (Linux is the only one found so far), because fwrite()
    returns 0 even when the size argument is 0, regardless of the nmemb
    argument.
 -- Fixed the printf-style formatting functions to properly convert integer
    values evenly divisible by 10, but greater than 10 without adding an extra
    zero on the end!
 -- Properly deal with reference counts for %s SafeStr strings in the printf-
    style formatting functions so that SAFESTR_TEMP strings get freed as they
    should.
 -- Fixed the internal string resizing function to properly adjust reference
    counts in a reallocated string that gets copied from another.
 -- Fixed XXL asset management on strings so that a string saved as an asset
    outside of SafeStr that gets a new pointer value as the result of a resize
    gets the asset updated automatically.


RELEASE-1.0.1 (16-Sep-2003)
===========================

 -- Fixed a benign compiler warning that somehow managed to get overloooked in
    the previous release.
 -- Changed string handling so that strings with a reference count > 1 become
    implicitly immutable.  That is, safestr_isreadonly() may return 0, but the
    string is still immutable because of its reference count.


RELEASE-1.0.0 (10-Sep-2003)
===========================

NOTE: This release introduced several binary incompatibilities from 0.9.6.  You
      must recompile and relink anything that used 0.9.6 to use 1.0.0.

 -- Updated the version of XXL bundled with SafeStr from 0.9.5 to 1.0.0.
 -- Fixed a broken type definition in the generated safestr-c99.h on some
    platforms (intmax_t was being defined twice when one of them should have
    been uintmax_t).
 -- Modified memory allocation functions to pass __FILE__ and __LINE__ along
    with them for tracing and debugging purposes.  Fixed internal string
    reallocation functions to better handle XXL asset management.  This change
    means that the signatures for malloc, realloc, and free functions have
    changed.
 -- Changed the printf-style formatting functions to allow a NULL pointer to be
    passed for a %s format specifier.  In such a case, the string "(null)" is
    used instead of throwing an exception.
 -- Fixed bake_cookie(), which is used to get a random value that is stored
    with every string, to handle the case where 0 is the random value chosen.
 -- Fixed length calculations in safestr_duplicate() when SAFESTR_COPY_LIMIT
    is used.
 -- Fixed a few places where string tainting information would get corrupted
    if an exception was thrown before the string modification operation could
    complete.
 -- Changed safestr_reference() to return the string being referenced instead
    of its original reference count.
 -- Fixed safestr_replace() to zero trimmed memory in a string if the resulting
    string is shorter than the original string as a result of the replacements
    made.
 -- Added a new flag, SAFESTR_FIND_CHARACTER, to safestr_search() that will
    allow searching for a single character instead of a sub-string.
 -- Changed some of SafeStr's error codes to map to standard C error codes
    where appropriate.  For example, SAFESTR_ERROR_OUT_OF_MEMORY is the same as
    ENOMEM now.  Adjusted the other error codes to be contiguous to correct for
    the gaps introduced by the mapping to C error codes.
 -- Added a new macro, SAFESTR_TEMP_TRUSTED, that is the same as SAFESTR_TEMP,
    except that it also includes the SAFESTR_TRUSTED flag on the resulting
    SafeStr string.
 -- Added new macros, safestr_findchar() and safestr_rfindchar(), to take
    advantage of the new SAFESTR_FIND_CHARACTER flag for safestr_search().
 -- Changed several API functions that allocate memory to be macros that pass
    __FILE__ and __LINE__ information.  The original API functions have been
    renamed and should not generally be called directly.
 -- Fixed a variety of compiler warnings.
 -- Fixed title-case conversion.
 -- Fixed safestr_readline() so that it won't loop infinitely in certain
    conditions.


RELEASE-0.9.6 (11-Jun-2003)
===========================

 -- Added XXL 0.9.5 to the distribution to be built as part of SafeStr if it
    hasn't been built and installed separately.
 -- Added a 'check' target to make to run a suite of tests to verify the
    integrity of the built SafeStr library.
 -- Added a new header file that will be installed called safestr-c99.h, which
    contains basic definitions for standard C99 integer types.  Note that this
    header is not a complete replacement for the C99 stdint.h header, instead
    including only what SafeStr needs and perhaps a little bit more.  This
    header is built dynamically by configure.
 -- Added libtool versioning to the build process.
 -- Added man pages contributed by Jose Nazario <jose@monkey.org>
 -- Added a full implementation of printf-style formatting functions to replace
    what were essentially stubs in the previous release.
 -- Enhanced the performance of string comparison functions, especially when a
    case-insensitive comparison is to be performed.
 -- Added XXL asset management support into SafeStr string allocation API
    functions.  An additional XXL_SAVE after a safestr_alloc() or similar
    function call is no longer necessary.
 -- Fixed a problem in safestr_concatenate() where the lengths were not being
    calculated correctly.
 -- Fixed safestr_insert() to properly adjust the tainted flag on the target
    string.
 -- Fixed length and offset calculations in safestr_insert().
 -- Fixed a variety of API functions to no longer depend on a NULL terminator
    in the string for finding the length of the string.  Always use the stored
    string length instead.
 -- Fixed the Win32 port to use Win32 string APIs where required instead of
    standard C runtime APIs (e.g., lstrlenA vs. strlen) -- These changes only
    affect those functions that use C-style strings, such as safestr_create().
 -- Added a variety of convenience functions for converting strings to
    numeric types (integers and reals); trimming leading and trailing
    whitespace from a string; converting between lower-, title-, and upper-
    cases; reading line-by-line from a file; and reading a password from a
    terminal.


RELEASE-0.9.5 (19-May-2003)
===========================

Initial Public Release
