0.4-10	Function write.linelistShape() added to output a list of lines to a shapefile, as suggested by Patrick Giraudoux.
0.4-9	A bug in write.polylistShape() found by Greg Snow, provoked by not checking that numeric attributes were integer, has been resolved - they are now set to the required types.
0.4-8	Functions dbf.read() and dbf.write() replaced by read.dbf() and write.dbf() in the foreign 0.8-0 package; references now made to those functions and package dependency on foreign (which is a recommended package and so not a problem in the course of time). This version of foreign is new, and so will take time to diffuse.
0.4-7	The dbf.read() and dbf.write() functions have been revised and added to the user-visible namespace. New functions write.pointShape() and write.polylistShape() using dbf.write() has been added to let data.frames be written as point-type shapefiles, or as polygon-type shapefiles with an S3 polylist object, respectively - all these functions should be treated as alpha-quality until they have been in use for some time; reports on software that reads ESRI-generated shapefiles but does not read these files should be sent to the package maintainer. Minor changes to plot.polylist() to painting of background with pbg= argument; corrections to plot.Map() to make sure color= and type= are passed to color.ramp() (thanks to Johannes SCHNITZLER), and to make sure rec= is respected (thanks to Tony Olsen); dotsInPolys() added for dot density maps (suggested by Johannes SCHNITZLER); symbolsInPolys() added to place grids of points over polygons with chosen density and/or symbols (suggested by Michael Wolf) - the two latter functions use functions from the splancs package internally.
0.4-6	Allow axis labels to be passed through plot.polylist() (thanks to Lukas Meier)
0.4-5	Corrected C code underlying the reading of DBF files to allow character fields to be arbitrarily wide (bug report Trondheim diamonds with fields over 200 characters wide - buffer overflow from unchecked max width 49); Added access to CHANGELOG through maptools() function.
0.4-4	Corrected C code for reading SHP/SHX files to reduce danger of mismatched PROTECT/UNPROTECT pairs, and hopefully resolve issues with crashes on Windows platforms in some cases.
0.4-3	Back out of a too-aggressive heuristic for guessing ring-directions and plot-ordering
0.4-2	Introduced changes including warnings in Map2poly() and plot.polylist() with regard to rind-direction and plot-order heuristics - Map2poly() tries to determine which polygons and sub-polygons are wholly contained within each other, to note the order in which they should be plotted in plot.polygon() to avoid over-plotting when painting polygons, and, if the raw= argument is FALSE, to correct possible wrong ring directions (lakes are not usually found in the sea etc.). plot.polylist() then tries to use this information to avoid over-painting polygons by painting enclosed units after their enclosing units, and, if the forcefill= argument is FALSE, will paint anti-clockwise rings (aka holes) with background colour rather than fill colour. At the present, raw= and forcefill= defaults are TRUE, and warnings are issued that this behaviour will change. The underlying problem is that most shapefiles in circulation do not follow ESRI specifications for polygons, many have at least some rings in the wrong direction, over and above slivers and dangles. This is unlikely to change, so defensive code is required.
