2005-05-10  James Gallagher  <jimg@zoey.opendap.org>

	* libdap.spec (Prefix): Built spec file; tested. Some problems
	remain, mostly that the curl and xml2 packages are not part of
	the RHEL3 dist! I'll have to sort that out before this dist
	mechanism becomes a reality.

2005-04-15  James Gallagher  <jimg@comet.opendap.org>

	* Removed include of config_dap.h from HTTPCache.h. This is the
	only header file in the library that includes the config header.
	Removing the include means that users of the library never see the
	library's internal configuration. There's a potential problem with
	this, however, in that users of the library must now use
	opendap-config --cflags when building _or_ define HAVE_PTHREADS_H
	themselves. I can make this last requirement go away if pthreads
	becomes required for libdap++ (then the code won't need the
	compile time symbol).

2005-02-08  James Gallagher  <jimg@comet.dods.org>

	* Merged with release-3-4-10

2005-02-08  James Gallagher  <jimg@comet.dods.org>

	* bumped the version up to 3.4.10; tagged.

	* System upgrade to FC3/gcc-3.4; minor fixes for the build.

2005-01-28  James Gallagher  <jimg@comet.dods.org>

	* Merged with release-3-4-9.

2005-01-27  James Gallagher  <jimg@comet.dods.org>

	* Added code to Test* classes so that Sequences are easier to
	test. These classes now return values similar to Nathan's DTS code
	on the Java module (although not exactly the same).

	* Fixed the way Sequence CEs are handled when Sequences are
	nested. Tested to three levels deep. The serialization code in
	Sequence is nw quite complex.

	* Incremented version to 3.4.9; I've made some changes since the
	last version and I need these in the trunk to test.

2004-07-07  James Gallagher  <jimg@comet.dods.org>

	* Merged with release-3-4-8FCS.

2004-07-06  James Gallagher  <jimg@comet.dods.org>

	* Bumped the version to 3.4.8.

2004-07-02  James Gallagher  <jimg@comet.dods.org>

	* I removed (commented) the pragma interface/implementation lines.
	This increases the size of the library by ~1MB, which seems pretty
	insignificant at this point. The change means that the code will
	compile on HP/UX with gcc 3.2. It _may_ be that gcc 3.4 fixes this
	problem, but it seems that the pragmas cause more headaches than
	they are worth. It should be easy to 'add them back in' if we
	decide to do that, since they are just commented out. 

2004-03-11  James Gallagher  <jimg@comet.dods.org>

	* Bumped the version to 3.4.7.

	* I fixed a problem in SignalHandler and RCReader. Both od=f these
	class had code that re-initialized a pthread_once_t mutex in their
	delete_instance() method. This was used by some unit tests to make
	a delete instances of these two singleton classes. The problem is
	that while this runs (sort of, we had some reports of
	crash-on-exit behavior) on Linux, it fails outright on Solaris. As
	Rob M points out, it's a non-standard use of pthreads. I removed
	the re-init and changed the unit tests. 

2004-02-18  James Gallagher  <jimg@comet.dods.org>

	* Merge release-3-4-2FCS.

2004-02-16  James Gallagher  <jimg@comet.dods.org>

	* Other fixes:
	The DBG() macros now include namespace std declarations.
	Used valgrind to isolate some memory leaks; others remain and this
	will be an on-going process.
	Made sure all calls to delete also set the pointer to null; this
	fixes some dual-delete bugs.
	Some of the doxygen comments have been improved.
	Fixed places were the switch from strstream to stringstream was
	botched. 

	* Fixed the following bugs since version 3.4.5:
	696: Infinite loop in the HDF4 server (w/character variables).
	698: libdap++ now returns better error messages when the httpd
	reports an error.
	692: The info response now works.
	695: The client-side cache is more robust. It does not leave cruft
	around when a user interrupts a program.
	691: Error responses were not parsed/processed correctly when
	received by clients in some circumstances. Now they are.

2004-01-30  James Gallagher  <jimg@comet.dods.org>

	* usage.cc: Fixed bug 692. Only one global attribute and one
	variable were output. The cause: ends operators left over from the
	strstream code...

2004-01-22  James Gallagher  <jimg@dcz.dods.org>

	* Added namespace std declarations to some files. The DBG() macro
	uses cerr and thus the std namespace or std::cerr must be declared
	for newer compilers.

2003-12-08  Yuan Ho  <yuanho@ucar.edu>

        * Merge release-3-4 into trunk.

2003-11-10  James Gallagher  <jimg@dcz.dods.org>

	* Added the methods Float32::value() and Float64::value(). I think
	the DAP should have a suite of methods which return values w/o
	using the awkward void pointer scheme. These methods (will) require
	a downcast unlike the void pointer methods. But they wind up being
	much easier to use in situations where you know the type of the
	BaseType object (which seems to be most of the time, in practice).

2003-10-03  James Gallagher  <jimg@dcz.dods.org>

	* I changed Connect's request_das, ..., methods so that they now
	treat a response that lacks a Content-Description header
	identifying the response as one of ours as a fatal error.

	* I Fixed what seems like, in hindsight, a bug. The scanners were
	treating illegal characters as non-fatal errors and writing
	messages on stderr. In reality the scanners should have been
	flagging those responses as bogus. Also, the scanners were using
	exit(1) when they found a fatal error; I changed that so they now
	throw an Error object.

2003-09-19  James Gallagher  <jimg@dcz.dods.org>

	* Fixed bug #655. Here's how the DAP library looks for the RC
	file: First it checks the env variable DODS_CONF, then HOME. If
	neither is set it uses default values and disables the cache.
	Here's how DODS_CONF is used: If it is the name of a file that
	exists, use that as the RC file. If DODS_CONF names a directory,
	look in that directory for a file called '.dodsrc'. If that file
	exists, it uses it, otherwise try to create it using default
	values *except* that the value of CACHE_ROOT is the directory part
	of DODS_CONF with '.dods_cache/' appended. If DODS_CONF is not set
	to any value, the code looks at HOME and applies the same rules as
	for DODS_CONF (except that HOME should never be the name of a file
	so some of the rules don't really apply). We may need to tune this
	code for WIN32.

	Note that caching is off by default and a .dodsrc created by the
	library will have USE_CACHE set to zero. Users must actively turn
	caching on by editing the RC file.

2003-09-08  James Gallagher  <jimg@dcz.dods.org>

	* HTTPConnect.cc (fetch_url): Fixed bug #661.

2003-08-29  James Gallagher  <jimg@dcz.dods.org>

	* Added a new property to BaseType which can be used to
	differentiate between variables that must be read by a server
	because they are in the projection and those which must be read
	because they are used in a selection clause or as a function
	argument. Previously we were using the send_p property for both
	these and it was causing problems when CEs contained both
	projected variables and functions (see bug #657). The new property
	is called 'in_selection' and is true if the variable is part of
	the current CE's selection or is used in any type of CE function.
	Servers should ensure that if their read() method implementation
	test send_p before reading data they also test in_selection. Data
	values should be read it *either* property is true. This fixes bug
	#657.

2003-07-28  James Gallagher  <jimg@dcz.dods.org>

	* Added support for Digest authentication. There's also potential
	support for NTLM and GSS-Negotiate authentication, but I don't
	have any way to test those. 

2003-07-24  James Gallagher  <jimg@dcz.dods.org>

	* Added a new test driver called server_handler. It's much more
	like a server's handler executable; combine it with geturl reading
	from stdin to make tests. See also sh-testsuite. Nascent but still
	useful. 

	* DDS:send() has been incorporated into DODSFilter::send_data() as
	part of a refactoring of DDS.

	* Timeouts are now smart.

2003-07-23  James Gallagher  <jimg@dcz.dods.org>

	* Added a timeout mechanism to the server and modified the Test*
	classes so this is easier to test. Right now it's a pretty
	rudimentary thing. However, the timeout can be set in the newly
	expanded dods.rc configuration file. In the future when we have
	reliable Error delivery this code will send an Error object that
	explains that there was a time out, et cetera. Check out the
	ChangeLog in DODS/etc for information about the expanded dods.rc file.

2003-05-15  James Gallagher  <jimg@dcz.dods.org>

	* Removed the List class/datatype. We've talked about this for
	months (years). Done.

2003-05-13  James Gallagher  <jimg@dcz.dods.org>

	* Modified DODSFilter so that it takes a new switch, -o, which can
	be used to tell a handler which object is to be returned. Handlers
	can now be built which return all of the responses; the
	DODS_Dispatch CGI module tells the hander which response to
	generate. 

2003-04-21  James Gallagher  <jimg@dcz.dods.org>

	* Merged release-3-3-1.

	* The RCReader class now supports using the environment variable
	DODS_CONF to point toward a dodsrc file. The value of the envar
	supersedes the default ~/.odsrc.

	* In HTTPCache: changed catch(...) clauses so that they explicitly
	name exceptions. The code was catching and re-throwing exceptions
	and in methods where the types of exceptions were caught this
	caused abort to be called, even when the re-thrown exception was
	one of the declared types.

	* Several bugs in the grid() function were fixed. First, the
	function was not checking to make sure that map vectors using in
	the selection sub-expressions passed to grid() actually existed.
	Also, the mechanism used to read values of variables used as
	arguments to CE functions was broken; constructor types were not
	completely read but *were* marked as though they were. Look in
	RValue for the latter fix.

	* Some of the unit tests included code that wouldn't compile with
	gcc 3.2.x; fixed. I'm now using gcc 3.2.2 for development (but
	nightly builds also continue with 2.95.3 and VC++ as well).

	* Added methods to DAS, AttrTable and DDS so that an integer index
	can be used to access variables and attributes. This was done so
	that the idl command-line client could iterate over instances
	without actually having to work with C++ iterator objects.

	* IteratorAdapter is no longer templated. This change was made to
	accommodate the MS VC++ compiler. Also, doxygen comments have been
	added to the code.

2003-01-23    <jimg@dcz.dods.org>

	* Made release 3.3.0. Not merged since there were very, very few
	changes. 

2003-01-22    <jimg@dcz.dods.org>

	* I changed the source files so that they are clearly covered by
	the GNU Lesser GPL.

2003-01-10    <jimg@dcz.dods.org>

	* NEWS: Added.

	* Merged with changes tagged release-3-2-10 (from the release-3-2
	branch). 

2002-08-08    <jimg@dcz.dods.org>

	* I Replaced the single VirtualCtors.cc file, which had a virtual
	constructor for each of the data type classes in it (see Meyers
	for a discussion of virtual ctors), with a set of files with one
	virtual ctor per file. The old VirtualCtors.o file was *not*
	included in the libdap++ library because of link-time problems it
	would introduce. The new files *are* included. For any of the
	data type classes you specialize, you must provide a virtual ctor
	that returns an instance of your specialization. For any of the
	data types you do *not* specialize, the library will use the
	default virtual ctor.

	* The library libdap++.a is now `apartment thread safe.' The
	phrase comes from Microsoft's documentation; it means that the
	library can be used in a limited sense with MT software. The limit
	is that objects created using the library cannot be shared by
	threads. A MT program can create several instances of Connect, for
	example, but each instance can only be used by a single thread.

2002-06-21    <jimg@dcz.dods.org>

	* Connect.cc: Fairly extensive additions to Connect's interface.
	The old interface is still supported, but its use is deprecated.

	* VirtualCtors.cc: Added this file. It can be linked with clients
	so that they don't have to provide definitions for the NewByte(),
	..., NewGrid() 'virutal constructor' functions. This will work
	only for those clients that don't need to subclass the various
	types. There maybe a better way to do this; either use a real
	factory class passed to DDS or by putting each of the New*()
	virtual ctors in its own file and adding those to the library.
	That way the linker will only extract them if they are needed. 

2002-06-11    <jimg@dcz.dods.org>

	* expr.y (process_array_indices): Arrays and Grids can no longer
	be partially constrained (those constraints didn't work).

2002-06-10    <jimg@dcz.dods.org>

	* das.lex: Added '*' to the set of chars allowed in a WORD. Same
	for dds.lex.

2002-06-05    <jimg@dcz.dods.org>

	* usage.cc: Modified so that option inforamtion passed in by
	DODS_Dispatch.pm gets passed onto the filter programs (see bug 453).



2002-06-03    <jimg@dcz.dods.org>

	* Sequence.cc (print_all_vals): Removed Sequence::level and
	set_level() methods and the private _level field.

	* dods-limits.h (DODS_ULONG_MAX): Added U suffix to unsigned
	numerical constants.

2002-05-31    <jimg@dcz.dods.org>

	* das.y: Bug 450; The reserved word attributes can now be used as
	an attribute name.

2002-05-28    <jimg@dcz.dods.org>

	* Makefile.in: Geturl is no linked without the Test* classes. This
	demonstrates that libdap++ can be used without subclassing. Look
	at geturl.cc for an example. Of course, there are limitations on
	what you can do without subclassing the data types...

	* geturl.cc: Geturl no longer links with the Test* classes. It was
	modified so that it can use the versions of the classes that are
	part of libdap++.a (which is a recent change to the library). The
	geturl.cc file now contains the `virtual ctors' used by the
	library to instantiate the instances of the various variables.

2002-05-26    <jimg@dcz.dods.org>

	* Connect.h: Removed code specific to the GUI-based progress
	indicator. 

	* Error.h: Removed code specific to the GUI-based progress indicator.

2002-05-22    <jimg@dcz.dods.org>

	* Byte.h, Byte.cc, ..., Grid.h, Grid.cc: It is no longer necessary
	to subclass the data type classes when building a client.

2002-05-10    <jimg@dcz.dods.org>

	* Connect.cc (www_lib_init): Joe Sirott found and fixed a bug when
	making (many) multiple requests.

2002-05-09    <jimg@dcz.dods.org>

	* BaseType.cc (read): This method is not longer abstract.

	* usage.cc (main): Fixed a bug triggered when PATH lacks `.'
	
2002-04-30    <jimg@dcz.dods.org>

	* Merged with release-3-2-9

2002-04-03    <jimg@dcz.dods.org>

	* Makefile.in (binary-tar): Fixed binary-tar target.

	* BaseType.cc: Added using std::endl and ::ends

2002-04-02    <jimg@dcz.dods.org>

	* DDS.cc: Fixed broken use of using std::strstream.

	* Connect.cc (server_handler): Fixed bug 416.

2002-03-27    <jimg@dcz.dods.org>

	* usage.cc (write_global_attributes): Fixed usage's output of
	nested attributes.

2002-03-12    <jimg@dcz.dods.org>

	* Bug 400 fixed.

	* Servers now should recognize that a file called `das' in a
	directory with data files is an ancillary DAS for any of those
	files. If an ancillary DAS exists that has a more speciific name,
	that file will be used instead of the directory-wide DAS.

2001-10-13  James Gallagher  <jimg@dcz.dods.org>

	* Merged with release-3-2-8.

	* Various bug fixes.

	* Connect now uses exceptions to signal errors for all network I/O.

2001-10-01  James Gallagher  <jimg@dcz.dods.org>

	* Changed serialize and deserialize so that they use exceptions to
	signal errors. The return values can be ignored. For backward
	compatibility serialize always returns true and deserialize always
	returns false (even though that's counter intuitive, that's the
	old behavior for `no more data to read').

2001-09-28  James Gallagher  <jimg@dcz.dods.org>

	* Merged with release 3.2.7. The next merge should use
	release-3-2-7 -j release-3-2.

2001-09-26  James Gallagher  <jimg@dcz.dods.org>

	* Fixed a bug in the progress indicator's cancel button that
	caused a crash.

	* Fixed the grid() server-side function. This function can be used
	in constraint expressions to *select* parts of Grid variables
	based on the values of their map vectors. Here's an example using
	the COADS dataset: The dataset can be found at:
	http://dcz.dods.org/dods-3.2/nph-dods/data/nc/coads_climatology.nc.
	Look at the DDS and at the Grid SST:
	    Dataset {
		Float64 COADSX[COADSX = 180];
		Float64 COADSY[COADSY = 90];
		Float64 TIME[TIME = 12];
		Grid {
		 ARRAY:
		    Float32 SST[TIME = 12][COADSY = 90][COADSX = 180];
		 MAPS:
		    Float64 TIME[TIME = 12];
		    Float64 COADSY[COADSY = 90];
		    Float64 COADSX[COADSX = 180];
		} SST;
		...
	    } coads_climatology;
	From the attribute object you can find out about the map vector's
	ranges: 
            Attributes {
		COADSX {
		    String units "degrees_east";
		    String modulo " ";
		    String point_spacing "even";
		}
		COADSY {
		    String units "degrees_north";
		    String point_spacing "even";
		}
	    ...
	Using the grid function you can ask for the part of SST that falls
	between 30 and 50 degrees east and greater than 20 degrees north
	using: grid(SST,"30<COADSX<50","20<=COADSY") as the constraint
	expression. Note that two different styles of mini-expressions are
	supported by the function. Requests outside the range of the map
	vectors returns a message indicating their extent.

2001-09-06  James Gallagher  <jimg@dcz.dods.org>

	* Sequence::deserialize(...) now reads all the sequence values at
	once. Its call semantics are the same as the other classes'
	versions. Values are stored in the Sequence object using a
	vector<BaseType *> for each row (those are themselves held in a
	vector). Three new accessor methods have been added to Sequence
	(row_value() and two versions of var_value()).
	BaseType::deserialize(...) now always returns true. This matches
	with the expectations of most client code (the seqeunce version
	returned false when it was done reading, but all the calls for
	sequences must be changed anyway). If an XDR error is found,
	deserialize throws InternalErr. This fixes bug 258.


2001-08-21  James Gallagher  <jimg@dcz.dods.org>

	* After running tests for asciival, I decided to allow some more
	characters in the CE part of a URL. I created id2www_ce which
	allows all the characters in id2www plus [], {}, :, &, <>, = and
	, (comma).

2001-07-27  James Gallagher  <jimg@dcz.dods.org>

	* New escaping semantics. The DAP library now supports escaping
	names. Servers (and clients) no longer need to escaping characters
	themselves. The functions used to escape characters have been
	changed, too. The old functions escaped chars that could not be
	included in a DAP URL. The new function only escape chars that
	cannot be present in a URI as defined by RFC 2396 (``Uniform
	Resource Identifiers (URI): Generic Syntax''). The DAP's scanners
	and parsers have been expanded so that many more characters are
	now allowed. The regular expressions used to define IDs and NAMEs
	are: 
	    ID	 [a-zA-Z_/%.][-a-zA-Z0-9_/%.#:+\\]*
	    NAME [a-zA-Z_/%.0-9][-a-zA-Z0-9_/%.#:+\\]*
	These changes mean that datasets which contain IDs with spaces
	will work. Note that a space is not allowed in a URI so it will be
	escaped. If you're typing in a URL to a browser, you must supply
	the %20 escape. However, Connect is smart enough to escape the
	space if it's present in a CE. On the server-side, DODSFilter and
	the type classes remove the escape.

2001-07-10  James Gallagher  <jimg@dcz.dods.org>

	* If the `read from a file or stdin' feature of geturl is used and
	the input source cannot be opened, an error message is printed.
	This fixes a bug where a null input data source pointer caused a
	segmentation violation. I also added a throw to
	Connect::read_data() so that other clients that don't test the
	data source pointer (which is a FILE *) will get an exception (as
	opposed to a core file).

2001-06-22  James Gallagher  <jimg@dcz.dods.org>

	* I added `#' to the set of characters allowed in IDs. See bug 179.

	* I normalized the definitions of ID, FLOAT and NEVER in the four
	main scanners in the DAP library. They now all share the same set
	of characters except for a few odd outliers.

2001-06-18  James Gallagher  <jimg@dcz.dods.org>

	* Fixed a bug that crept into the processing of the server's
	version number information in the (client) class DataDDS. This
	made it impossible for clients to process Sequences sent from
	new servers because they we using the old (default)
	deserialization scheme.

2001-06-15  James Gallagher  <jimg@dcz.dods.org>

	* Merged with release-3-2-4. The next merge should use -j
	release-3-2-4 -j release-3-2.

2001-06-05  James Gallagher  <jimg@dcz.dods.org>

	* das.y: Changed the way errors are handled. Many errors still
	cause exceptions to be thrown. However, if an attribtue's value is
	wrong (e.g., a floating point value that is out of range), rather
	than throw an exception a note in the form of a container and
	explanation are added to the attribute table where the error
	occurred. This is particularly important for attributes like
	numerical values since they are often machine-dependent. Here's an
	example of a DAS which contains an error:
	
	Attributes {
	    a {
	        Byte size 7, 700;
		Float64 type 6.02e400, 3.4;
		Float64 type 6.02e400, 2.7, 10e-400;
	    }
        }

	And here is how the DAS looks once it is processed by the
	client-side software:

	Attributes {
	    a {
		Byte size 7;
		a_errors {
		    Byte size 700;
		    String size_explanation `700' is not a Byte value.;
		    Float64 type 6.02e400, 6.02e400, 10e-400;
		    String type_explanation `6.02e400' is not a Float64 value., `6.02e400' is not a Float64 value., `10e-400' is not a Float64 value.;
		}
		Float64 type 3.4, 2.7;
	    }
	}

	* Makefile.in: Added a short script to the Makefile.in so that
	when CppUnit stuff is not defined a message is printed. This is
	only triggered for the unit_tests targets, so it's really a
	reminder for the folks that are doing development.

	* configure.in: Changed so that if CFLGAS/CXXFLAGS are defined
	those values are used instead of the defaults. This simplifies
	development and debugging because it is easier to get builds
	without optimization and with optimal debugging without hand
	editing the Makefile every time configure is run.

2001-05-03  James Gallagher  <jimg@dcz.dods.org>

	* Added Cache-Control: no-cache header for error responses. This
	will prevent internal server error responses (which look like
	valid responses to the cache) from getting cached.

	* Added support for conditional requests to the DODSFilter class,
	the cgi_util functions and the DODS_Dispatch.pm Perl module.
	Servers can now see conditional requests as such and respond
	sensibly. If a server cannot use the modification time of a file,
	then it should subclass DODSFilter and supply different versions
	of the last modified time methods.

2001-04-23  James Gallagher  <jimg@dcz.dods.org>

	* Fixed the unit test targets and variables. These are now
	included in the Makefile.in but are commented out. You must
	remove the comments to use the target. Also needed is the CppUnit
	software which is in CVS in the CppUnit module.

	* Added support for the Last-Modified MIME header. All DODS
	servers which use the functions in cgi_util.cc and/or the class
	DODSFilter can now easily include the Last-Modified header in
	their responses. The only change that servers should make is to
	pass the ancillary files location directory to
	DODSFilter::send_data(). Use of the send_das() and send_dds()
	methods should require no change. In addition, calling the
	send_data() method without giving the ancillary files location
	will work OK with the exception that ancillary files won't
	contribute to the LM computation (as they will for the DAS and DDS
	responses).

	Currently the LM computation works only for file-based datasets.
	Servers that provide access to other types of data should subclass
	DODSFilter and provide alternate implementations of the relevant
	methods. 
	
	* Fixed some warnings in Error.cc from g++.

2001-02-13  James Gallagher  <jimg@dcz.dods.org>

	* Merged authentication changes from the trunk (where that feature
	was added) here so that it can be included in 3.2 without too much
	confusion. 

2001-02-09  James Gallagher  <jimg@dcz.dods.org>

	* Substantial changes to Connect to support HTTP authentication.
	libdap++ now support three ways of supplying credentials: via
	Connect's ctor, in a URL (using Netscape's convention and via a
	popup. 

2001-01-26  James Gallagher  <jimg@dcz.dods.org>

	* Merged with release-3-2-3. The next merge should use -j
	release-3-2-3 -j release-3-2.

	* Tagged release-3-2-3

2000-12-06  James Gallagher  <jimg@dcz.dods.org>

	* There was an old problem with libwww which I patched in June or
	July which fixed its caching of compressed responses. This patch
	has not made it into the regular distribution, so when I upgraded
	the patch was lost. I've re-applied the patch to the code in
	src/packages/libwww. This, together with the .dodsrc bug fixed
	below, fixes reported problems with the caching system (on unix at
	least, I don't have any information about the problems on win32).

	* Fixed .dodsrc file reading. Comments at the top of the file
	caused the reader to stop processing the file and thus none of the
	parameter values were being read.

2000-12-04  James Gallagher  <jimg@dcz.dods.org>

	* Note that the attribute table tests added are both unit tests
	(look at the unit_tests target in the Makefile) and dejaGNU-type
	tests. Take a look at AttrTableTest.cc to see how unit tests are
	written for a class.

2000-11-29  James Gallagher  <jimg@dcz.dods.org>

	* Fixed problems with attribute aliases. Added unit tests for
	AttrTable. DAS is now a child of AttrTable, so the AttrTable
	methods can be used at any level of the DAS object. The DAS
	methods still work, but they are now implemented using AttrTable
	methods. 

2000-09-21  James Gallagher  <jimg@dcz.dods.org>

	* Merged Jose Garcia's exception handling code. 

	* Merging the exception software means that all definitions of the
	read() method must change. See BaseType.h for details.

	* Improved error messages returned by the parsers. The DAS and DDS
	parsers now include a line number and, in many cases, context, for
	each message. 

	* Normalized all the #ifndef #endif guards in the header files so
	they use the same naming scheme. Added guards around #include
	lines for headers to speed compile times (see Lakos).

	* Reorganized the source files so that the CVS logs appear at the
	end rather than the start of each file. 

2000-09-11  James Gallagher  <jimg@dcz.dods.org>

	* Added methods to Sequence to provide access to row number
	constraint information. These methods (get_starting_row_number,
	...) provide access to the indices given in a CE. Also added is a
	method to set these values (until explicitly set the stating
	and ending row numbers and the stride are -1). In addition there
	is a method to get the current row number (useful when reading
	row-by-row with read()) and a method to read the ith row into the
	sequence. 

	* Added Sequence row number selection. It is now possible to
	request the first 10 rows of a sequence, or row 7 through 11 and
	to do so using a stride. The notation is the same as for Arrays
	and Grids; it uses the square brackets and colon separated
	integers for start, stride and stop. 

2000-08-31  James Gallagher  <jimg@dcz.dods.org>

	* Merged with 3.1.10. The next merge should use update -d -j
	release-3-1-10 -j release-3-1.

	* Fixed a bug in all the scanners (except the GSE scanner) where
	\r characters in text sent from win32-hosted servers caused the
	problems. The \r characters are either ignored or treated like
	newlines when paired with \n (depending on the circumstances).

2000-08-29  James Gallagher  <jimg@dcz.dods.org>

	* Merged with 3.1.9. The next merge should use update -d -j
	release-3-1-9 -j release-3-1.

2000-08-25  James Gallagher  <jimg@dcz.dods.org>

	* Fixed a bug in esc2underscore(). The function used a static
	instance of Regex; whatever regular expression was passed in on
	the first call would be used for all subsequent calls. The same
	problem existed for other functions in the file.

2000-08-02  James Gallagher  <jimg@dcz.dods.org>

	* Merged with 3.1.8. The next merge should use cvs update -j
	release-3-1-8 -j release-3-1.

2000-08-02  James Gallagher  <jimg@dcz.dods.org>

	* Fixed a config_dap.h goof. That header was included by some of
	the DAP headers which might, in turn, be included by other
	software. The HAVE_CONFIG_H symbol in config_dap.h was confusing
	other code (e.g., the Cgicc library). I changed config_dap.h and
	its use; the header is now only included by DAP .cc or .c files.
	DAP header files which needed config_dap.h for the dods_int32,
	etc., typedefs now get those from dods-datatypes.h. Headers which
	used config_dap.h for the DVR symbol (which holds the dap version
	information) have been rewritten.

	This change means that code which now included config_dap.h should
	be rewritten to use the dods-datatypes.h header or otherwise
	changed so that config_dap.h is not used.

2000-06-16  James Gallagher  <jimg@dcz.dods.org>

	* Note: This release was made to patch a bug which shows up in the
	version of loaddods that supports loading the DAS into a
	structure (version 3.1.5 of loaddods). You need this code to build
	that version of loaddods.

	* Fixed the tests so they work on my machine (where I don't have
	`.' in my PATH). I also added some `/'s in places where is *seems*
	DejaGnu was supplying them before. If extras creep in that should
	not e a problem.

	* Fixed (by Ethan) the tar and binary-tar targets.

	* Added a fair amount of instrumentation to the dtors of various
	methods. 

	* Fixed a bug in DDS. The del_var method must delete the BaseType
	before deleting the list element. I also changes from a SLList to
	a DLList to get a cleaner delete method.

2000-06-07  James Gallagher  <jimg@dcz.dods.org>

	* Merged with version 3.1.6. Used cvs update -d -j release-3-1-5
	-j release-3-1. The next merge should use -j release-3-1-6 -j
	release-3-1. 

	* Added code to Vector so that each element of vector<BaseType *>
	_vec is explicitly copied and deleted.

	* Fixed bugs in Grid, Structure and Sequence. The methods used to
	get the Pix pointing to the first variable would segfault if there
	were no variables. Now they return 0.

	* DODSFilter now has a set_ce() method. This means that a server
	can easily rewrite the CE it gets without loosing the other
	features of DODSFilter.

	* Connect.cc: Fixed bugs with local connections and the libwww and
	Gui initializations. 

	* Fixed a bug in AttrTable. Container attributes below the top
	level were broken in the last release. Changed the get_attr_num()
	method so that it returns a sensible value for both containers and
	`plain' attributes. Added to struct entry so that it is more a
	complete class. Added methods so that operator= and the copy-ctor
	really work. The IFREMER server needs these fixes.

	* Added to InternalErr a new ctor which makes it simpler to report
	the file name and line number when an error is thrown.

2000-06-06  James Gallagher  <jimg@dcz.dods.org>

	* Merged changes from Rob's PC port. Used cvs update -j
	pc-port-branch. I have done minimal testing on Linux (dejagnu is
	not yet installed) and the code seems fine. 

2000-04-17  James Gallagher  <jimg@dcz.dods.org>

	* Fixed two bugs in Connect.cc that caused client sessions which
	mixed remote and local connections to fail.

2000-04-06  James Gallagher  <jimg@dcz.dods.org>

	* Merged with Brent's gui2 code. This version of the progress
	popup adds a cancel button. The software was checked in on the
	gui2 branch and the point at which it was merged was tagged, on
	that branch, as gui2-0. Future merges should use update -j gui2-0
	-j gui2. 

2000-03-31  James Gallagher  <jimg@dcz.dods.org>

	* Merged with release-3-1-5. The next merge should use -j
	release-3-1-5 -j release.

2000-03-28  James Gallagher  <jimg@dcz.dods.org>

	* Look in the Makefile for this software to see the new support
	library configure macros in action. These simplify getting the
	right libraries on the link line without duplicates (which
	lengthen link times). 

	* Added libdap++-gui.a to the build/install/tar/binary-tar stuff.
	This library is built with `GUI-enabled' versions of Connect and
	Error. This is to support our progress indicator and cancel button.

	* Added a new feature to the .dodsrc file and caching. Users can
	set the default expiration time for a response using a parameter
	in the RC file. By default the expiration time is 24 hours
	(written in seconds).

	* Fixed bugs in the caching software. Compressed responses now are
	cached correctly and responses with several variables are also
	correctly handled. 

2000-03-31  James Gallagher  <jimg@dcz.dods.org>

	* escaping.cc: Fixed a bug where an int was used to index into a
	string object.

	* parser-util.cc (check_float32): Float32, Float64 attributes no
	longer check ranges.

2000-03-20  James Gallagher  <jimg@dcz.dods.org>

	* parser-util.cc (check_byte): Byte attributes can now be either
	signed or not (i.e., their range is -128 to 255). This is to
	support clients that assume bytes to be signed as well as those
	that assume bytes to be unsigned.

2000-01-26  James Gallagher  <jimg@dcz.dods.org>

	* Merged with release3-1-4. The next merge should use: update -j
	release-3-1-4 -j release-3-1.

2000-01-26  James Gallagher  <jimg@dcz.dods.org>

	* Fixes for Red hat 6.x (from Ethan).

	* Fixed the use of the stdc++ library's string::find() method. Its
	return type was assigned to an unsigned int in many places. On 64
	bit machines this caused problems. The type now used is
	string::size_type (although size_t also works).

2000-01-24  James Gallagher  <jimg@dcz.dods.org>

	* Fixed a bug in the DAS and DDS parsers (das.y, dds.y). These
	parsers used static global C++ objects which require that their
	constructors run before main(). However, when the dap library is
	linked by a linker that is not aware of this (e.g., Sun's ld, when
	using GNU C++) those constructors are never called and accessing
	those objects causes a segmentation fault. Fixing this problem
	might fix undiscovered bugs in netCDF clients and definitely fixes
	problems with the nascent loaddods rewrite (where loaddods gets
	rewritten in C++).

1999-12-31  James Gallagher  <jimg@dcz.dods.org>

	* Added Gui (progress indicator) code back into the core. The
	interpreter is now embedded in DODS. 

1999-12-14  James Gallagher  <jimg@dcz.dods.org>

	* Fixed a bug in Connect where once the Cache was closed it would
	never be opened again. 

	* Fixes/improvements for the caching code. The code now correctly
	handles the case where many URLs are opened using Connect objects
	created both sequentially and in an interleaved fashion. The Cache
	index is now updated after each URL request. The Cache is now
	closed only after all connect objects are destroyed.

	* Connect.h: Added static members to track use of Connect objects
	in conjunction with the new caching code.

1999-11-04  James Gallagher  <jimg@dcz.dods.org>

	* Merged: cvs update -j release-3-1-2 -j release-3-1, the next
	merge command should use -j release-3-1-3 -j release-3-1.

1999-11-03  James Gallagher  <jimg@dcz.dods.org>

	* Fixed the usage filter (nothing to do with the comment about a
	function of the same name in cgi_utils.cc). The filter was slurping
	entire datasets because it failed to append the .html suffix when
	looking for user-defined documentation about a dataset.

	* DDS::send now catches exceptions thrown by the expression
	evaluator. This means more reliable handling of errors from within
	server-side function. However, this is only a stop-gap solution to
	the general problem of poor error processing within the library.
	Look for a *real* solution to this problem in about 2 months.

	* Fixed a range-check bug for unsigned 16-bit integers. The values
	were being tested as if they were signed.

	* Removed usage() from cgi_utils.cc since it was not used and was
	causing conflicts with servers which defined a function with the
	same name.

	* Documentation updates.

	* Substantial changes to the Makefile.in. See the top level ChangeLog.

1999-08-27  James Gallagher  <jimg@dcz.dods.org>

	* Fixed the value of DODS_SHRT_MIN in dods-limits.h

	* Now compiles with gcc 2.95

1999-05-27  James Gallagher  <jimg@dcz.dods.org>

	* Misc bug fixes.

	* Error and InternalErr objects now are better behaved and DDS
	throws them more predictably (although there's still a lot of work
	to do there).

	* Fixes merged from the alpha-3-0-0 branch.

1999-05-24  James Gallagher  <jimg@dcz.dods.org>

	* The DODS support address is now correct in all the places in the
	dap. 

	* Fixed some bugs that arose because C and C++ I/O streams may no
	longer be synchronized.

	* Dan removed the old GUI code. See the comments in Connect.cc.

1999-05-19  James Gallagher  <jimg@dcz.dods.org>

	* The dap++ library now builds using -fPIC (position independent
	code) so sharable libraries should be easier to make.

	* In DODS_Dispatch.pm, variables are checked for odd characters
	that might be used to embed shell commands.

	* Fixed security holes in the DODS_Dispatch.pm code. It now
	returns the command as elements of an array which can be passed to
	the exec() thus by passing the shell.

	* Fixed all occurrences of the support email address to be the new
	address. 

1999-05-04  James Gallagher  <jimg@dcz.dods.org>

	* Added to DODSFilter and DODS_Dispatch.pm so that server version
	number information can be passed from the CGI script to the core
	software. Now when you ask for the version of a server, you will
	get the server's version information in addition to the core's. In
	addition, the XDODS-Server header that is returned with every
	response will now contain the server's version number. This
	assumes that the server's dispatch script initializes
	DODS_Dispatch correctly.

	* Added InternalErr class. This class should be thrown by any code
	that finds an internal error (i.e., the sort of thing that might
	otherwise be trapped by an assert).

	* Committed changes that form the base of version 3. This combines
	the new simple types with a reduced dependence on the old libg++
	code and misc. fixes. 

1999-04-21  James Gallagher  <jimg@dcz.dods.org>

	* Small fix in prune_spaces(). This fixed a problem in the mexcdf
	client (and presumably other netcdf or matlab programs to).

1999-04-14  James Gallagher  <jimg@dcz.dods.org>

	* Fixed a bug in Connection::del_connect() where an assert tested
	false for a valid condition. It is OK for the conns[i] element to
	be NULL when this method is run.

	* Fixed a bug in Connect where the member _tv would be deleted
	without being first allocated when local files are accessed. This
	member is no longer needed (it was used by libwww 5.0).

1999-04-09  James Gallagher  <jimg@dcz.dods.org>

	* This release is a special ferret-only release. It is a stable
	alpha version of what will be DODS 3.0 once some more features are
	added. 

1999-03-24  James Gallagher  <jimg@dcz.dods.org>

	* Added support for the new Int16, UInt16 and Float32 types.

1999-03-22  James Gallagher  <jimg@dcz.dods.org>

	* Added the Int16, UInt16 and Float32 datatypes to attributes. See
	the tests numbered test.18--20.

1999-03-19  James Gallagher  <jimg@dcz.dods.org>

	* Added a call to setprecision(15) in geturl. This makes it so
	that floating point numbers will print with the full range or
	precision. It might be that I have to move this when 32 bit floats
	are added because they have lower precision (8). However, setting
	the precision at this level (once, before the calls to print_val()
	start) is probably more efficient.

1999-03-17  James Gallagher  <jimg@dcz.dods.org>

	* Changed cgi_util.cc:find_ancillary_file() so that it looks for
	<pathname>.ext in addition to <basename>.ext and the other
	variations. This means that the current convention of naming
	ancillary DAS files <filename>.das will work for both the
	DODS_Date(), etc., functions (whose Factory classes were using
	this convention) and the regular DAS filter program. 

1999-02-24  James Gallagher  <jimg@dcz.dods.org>

	* An interim revision changed the way incoming data documents were
	processed so that the DDS contained in the data document did not
	have to copied to a separate file before being processed. However,
	this broken programs that read data docs with a pipe. This problem
	has been fixed. The document's DDS still is not copied, but
	programs like asciival that read from stdin via a pipe now work.

1999-01-21  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added the Grid Selection function. Grid variable may now be
	`selected' based on the values of the Map vectors (since this a
	constraint that returns data based on those data's values, I'm
	calling it a selection operation). The syntax looks like:
	grid(<grid var name>, <expression 0>, <expr 1>, ..., <expr n>). An
	example: grid(dsp_band_1, "29.7 < lat <= 34.8", "lon > -70.9", "
	-60 < lon"). This deliberately shows different forms the
	`expressions' can take. Note that these expressions can only name
	the grid's map vectors; they are not general expressions. Also
	note that the function appears in the projection part of a CE.

1999-01-15  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Changed the way the expression and DDS parsers work. Now the
	expression scanner/parser can process strings directly. This means
	that expression parsing is cleaner, somewhat faster and more
	reliable since a temporary file is no longer created as part of
	the parse process. Similarly, the DDS parser no longer requires
	that a temporary file be created to parse the DDS bound to a data
	document. 

1998-11-23  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Fixed a bug in DAS where the destructor would free memory that
	was just garbage. I replaced the old genclass-based DASVHMap code
	with an SLList of structs.

1998-11-11  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Fixes for various memory leaks found while working on the FF
	server.

1998-11-05  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Fixed error messages for CEs involving arrays. When an array
	name was misspelled in a CE you got no error message, now you do.

1998-10-21  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added projection functions to the CE syntax. These functions are
	executed *during* the parse of the projection clause. They can be
	used to add new (synthetic) variables to the DDS.

1998-10-14  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* expr.y: Added parse of single array indeces to the projection
	list in a CE. i[3] asks for the fourth element of the array i. The
	old syntax i[3:3] still works.

1998-09-17  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* The release (version 2.18) is the last that will use String.h.
	  WRONG! 11/11/98 jhrg
	
1998-09-03  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Feature: CEs no longer require fully-qualified names for fileds
	of ctor types.

	* Makefile.in (clean): Added GNU to the list of directories
	cleaned. This prevents sending out .o files with the source code.

1998-04-07  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Fixed Connect: leading spaces in a URL and/or CE caused either a
	crash or other problem.

1998-04-03  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added patches from Jake Hamby which fix various problems with
	Sequences. 

1998-03-27  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added targets for test coverage analysis.

	* Added fix from Jake Hamby.

	* Makefile.in (GNUHDRS): Added String.h & String.cc to the
	distributions. 

1998-03-19  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added error messages when array indices are out of range.

	* Fixed yesterday's fix... Error objects are no longer compressed.
	I moved compression into DDS::send (from DODSFilter::send_data)
	and structured send() so that the mime header generators no longer
	use a hack to write themselves without compression. Previously
	set_mime_*() used to `write past' the compressor process and this
	caused synchronization problems - which I tried to fix yesterday.
	Now the headers are written and then the compressor is opened. 

1998-03-18  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Fixed an ugly bug where Error objects were compressed (sometimes
	they still are) but the return MIME document header didn't say so.
	Now the return document header says if the Error object is
	compressed. Note that compressing Error objects is not going to
	save any (real) space but once the compressing data sink is set up
	*whatever* gets written to it will be compressed...

1998-03-17  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added the ASCII filter to the set of things that comprise a DODS
	server. Use .ascii or .asc as a URL suffix to get comma-separated
	ASCII data back from a DODS server.

	* Added boolean member functions is_simple_type(),
	is_vector_type() and is_constructor_type(). This reduce the size
	of various parts of the code (but I have not gone through and
	replaced all the old code yet).

	* Added some new mfuncs to the core. element_count() returns the
	number of elements in a constructor type (one for a simple type).

1998-03-09  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Removed the -fno-rtti flag from the DAP library build. The
	library needs RTTI so that software written using exceptions can
	catch derived exception classes.

1998-02-11  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added the DODS_Cache.pm class (which was in the hdf-dods server
	code only). This Perl module is not installed as part of the
	default stuff in DODS_ROOT/etc.

	* Added support for compression. Servers recognize the
	Accept-Encoding header in a request document. when the value of
	that header is `deflate' the zlib LZW algorithm is used to
	compress data. Clients automatically respond to document that
	contain the header Content-Encoding: deflate by un compressing the
	data (a new feature of libwww 5.1). The new servers are compatible
	with old clients and the new clients are compatible with old
	servers (although neither combination can use compression).

	* Added a help option to the servers (via an addition in
	DODS_Dispatch.pm). Use this with the `file name' /help or the
	extension .help.

Tue Dec 16 00:32:31 1997  James Gallagher  <jimg@localhost>

	* Added DODS_Dispatch.pm perl class. This class centralizes a lot
	of the code that used to be replicated in each of the perl scripts
	used to dispatch the various `methods' of a DODS server.

Mon Dec 15 17:26:37 1997  James Gallagher  <jimg@localhost>

	* Many small bug fixes that were fixed before being added to the
	TODO list.

	* Added DataDDS class which makes the version number read by
	Connect available to any member function that can access a DDS
	pointer (since DDS *s can reference DataDDS objects).

	* Added the DODSFilter class to simplify writing servers that
	conform to a set of standards Re: the placement and naming of
	ancillary files, version numbers, etc.

	* Added new Sequence processing code along with backward
	compatibility. Nested sequences are sent more efficiently. In
	addition, sequences may be followed by other variables in a Data
	object (an old bug).

	* Added new characters to those allowed in DDS NAME lexeme. This
	means that a file with _ and . in the name will parse.

Wed Aug 20 14:12:54 1997  James Gallagher  <jimg@localhost>

	* Added newline after data in process_data() in geturl.cc.

Thu Jun  5 16:08:10 1997  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* See TODO for a list of reported bugs fixed and outstanding.

	* Changed the way request_data works so that Connect can now be
	used to create clients that read not only from the network but
	also from standard input.

	* Wrote DODS_Dispatch.pm Perl `class' that can be used to write
	the nph-* dispatch scripts. This should simplify maintenance of
	those scripts since they was a lot of replication of code from one
	script to another. Now must of the real functionality is
	concentrated in the one file.

	* When projections on Grids result in an object that is no longer
	a `true' Grid (no longer satisfies Grid::check_semantics()) then
	send the resulting variables as a Structure of Arrays or a simple
	array (the latter if only one array remains after applying the
	projection to the Grid.

	* Changed the way servers report the version number of the core
	software. The message is now generated by the *_dods data filter
	program using its -v option (all the data filter programs
	support this option). This gets rid of the dods-core-version perl
	script. 

	* Changed geturl so that it can read from stdin (similar to
	writeval). 

	* Fixed bugs in util.cc.

Wed May 21 22:25:41 1997  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* See the TODO list for information on bugs found and fixed.

	* Added DAS aliases and hierarchies.

Sun Mar 23 17:01:12 1997  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Fixed the nasty decompression bug where child process exit
	status was never caught. This caused process tables to fill, etc.

Thu Mar  6 21:14:38 1997  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* See TODO list for bugs fixed.

Sun Feb  9 18:40:25 1997  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* See TODO for a list of bugs fixed.

Thu Feb  6 16:17:06 1997  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Changed the return type of request_data() from DDS & to DDS *.
	Also changed the return types of append_constraint() and
	constraint_dds() from DDS & to DDS *. When request_data()
	encounters an error it no longer exits; now it returns NULL.

Wed Dec 18 11:18:05 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Version 2.10 prepared

Wed Dec 11 20:15:10 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Created the Usage server.

	* Fixed bugs in cgi_util.cc - error Content-Description items were
	not processed.

Tue Dec  3 09:43:02 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added to DDS::parse_constraint() two new variables: ostream os
	and bool server. These are used to control processing of error
	messages that are returned from the CE parser. Rather than have
	the CE parser write all its error messages to stderr, the parser
	now returns an error object. The new code in parse_constraint()
	ensures that an `error' header is written to OS and that the error
	object is serialized if the member function is run from within a
	server. Since parse_constraint() is called from within
	DDS::send(), users of the library don't need to do anything
	different unless they have coded their own versions of send().

	* Added code to ensure that variables can be used in the selection
	part of a constraint expression without having to be also in the
	projection part. This means that a CE can be used to request a
	single variable (e.g., the sequence `s') but select by comparing
	to other variables in the data set.

Mon Dec  2 11:50:29 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added three new versions of int_ops to process all the possible
	permutations of signed and unsigned integer operands. Ignore the
	warnings in util.cc about comparisons between signed and unsigned.

	* Added cases for unsigned integer variables in the Vector, Byte,
	Int and Float classes. Also added cases in BaseType and some of
	the Test* classes. This fixes problems with the processing of
	this type.

Wed Nov 27 11:02:44 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added DDS as a third argument to the user-defined functions in
	the CE evaluator. This means that a function (which may be server
	specific) may look at the value of any variable in the dataset,
	not just those values passed as parameters. This will facilitate
	creation of functions which use implicit relations between
	variables when computing values or performing selections (e.g.,
	when geo-location information depends on the implicit relation
	between two or more arrays).

	* Changed the way Makefile dependencies are processed so that
	Makefile (re)generation is faster (since dependencies rarely
	change). 

Sun Nov 24 19:45:22 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Tested the library code in a number of situations and fixed many
	little bugs.

	* The asynchronous mode for data transfers is broken and is never
	used. 

	* Significantly improved processing of errors - web errors are now
	handled correctly for the DAS and DDS - alas the data will still
	exit when an error is encountered. Note that to fix this problem
	I'll need to use exceptions *or* change the return type of the
	request_data() member function to DDS * (from DDS &). Either one
	will break everyone's code...

	* Fixed the lame-looking progress indicator.

	* dods_root is no longer a global variable that depends on run
	time initialization from g++; now it is a function. This ensures
	that the core software can be linked to program core using linkers
	other than g++.

	* Added better compressor function - look at jg_dods.cc to see how
	it is used.

	* Fixed broken decompression.

Wed Nov 13 10:43:56 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added error MIME headers to the set that can be generated by
	helper functions in cgi_util.cc. The error headers are necessary
	since DODS now must generate all its own MIME headers (see the
	section on NPH CGIs in the CGI spec). MIME error headers should be
	used when an http or www error has been detected - don't use the
	DODS error objects in those cases.

	* Made changes in the Int data types so that expressions with
	UInt32s should work. 

	* Fixed some problems with the GUI. It should work more reliably
	but I doubt that all the problems have been fixed. Needs testing.

	* Now reports most www/http errors, although some clients still
	can't seem to get the GUI to work (e.g., writeval) even though
	geturl can.

	* Now requires version 5.0a of the WWW Library.

	* Many changes based on feedback from the initial version 2.09
	distribution. 

Tue Oct 29 08:23:30 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added UInt32 (32 bit unsigned integers) to the DAP. This
	includes both using them in the DDS and the DAS. When an UInt32 is
	used as an operand in a CE, the other operand is cast to unsigned
	for the comparison operation.

Fri Oct 18 09:35:07 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Fixed various errors in the new Unsigned int classes.

	* Changed the operation of Connect::request_das() and
	request_dds(). They now pass any initial constraint along to the
	respective servers. An initial constraint is one which is supplied
	along with the URL at the time the Connect object is made.

	* The functions set_mine_{text,binary} now produce complete
	HTTP/MIME headers. Thus DODS servers can now be invoked using the
	`nph' feature of CGI 1.1 (done by naming the DODS server dispatch
	script `nph-*'). This solve two problems which appeared with large
	data transfers: Transfers were cut-off before completion when a
	server-determined timeout period elapsed and 2) Some large
	transmissions had an extra byte added into the data stream.

Tue Oct  8 09:23:57 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Modified geturl so that CEs can be passed in using ? in the URL
	in addition to the program's -c option.

	* Added `%' to the set of characters allowable in identifiers.

	* Added code so that a constraint expression appended to a URL is
 	properly handled. The CE is stored in in the Connect object. When
	a CE is passed to the request_data member function, Connect
	correctly combines the projection and selection parts of that CE
	with the matching parts of any initial CE. 

	* Fixed up the grammar files for Bison 1.25

Thu Sep 12 14:05:49 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added a new option to geturl; -D which can be used to get data. 

	* Fixed Array::print_array; used indirectly by the new option to
	geturl. 

Mon Aug 26 13:18:21 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Fixed various configure.in files so that the different size ints
	are defined properly.

	* Fixed up the config_dap.h problem in the jg-dods directory.

	* Added classes for 32 bit floats, 32 bit unsigned ints and 16 bit
	signed and unsigned ints. These are *not* built by default - I'll
	let the various users have a chance to include these new classes in
	their software before they are added to the build (and thus must
	be sub-classed by users of the DAP).

Fri Aug 16 09:34:00 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Fixed configure tests for sem.h prototypes and the semctl union.
	A new test which scans the sem.h header is in aclocal.m4 (in etc)
	and the configure script uses that test.

Tue Aug 13 10:54:02 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Fixed bugs in Grid: bad constraint expressions would cause core
	dumps and a bug on the SGI (maybe others) where valid Grids would
	not parse.

	* Added to the Error class so that its methods are more useful
	for correcting errors and displaying messages (see Error.cc).

	* Switched to parser_arg object on all the parsers. parser_arg is
	a simple object used to pass values to and from the bison gnerated
	parsers. You need bison 1.24 or newer.

	* Added _unused_ to config_dap.h; this macro expands to gcc's
	__attribute__((__unused__)) thing. I then tacked `__unused__' on the
	char rcsid[] arrays to suppress warnings from gcc -Wall (and
	highlite the warnings that should be fixed!)

	* Fixed a bug in Clause where non-existent functions were
	evaluated - this caused a core dump.

Fri Aug  9 10:21:06 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Fixed bug in Connect where local accesses were not correctly
	detected. Also modified geturl to print a diagnostic when supplied
	with a local file name (or, more to the point, a name without
	`http'). 

Wed Jul 17 15:04:01 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Added expr-check target in Makefile.

	* Added new tests for das, dds objects. Added tests for expr-test
	driver. 

Mon Jul  8 16:25:11 1996  James Gallagher  <jimg@dcz.cvo.oneworld.com>

	* Gui.cc: Added compile-time switch HAVE_EXPECT which is used to
	control use/requirement of expect and tcl. When defined as 1 Expect
	and Tcl are used to communicate with a GUI subprocess. When 0,
	Expect and Tcl are not used (thus the libraries are not required).
	Note that without Expect the GUI used for the transmission
	progress indicator and error reporting is not available.

$Id: ChangeLog,v 1.84 2005/05/10 22:24:49 jimg Exp $

