2011-1-9  Daniel W. McRobb  <dwmcrobb@me.com>
	* src/DwmExecutor.ll, src/DwmExecutor.hh
	Added ExecVP() member so I can use common code from the Execute()
	functions.  Also, in addition to forking, I disassociate from the
	process group, ignore terminal I/O signals, and disassociate from
	the control terminal.  Hence the parent process (caller of Execute())
	can exit while leaving the child running.
	
2011-1-8  Daniel W. McRobb  <dwmcrobb@me.com>
	* src/Makefile include/DwmExecutor.hh src/DwmExecutor.ll: New
	class to encapsulate fork()+execvp().
	
2010-12-27  Daniel W. McRobb  <dwmcrobb@me.com>
	* configure.in, configure: Link statically on FreeBSD 8 since I'm
	using the gcc46 port; I don't want to link to a shared lbirary
	that's in a port-specific directory.

	* dwm.m4: Handle pthread flags on FreeBSD 8 the same as I do for
	FreeBSD 6 and FreeBSD 7.
	
2008-11-20  Daniel W. McRobb  <dwm@mcplex.net>

	* Added PingDestination, PingDestinationEntry and HostPinger classes.
	These came from 'dwmqping' but are generally useful for writing
	applications that 'ping' one or more hosts.

2008-11-04  Daniel W. McRobb  <dwm@mcplex.net>

	* Mutex is now copyable.  I use a shared_ptr to the underlying
	mutex, so all copies point to the same underlying mutex.  This
	lets me put Mutex instances inside STL containers without 
	destroying the underlying mutex.
	
2007-12-19  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-4-3
	
	* src/Makefile
	Don't build dependencies when target is 'distclean'

2007-12-13  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-4-2
	
	* DwmPthreadQueue.hh
	Fixed call to _cv.Wait() in WaitForNotEmpty(); it takes a reference
	argument, not a pointer argument.

2007-11-17  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-4-1

2007-11-13  Daniel W. McRobb  <dwm@mcplex.net>

	* include/DwmCgi.hh
	  src/DwmCgi.ll
	Added UrlEncode() and HtmlEncode() members (static).  I'll add
	to these as needed, for now they're sufficient for my mp3 browser
	CGI program.

2007-11-07  Daniel W. McRobb  <dwm@mcplex.net>

	* include/DwmIO.hh
	  include/DwmGZIO.hh
	  include/DwmBZ2IO.hh
	Change the order in which we read and write tuples to be more 
	natural; first element to last element.

2007-11-03  Daniel W. McRobb  <dwm@mcplex.net>

	* include/DwmOperators.hh
	  include/DwmIO.hh
	  include/DwmGZIO.hh
	  include/DwmBZ2IO.hh
	Use macros instead of duplicating code for std versus std::tr1
	namespaces.  This should make it a little easier to clean up
	one day in the future.  I don't really intend to support gcc-4.2.x
	any longer than I must, since it lacks support for variadic
	templates.
	
	* tests/TestUnorderedMultisetIO.cc
	Simple unit tests for unordered_multiset I/O.

	* tests/TestUnorderedMultimapIO.cc
	Simple unit tests for unordered_multimap I/O.
	
	* include/DwmIO.hh
	  include/DwmBZ2IO.hh
	  include/DwmGZIO.hh
	  include/DwmOperators.hh
	Added support for unordered_multimap and unordered_multiset when
	HAVE_CPP0X or HAVE_TR1 is defined.

2007-10-27  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-4-0
	
	* DwmIO.hh
	  DwmBZ2IO.hh
	  DwmGZIO.hh
	Support tuples with up to 10 elements with gcc-4.2.x, which
	doesn't have variadic templates.
	
	* tests/TestTupleIO.cc
	Added tests for I/O on file descriptors and FILE pointers.
	
	* include/DwmIO.hh
	Added I/O for tuple on FILE pointers and file descriptors when
	HAVE_CPP0X or HAVE_TR1 is defined.
	
	* Moved TestIOUnorderedMap.cc to TestUnorderedMapIO.cc, cleaned
	it up, and added tests for unordered_map<string,uint32_t>
	
	* tests/TestUnorderedSetIO.cc
	Simple unit tests for unordered_set I/O.
	
	* include/DwmIO.hh
	  include/DwmBZ2IO.hh
	  include/DwmGZIO.hh
	Added support for unordered_set	when HAVE_CPP0X is defined.
	Added support for unordered_set	when HAVE_TR1 is defined.

2007-10-26  Daniel W. McRobb  <dwm@mcplex.net>

	* Checkpoint commit of code from last weekend.  Unit tests all
	pass on FreeBSD 6.2-STABLE with gcc-4.3 snapshot.  Still need to
	add I/O for tuple on FILE pointers and file descriptors.

	* Ditch ancient remnants of 'using namespace std;' in header files,
	and clean up the fallout in source files.
	
2007-10-21  Daniel W. McRobb  <dwm@mcplex.net>

	* tests/TestTupleIO.cc
	Added tests for BZ2IO and GZIO.

	* tests/TestIOUnorderedMap.cc
	Simple unit test for unordered_map in IO, BZ2IO and GZIO.

	* include/DwmPortability.hh.in
	Reduce our TR1 and C++0x macros to just HAVE_CPP0X and HAVE_TR1.

	* include/DwmOperators.hh
	Added operator == for unordered_map.  Slow but I don't want to
	have to code this every time I need it.

	* include/DwmGZIO.hh
	Support unordered_map I/O.  Support tuple I/O.
	
	* include/DwmBZ2IO.hh
	Support unordered_map I/O.  Support tuple I/O.
	
	* include/DwmIO.hh
	Support unordered_map I/O for iostreams.
	
	* include/DwmIpv4Routes.hh
	If we have C++0x or TR1 support from our compiler, use
	unordered_map instead of hash_map.  When using unordered_map,
	set the max_load_factor to 0.15 by default.

2007-10-14  Daniel W. McRobb  <dwm@mcplex.net>

	* tests/TestTupleIO.cc
	Simple unit test for Dwm::IO support for <tr1/tuple>
	
	* include/DwmIO.hh
	Added <tr1/tuple> I/O for iostreams.  This is experimental work
	that needs gcc 4.2.x for the <tr1/tuple> header file and working
	partial template specialization.

2007-10-02  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-3-0

	* include/DwmOptArgs.hh
	  src/DwmOptArgs.cc
	  tests/TestDwmOptArgs.cc
	  tests/TestEngFormat.cc
	Bring up to speed for gcc-4.2.1: ditch use of deprecated 
	conversion from string constant to 'char *'

2007-09-27  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-2-2
	
	* Ipv6Address(const string &)
	  Ipv6Address::operator = (const std::string &)
	Set address to 0 if string is empty.

2007-09-12  Daniel McRobb  <dwm@ixiacom.com>

	* dwm.m4: handle OpenBSD 4.x pthread flags the same way we handle
	them for OpenBSD 3.6

	* src/DwmPcap.cc: #include <cstring> instead of including <string.h>
	inside 'extern "C"'

2007-09-07  Daniel W. McRobb  <dwm@mcplex.net>

	* Ipv4Address(const string & dottedAddr):
	Set address to 0.0.0.0 if dottedAddr is empty.

2007-08-06  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-2-1
	
	* Ditch unused Dwm::Signals class

2007-07-28  Daniel W. McRobb  <dwm@mcplex.net>

	* StringUtils: Allow specification of numerical base in 
	StringToIntegral() and all StringTo() functions that use it.

2007-07-27  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-2-0

2007-07-26  Daniel W. McRobb  <dwm@mcplex.net>

	* DwmTypeName.hh: added TypeNameNoNamespace()

2007-07-19  Daniel W. McRobb  <dwm@mcplex.net>

	* 'mcping' application written, which is like 'ping' but has a lot
	fewer options.  However, it can send to multiple hosts, uses
	libpcap to get better timestamping, can use TCP, and can get by
	many pf and ipfw rules with TCP by 'priming' the destination with
	a SYN before sending ACKs (which typically get RST in response).
	When using TCP, the port number can be specified for the
	destination (e.g. '10.1.1.1:20' would send to port 20).  The
	default port is 22 (sshd).

	'mcping' works on FreeBSD, Linux and OS X.  It doesn't work on
	OpenBSD, due to what looks like a bug in pcap with pthreads.

2007-07-15  Daniel W. McRobb  <dwm@mcplex.net>

	* Added template members to Ipv4IcmpEchoRequest and Ipv4IcmpEchoReply
	to get/set user data.  Added unit tests for them.
	
	* Added ability to set data (as a string) in Ipv4IcmpEchoRequest and 
	Ipv4IcmpEchoReply.

	* Ipv4IcmpMessage is now BZ2Writable and GZWritable.  Also added
	members to read an Ipv4IcmpMessage from a gzFile or a BZFILE.

	* Added SetChecksum() to the Ipv4IcmpMessage class.

	* Added Ipv4IcmpTimeExceeded class and unit test.

	* Made Ipv4IcmpMessage inherit from Writable.  Also added
	Read() members.

	* Added Ipv4IcmpRedirect and Ipv4IcmpSourceQuench classes and
	unit tests.

2007-07-14  Daniel W. McRobb  <dwm@mcplex.net>

	* Added Ipv4IcmpDestinationUnreachable class and unit test.

	* Added unit test for Ipv4IcmpEchoReply and Ipv4IcmpEchoRequest.

	* Started sketch of Ipv4IcmpMessage base class.  Started sketch of
	Ipv4IcmpEchoReply and Ipv4IcmpEchoRequest classes.

2007-07-13  Daniel W. McRobb  <dwm@mcplex.net>

	* Ditch Dwm::Pthread::Signals since I never use it and it just 
	contained static instances of Dwm::Pthread::Signal.

2007-07-12  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-1-9

	* Added:
	  std::istream & operator >> (std::istream & is, MplsLabel & label);
	Also added constructor for MplsLabel that constructs from a string
	of the form 'label:exp:s:ttl'.
	
	* Added:
	  std::istream & operator >> (std::istream & is, MacAddress & addr);

2007-07-11  Daniel W. McRobb  <dwm@mcplex.net>

	* MplsLabel and MplsLabelStack now implement GZWritable, GZReadable,
	BZ2Readable and BZ2Writable.  Added unit tests for these interfaces.

	* MacAddress now implements GZWritable, GZReadable, BZ2Readable and 
	BZ2Writable.  Added unit tests for these interfaces.
	
	* Ipv4TcpPacket now implements GZWritable, GZReadable, BZ2Readable
	and BZ2Writable.  Added unit tests for these interfaces.
	
	* Ipv4UdpPacket now implements GZWritable, GZReadable, 
	BZ2Readable and BZ2Writable.  I also wrote unit tests for each of
	these interfaces.

	* Ipv4UdpPayload now implements all I/O members.

	* Ipv4TcpHeader now implements the Readable, Writable, GZReadable,
	GZWritable, BZ2Readable and BZ@Writable interfaces.  TestIpv4TcpHeader
	tests each of these interfaces.

2007-07-10  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-1-8

	* Added MplsLabel and MplsLabelStack classes and unit tests.

	* Added MacAddress class and unit test.

2007-07-03  Daniel McRobb  <dwm@arbor.net>

	* SysLogger: Pass a 'const char *ident' instead of 
	'const std::string & ident' to Open(), since openlog() typically 
	just keeps the pointer and doesn't copy the string.  The result 
	means that when global static destructors are called, it's possible
	that the string gets destroyed before other objects that might
	Syslog() in their destructor.

2007-07-02  Daniel W. McRobb  <dwm@mcplex.net>

	* SysLogger: fix a potential deadlock due to recursive locking
	of the same mutex.  Found on OS X.

	* Fixed Dwm::Pacer for OS X.  Ran unit tests on OS X, looks OK.

2007-07-01  Daniel W. McRobb  <dwm@mcplex.net>

	* Started sketching Ipv4TcpHeader class.

	* UDP packet code now has features to permit zero-copy parsing of
	UDP header and payload.  Useful in cooperation with Pcap.

	* Added tests/TestIpv4UdpHeader.cc

	* Added the Ipv4UdpPayload class.

	* Added DwmIpv4Utils.[cc|hh] containing routines for IP checksum
	computation.

	* Dwm::Socket
	Added tracking of socket type and whether or not IP_HDRINCL is
	on, since FreeBSD wants ip_off and ip_len to be in host byte
	order if IP_HDRINCL is on.  Hence we need to twiddle them if we're
	using a raw socket and IP_HDRINCL is on.	

2007-06-26  Daniel W. McRobb  <dwm@mcplex.net>

	* include/DwmStringUtils.hh
	In StringToIntegral(), check the value of endptr after calling
	strtoull() and strtoll().

2007-06-18  Daniel W. McRobb  <dwm@mcplex.net>

	* Make Ipv4UdpHeader inherit from GZReadable, GZWritable, 
	BZ2Readable and BZ2Writable.

	* Make Ipv4PacketHeader inherit from GZReadable, GZWritable, 
	BZ2Readable and BZ2Writable.

2007-06-16  Daniel W. McRobb  <dwm@mcplex.net>

	* Use OptArgs instead of getopt() in unit test applications.

	* More OptArgs work.  Still not pretty, but it's usable.

2007-06-14  Daniel W. McRobb  <dwm@mcplex.net>

	* Started OptArgs work.

2007-06-11  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-1-7

	* src/DwmPacer.cc
	In Pace(), fix avoidance of race-to-catch-up when caller doesn't
	call Pace() for a while (where 'a while' is 10 times the minimum
	sleep interval).

	* Added simple unit test application for Dwm::Signal

2007-06-09  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-1-6

2007-05-22  Daniel W. McRobb  <dwm@mcplex.net>

	* Added aliases to LocalInterface.  Adding and removing them doesn't
	work on Linux at the moment, since Linux does it differently than
	BSD and I haven't had time to reinstall a Linux box at home.

2007-02-22  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-1-5

2007-02-21  Daniel McRobb  <dwm@mcplex.net>

	* Added #include <unistd.h> where needed.

	* added --with-pcapsrc option to configure, mostly for Arbor.
	
	* include/DwmPortability.hh.in
	Fix be64toh definition for OpenBSD.

2007-02-14  Daniel W. McRobb  <dwm@mcplex.net>

	* Don't link statically on Linux.

2007-02-14  Daniel McRobb  <dwm@mcplex.net>

	* Cleaned up some warnings from gcc-4.1.1 -Wall

2007-02-06  Daniel W. McRobb  <dwm@mcplex.net>

	* Patched up for gcc-4.1.1 on Linux; needed <cassert> in several
	places.

2007-01-19  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-1-4
	
	* Ported to Linux to permit Arbor work to go forward.

2007-01-18  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-1-3

	* Removed DwmLogger.[hh|cc]

2007-01-17  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-1-2
	
	* Deprecated DwmLogger.[hh|cc] in favor of DwmSysLogger.[hh|cc]
	and DwmFileLogger.[hh|cc].  The SysLogger class is all static
	members.

2007-01-04  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-1-1

	* Added unit test for Pthread::Mutex
	
	* Added Pthread::ReadWriteLock class from 1998 backups of old
	CVS repository.  Wrote a unit test app for it 
	(tests/TestPthreadReadWriteLock.cc).
	
2007-01-03  Daniel W. McRobb  <dwm@mcplex.net>

	* tweaks for OS X

2007-01-01  Daniel W. McRobb  <dwm@mcplex.net>

	* The ChangeLog hasn't been updated in ages.  Many miscellaneous 
	additions in the last 12 months, both new code and old code dug
	out of backups.
	
2005-10-30  Daniel W. McRobb  <dwm@mcplex.net>

	* Added Pthread::Queue class template for inter-thread message
	paasing (unidirectional).

	* Changed 'struct in_addr' to 'Ipv4Address' in LocalInterfaces.

	* Added Contains(const TimeValue &), Overlaps(const TimeInterval &)
	and Adjacent(const TimeInterval &) to TimeInterval class.  Also
	added members to set start and end time of TimeInterval.

2005-10-24  Daniel W. McRobb  <dwm@mcplex.net>

	* Fixed up StreamedLength() members in various classes, since it's
	now a member of Dwm::Writable.  Also added StreamedLength() members
	to Dwm::IO.

2005-10-23  Daniel W. McRobb  <dwm@mcplex.net>

	* Added the TimeInterval class.

2005-10-21  Daniel W. McRobb  <dwm@mcplex.net>

	* tagged as libDwm-0-0-2

2005-10-20  Daniel W. McRobb  <dwm@mcplex.net>

	* The following classes now implement the BZ2Readable and 
	BZ2Writable interfaces (for I/O in bzip2 files):

	Ipv4Address
	Ipv4Prefix
	Ipv4Routes
	Ipv6Address
	Ipv6Prefix
	TimeValue

	* TestIpv4Routes now tests the BZ2Readable and BZ2Writable
	interfaces.

	* Added BZ2IO class for bzip2 I/O.

	* Added BZ2Readable and BZ2Writable pure virtual base classes.

	* Added GZIO (gzip I/O) functionality.

