libutil++ v1.2.0 (02/11/13) - http://www.digitalgenesis.com

Change Log:

	v1.2.0 (02/11/13)
		- Added IPPrefix including operators to check if a prefix or address
			contains another.
		- Added clear(), getPort() and getProtocol() to Port.
		- Added constructor for uint32_t and unsigned char[16] to IPAddress.
		- Added operators for bitwise AND, OR, XOR and NOT to IPAddress.
		- Optimized IPv6 comparisons in IPAddress.
		- Fixed bug related to htonl/ntohl in IPAddress.
		- Added sub-expression support to regex_match, regex_imatch, regex_search
			and regex_isearch.
		- Added support for attaching a numeric code to Exception.
		- Added macros for RETHROW, THROW_CODE, THROW2_CODE and RETHROW_CODE to
			Exception.
		- Added support for passing an Exception to Logging macros (eg: WARNING,
			ALERT, etc).
		- Added Process for access to the running process name and PID.

	v1.1.0 (01/06/13)
		- Added support for passing vector of traceoptions.
		- Added macros for SET_TRACE, UNSET_TRACE, CLEAR_TRACE and HAS_TRACE to Log.
		- Added trim, ltrim and rtrim to String.
		- Added substr_ireplace, regex_replace, regex_ireplace, regex_match,
			regex_imatch, regex_search and regex_isearch to String.
		- Added missing unistd.h include for GCC 4.7.
		- Added clear() to IPAddress.
		- Added functions to Interface to get MAC addresses.
		- Added test program for verifying library calls. This is also useful as an
			example of how to use the library.

	v1.0.0 (12/01/12)
		- Simplified Task callback code and changed Task.data to a vector.
		- Crypt functions and dependencies may now be disabled by passing
		  SKIP_CRYPT=1 to configure or skip_crypt to rpmbuild.
		- Improved efficiency of TRACE and LOG calls and also added return
			values to allow for chaining.
		- Added HERE and MARK macros to Log.
		- Changed default LogFormat to SimpleLogFormat.
		- Allow syslog message length to be adjusted from default of 1022.

	v0.3.0 (04/21/12) - Not released
		- Added TODO() and FIXME() macros to Log.
		- Added shared_ptr() and empty() function to Task UUID, IPAddressPort,
			IPAddress and Port.
		- Added UDPSocket and RawSocket classes and simplified constructors for
			all socket classes.
		- Added push() and repush() with a timeval argument to TaskQueue.
		- Added move semantics to IPAddressPort, IPAddress, Port, UUID and Task.
		- Added Privilege class which provides ability to modify user/group and
			Linux capabilities.
		- Added optional data pointer into Task.
		- Added substr_replace to String.
		- Added str() and c_str() to Exception.
		- Restricted syslog message length to 1022 to avoid overflow.
		- Added PidFile which provides an interface to handle a pid file.

	v0.2.0 (03/25/12)
		- SocketMux now uses shared_ptr to pass Sockets.
		- SocketMux now cleanly supports pthread_cancel by toggling
			PTHREAD_CANCEL_ENABLE and PTHREAD_CANCEL_ENABLE at the internal select().
		- SocketMux now includes new rselect(), wselect(), eselect() and rwselect()
			functions to reduce overhead on simplier workloads.
		- SocketMux now includes epoll() function, which performs better with high
			counts of sockets vs select().
		- SocketMux performance improvements were implemented.
		- Sockets now track if they are in a SocketMux, which is queried with the
			Socket::hasMux() function.
		- Updated Socket to use IPAddressPort, IPAddress and Port classes to
			return local and remote addresses.
		- Implemented IPAddressPort, IPAddress and Port constructors accepting
			sockaddr and sockaddr_storage.
		- Added on-demand cached getString(), c_str() and getHash() functions to
			IPAddressPort, IPAddress and Port.
		- Added UUID class.
		- Included add() function for CommandLine which accepts a long value with
			bounds checking.
		- Improved hash functions for IPAddressPort, IPAddress and Port.

	v0.1.0 (01/21/12) - Initial release
		- Implemented IP Address (v4/v6), Socket, Command Line, Compression,
			Encryption, Logging, String, Time, Interface and Task classes.

# vim: noet ts=2 sw=2
