Changes with APR-util b1 *) Added apr_xml_parse_file() routine and a testxml program. [Ian Holsman ] *) Extend apr_bucket struct to add a pointer to a function used to free the bucket. This change enables custom buckets to completely specify how they are to be allocated and freed. Before this change, custom buckets were required to use the same memory allocation scheme as the standard APR buckets. [Saeid Sakhitab, Bill Stoddard, Cliff Woolley, Roy Fielding] *) Install Expat when installing APR-util. [Justin Erenkrantz] *) Make APR-util configure script rely on APR. This removes the locally generated copy of libtool and uses the one in APR. Fix up how we call the expat configure script. Generate config.nice file. [Justin Erenkrantz] *) The apr_bucket lengths are now consistently apr_size_t, while any apr_brigade lengths (short of a read) are consistently apr_off_t. This is required for APR_HAS_LARGE_FILES handling. [William Rowe] *) apr_bucket_file_create() and apr_bucket_file_make() now take a pool parameter which is the pool into which any needed data structures should be created during file_read(). This is used for MMAPing the file and reopening the file if the original apr_file_t is in XTHREAD mode. [Cliff Woolley] *) apr_brigade_partition() now returns an apr_status_t. [Cliff Woolley] *) Add MD4 implementation in crypto. [Sander Striker, Justin Erenkrantz] *) Moved httpd 2.0.18's util_date to apr_date and enhanced its parsing capabilities. [Justin Erenkrantz] *) Moved httpd 2.0.18's util_uri to apr_uri and name-protected its symbols and functions. [Justin Erenkrantz, Roy Fielding] *) Rename field "private" in struct apr_xml_elem to "priv" for C++ compatibility. PR #7727 [Joshua MacDonald ] *) Make APR_IMPLEMENT_EXTERNAL_HOOK_BASE generate a ${namespace}_hook_get_${hookname} function to fetch the list of registered hooks [Doug MacEachern] *) Allow LTFLAGS to be overridden by the configure command-line (default="--silent") and introduce LT_LDFLAGS. [Roy Fielding] *) Add APR_SHARELOCK support to apr_sdbm_open(), locking read operations with a shared lock and all write ops with an excl lock. [Will Rowe] *) Namespace protect apr_sdbm, and normalize the return values (including the apr_sdbm_fetch, apr_sdbm_firstkey and apr_sdbm_nextkey functions). Normalized the get/clear error function names, and stores the actual apr error for apr_sdbm_error_get. [Will Rowe] *) Introduce an apr_fileperms_t argument to apr_dbm_open(). [Will Rowe] *) Removed apr_bucket_do_create() macro, which was causing warnings about unreachable code in some compilers (notably MSVC). What used to be done by this macro is now done inline in the various apr_bucket_foo_create() functions. [Cliff Woolley] *) Make clean, distclean, and extraclean consistently according to the Gnu makefile guidelines. [Justin Erenkrantz ] *) Migrate the --disable-libtool changes from APR to APR-util. This cleans things up, and allows more flexibility when building programs. [Ryan Bloom] *) Allow APR-util to be compiled without libtool. The default is to use libtool, but it can turned off with --disable-libtool on the configure command. [Ryan Bloom] *) Repair calling convention for apr_register_optional_fn to eliminate GP fault on Win32. [William Rowe] *) Substantial changes to correct linkage and declarations for generic hooks on dso architectures. [Ben Laurie, Will Rowe] *) apr_bucket_shared_destroy() now returns a boolean value. [Cliff Woolley] *) We have to initialize the heap buckets to the correct length. we were seeing heap buckets with 17 chars in them reporting a length of 9017, because they were initialized to the amount of memory allocated, instead of the amount of memory used. This was only an issue for heap buckets created by the apr_brigade_* functions. [Ryan Bloom] *) apr_bucket_init_types() and apr_bucket_insert_type() have been removed... they're not needed anymore. [Cliff Woolley] *) The apr_bucket_shared and apr_bucket_simple structures have been removed as an API simplification/optimization. This should be transparent outside APR-util except to callers who attempt to directly manipulate the buckets' internal structure (which is not recommended anyway) and to callers who create their own bucket types. [Cliff Woolley] *) apr_bucket_simple_split() and apr_bucket_simple_copy() are now exported functions, which could be helpful in implementing external bucket types. [Cliff Woolley] *) The third parameter to apr_bucket_shared_make() is now 'apr_off_t length' rather than 'apr_off_t end', since the end usually had to be computed by the caller and all we really want is the length anyway. [Cliff Woolley]