1   [1]<- Previous [2]-> Next [3]Contents
2
3Icon Change log
4
5  XTide 2.15.3 (libxtide.so.1.0.3) (2020-06-28)
6
7   (Code rot) Upgraded URLs in messages, man pages, and comments to https.
8
9   (Portability) Applied patch from Iain Hibbert to replace string
10   comparison == with more portable = in configure.ac.
11
12   (Nit) Clarified configure.ac messages about libXaw3dXft.
13
14   Moved build scripts for Android, Windows, and DOS to the separate
15   FunkyBuilds package available from
16   [4]https://flaterco.com/xtide/files.html#FunkyBuilds.  Dropped
17   scripts/Fedora, which was obsolete and replaced by scripts/systemd.
18
19   Corresponding changes and minor fixes to documentation.
20
21  XTide 2.15.2 (libxtide.so.1.0.2) (2019-02-24)
22
23   (Bug) Escape ampersands and < characters in text strings in SVG
24   images.  Bug report credit:  Stephen Woodbridge.
25
26   (Bug) Added AM_DISTCHECK_CONFIGURE_FLAGS to Makefile.am to enable make
27   distcheck to succeed when out-of-path includes and libs are necessary
28   to build.
29
30   (Code rot) Adapted to new toolchain producing xml_y.hh where it used to
31   have xml_y.h.
32
33   (Code rot) Updated URLs for generation of text files from HTML.
34
35  XTide 2.15.1 (libxtide.so.1.0.1) (2016-02-22)
36
37   (Regression) Fixed "bind: Invalid argument" failure of xttpd on FreeBSD
38   and OS X (El Capitan).  Linux and Android are not affected.  Bug report
39   credit:  Manfred Antar.
40
41  XTide 2.15 (libxtide.so.1.0.0) (2016-01-25)
42
43   This release is all about catching up with external changes, with
44   significant additions occurring only to xttpd.  Users of the 2.14
45   versions of xtide, tide, and libxtide won't notice a functional
46   difference, but some build script breakage has been fixed.
47
48   Added [5]systemd support to xttpd (with thanks to Mamoru Tasaka):
49     * When configured with --enable-systemd, xttpd links with libsystemd
50       and runs as a "simple" socket-activated service.  This removes the
51       need for xttpd to be launched with root privileges but requires
52       [6]additional config files to be installed.
53     * Added scripts/systemd containing xttpd.socket and xttpd.service.
54     * Harmonizing changes to barf messages in libxtide.
55
56   Other xttpd improvements:
57     * Made work with IPv6.
58     * Invoke daemon() if not using systemd.
59     * Log empty requests as such instead of "Bad client command" with no
60       details.
61     * Improved guessing of hostname when webmaster address is not
62       specified.
63     * Added -DXTTPD_NO_DAEMON option for debugging/testing and as a
64       kludge for Android.
65
66   For Xaw3dXft:
67     * Fixed freetype2 detection (was failing on Slackware 14.1).
68     * Updated xxX.cc to the 1.6.2d API.
69     * Updated configure to detect 1.6.2d and not any earlier version.
70       Note:  Every update tends to break the build, but there are no
71       version defines to use defensively.
72
73   Updated Android, VS, and DOS build scripts for Android NDK r10e, Visual
74   Studio Community 2015, and DJGPP 2.05 respectively, and the current
75   versions of everything.
76
77   Obscure changes to build scripts for compatibility with new versions of
78   automake/autoconf:
79     * Added AUTOMAKE_OPTIONS = subdir-objects to Makefile.am.
80     * Fixed consequential damage to XML parser recipes.  Note:  Newer
81       autotools produce scripts such that regeneration of the XML parser
82       will fail.  You get xml_y.hh instead of xml_y.h.  For now, stick
83       with the working build scripts generated by older autotools.
84     * Added m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) to configure.ac.
85
86  XTide 2.14 (libxtide.so.0.0.0) (2014-11-02)
87
88   Moved all "common" files into a separate library and namespace,
89   libxtide.  If libdstr is not provided the Dstr class gets included in
90   libxtide.
91
92   Enabled building libxtide, tide, and xttpd for Android:
93     * Fixed configure.ac nit that blocked cross-compiling.
94     * Added configure option --enable-lm_hard.
95     * Added workaround for Android/Bionic quirk of failing on zoneinfo
96       paths introduced by a colon character.  This fixes the time zones
97       problem that affected MX Tides.
98     * Added example script for cross-compiling libpng, libtcd, libxtide,
99       tide, and xttpd for Android on x86 or x86_64 Linux in
100       scripts/Android.
101
102   Other portability and code rot:
103     * Added new build script for Visual Studio.  The Cygwin dependency is
104       removed at the cost of using a pre-generated configuration.  Zlib
105       and libpng are now built automatically with no mucking about in the
106       Visual Studio IDE.
107     * Updated Makefile.dj2 for DJGPP 2.04 and to build libxtide.
108     * Changed GCC minimum version test to ignore Clang, which
109       fraudulently identifies itself as an old GCC.  Bug report credit:
110       Ryan Schmidt.
111     * Changed GCC minimum version failure into a big ugly warning.  Since
112       initializer lists have become optional, some pre-4.4 versions work
113       again.
114     * Replaced a preprocessor test for Visual Studio with a more general
115       configure-time check for whether std::vector has an
116       initializer_list constructor.  This fixes the SafeVector build
117       error on OS X Mountain Lion.  Mavericks was never afflicted.  Bug
118       report credit:  Dan Hinckley.
119
120   New settings:
121     * XTide*caldayfmt (-cf) controls the format string used to print days
122       in calendars.
123     * XTide*linebreak (-lb) controls whether or not calendar mode inserts
124       a line break before prediction values.  This reduces truncation in
125       text format and tweaks line wrapping in HTML and LaTeX formats.
126     * XTide*omitunits (-ou) prints numbers with no ft/m/kt and adds a
127       header line stating the units and datum (where possible).
128     * XTide*pagebreak (-pb) controls whether or not calendar mode inserts
129       a page break and repeats the station header for each month in text,
130       HTML, and LaTeX formats.  Text uses form feeds and HTML uses a
131       page-break-before style.
132
133   New, experimental configurable --enable-moon-age replaces the moon
134   phase column of calendar mode with moon age.  This number wants to be
135   replaced by graphics showing the moon as it would appear
136   (approximately) on each day of the lunar month as originally suggested
137   by Kelly Bellis, but it's not easy to implement that consistently
138   across all formats.  FWIW, Unicode 1F311 through 1F318 provide
139   characters for 8 phases of the moon that could be used in UTF-8 text
140   modes.
141
142   (Tweak) Centered calendar cell contents in HTML and text formats as
143   they already were in LaTeX format.
144
145   (Note) In most modes the approximately zero prediction values
146   associated with slack water events are output, but they are omitted in
147   calendar mode.  Noted but not changed.
148
149   Thanks to Kelly Bellis for suggestions to improve calendar mode.
150
151  XTide 2.13.2 (2013-07-21)
152
153   (Bug) Fixed that a UTF-8 locale didn't make any difference to text form
154   graph and clock mode output.
155
156   (Portability) For DOS:
157     * Updated bundled Dstr to version 1.0.
158     * Added CP437 as a possible codeset value (requires Dstr 1.0).
159     * Customized BROKEN_ZONEINFO error message for DJGPP.
160     * If nl_langinfo isn't available, the hardcoded value for codeset can
161       be selected at compile time by defining CODESET.
162     * Added DJGPP makefile and suggested settings in scripts/DOS.
163
164   (Feature) Made the default prediction interval configurable (new
165   setting -pi replaces Global::defaultPredictInterval).
166
167  XTide 2.13.1 (2013-07-10)
168
169   (Code rot) libXaw3dXft 1.6.2b changed the name of the library and
170   include path again.
171
172   (Code rot) Disabled the ancient and obsolete zoneinfo compatibility
173   hack for everything except Visual Studio because it masked time zone
174   breakage in an Android port.
175
176   (Portability) Removed requirement for the C++ compiler to support C++11
177   extended initializer lists and got the Visual Studio build working
178   again.
179
180   (Removed limitation) Incorporated patch from James Ashton to replace
181   the Skycal etcorr function, which was limiting moonrise/moonset
182   predictions to years 1900 through 2099.
183
184   Nit fixes:
185     * Build scripts:  only the interactive client needs to link with
186       libgps.  Tested with gpsd 3.9.
187     * Per Kelly Bellis suggestion to expose version number through GUI:
188       added "About XTide" to options menu; added version string at the
189       top of the disclaimer text.
190     * Added missing entry for Control Panel in help for options menus.
191     * Documented that datefmt setting is ignored in calendar mode.
192
193  XTide 2.13 (2012-06-03)
194
195   (Misfeature) Mostly eliminated the need to set the resource
196   XTide*beNiceToColormap: False to avoid ugly borders with Xaw3d and
197   Xaw3dXft.  Added documented bug for the remaining case, which afflicts
198   xxHorizDialog via libXaw3d's asciiTextWidgetClass and seems unfixable.
199
200   (Nit) Deleted a superfluous configuration change for libXaw3dXft.
201
202   (Nit) Fixed new (GCC 4.7.0) warnings in Date.cc, xxRoot.cc, and xxX.cc.
203
204  XTide 2.13 RC3 (2012-03-04)
205
206   (Code rot) libXaw3dXft took a hard left turn and jumped versions from
207   1.3.3 to 1.6.2.  RC3 will correctly detect and use libXaw3dXft 1.6.2,
208   but is no longer compatible with 1.3.3.  A tweak that fixes the problem
209   with long menus in the Set Time dialog is enabled.
210
211   Caution:  If using Xaw3d or Xaw3dXft, borders will be ugly unless you
212   set the resource XTide*beNiceToColormap: False.
213
214   (Compatibility) Added a workaround so that GCC 4.4 can build the
215   complicated extended initializer list in Global.cc.
216
217   (Tweak) If building with GCC 4.6 or above, use #pragma GCC diagnostic
218   ... to quash nuisance warnings.
219
220  XTide 2.13 RC2 (2012-02-25)
221
222   (Nit) Configure:  Add CPPFLAGS for FreeType only when actually needed.
223
224   (Cleanup) Removed unused field from ClientSide::Glyph.
225
226   (Optimization) When creating ClientSide::Font, null out and skip
227   characters 0-31 and 128-159.
228
229  XTide 2.13 RC1 (2012-02-21)
230
231   This release candidate of XTide requires compiler support for C++11
232   extended initializer lists.  GCC has supported them since version 4.4.
233   Visual C++ 2010 Express Edition doesn't have them, so the Visual C++
234   build is on ice until something changes.
235
236   (Feature) For Athena Widgets, configure will now look for Xaw3dXft (>=
237   1.3.3), Xaw3d, or Xaw, in that order.  Plain Xaw can be forced using
238   --disable-3d.  Thanks to Jean-Pierre Demailly for patches to make XTide
239   work with Xaw3dXft (and vice-versa).
240     * Xaw3d is a fork from an old version of Athena Widgets that offers
241       improved scrollbars and a different look for buttons.  Its last
242       release was version 1.5E in 2003.  Some issues that were
243       subsequently fixed in Athena Widgets, such as long menus running
244       off the screen, were fixed differently in Xaw3d.  (This affects the
245       Set Time dialog, where the list of years to choose from can be
246       quite long.)
247     * Xaw3dXft is a fork from Xaw3d 1.5E that uses FreeType fonts.  The
248       primary site is
249       [7]http://sourceforge.net/projects/sf-xpaint/files/libxaw3dxft/.
250
251   (Feature) GUI improvements:
252     * Made location list and disclaimer windows resizable.
253     * Fixed layout in location choosers.
254     * Added keyboard handler to scrollable viewports.
255     * Added -mf setting to select monospace font (interactive client
256       only).*
257     * Added -gf setting to select graph/clock font (interactive client
258       only).*
259     * Fixed text alignment in graphs again.
260     * Changed embedded graph font to LiberationSans.
261     * Set a maximum initial height on the control panel.
262
263   * Important usage note:  If XTide is built with Xaw3dXft, font names
264   given to XTide must be in fontconfig format (e.g., "Helvetica-10"),
265   rather than the traditional XLFD (e.g.,
266   "-*-helvetica-*-r-*-*-10-*-*-*-*-*-*-*").  Also, Xaw3dXft does not
267   return errors if there are problems with a font name; it just loads a
268   default font instead.
269
270   (Code rot) Added thousands of unholy casts to make the "warning:
271   deprecated conversion from string constant to 'char*'" nagging go away
272   for all the places where I have to call library functions that don't
273   use const.  Between that nagging and the new nagging about auto_ptr,
274   the deprecation was getting thick in here.
275
276   (Compatibility) Fixed problem with graph mode no longer working right
277   on a VT100.  If TERM is set to vt100 or vt102 and text form is
278   requested, the Special Graphics set will be used to get the middle dot
279   and degree sign characters.  However, non-ASCII characters in location
280   names and other data received from the TCD file will still do something
281   weird.  Bug report credit:  John Andrews.
282
283   (Feature) If TERM is set to vt100 or vt102 and text form is requested,
284   depth lines in graphs will be aligned better using characters from the
285   Special Graphics set.  (I don't have a VT100, but it looks right in
286   xterm's emulation.)
287
288   (Misfeature) Made HTML form of about mode less ugly.
289
290   (Bug) Corrected inconsistent quantization of coordinates (inconsistent
291   rounding of half-pixels) in the Graph hierarchy.
292
293   (Compatibility) Added a cast to work around an ambiguous overload of
294   waitpid (used in xttpd.cc) that appeared with GCC 4.5.3 and Cygwin.
295   (Did not occur with GCC 4.6.2 under Linux.)
296
297   (Code rot) Updated backward-compatible time zone mapping for Samoa.
298   The entire hopeless workaround for obsolete zoneinfo should be killed
299   with fire, but it is still invoked when tide is built with Visual C++.
300
301  XTide 2.12.1 (2011-11-27)
302
303   (Bug) Fixed missing encoding (character set) specification in SVG,
304   which caused browser SVG rendering to fail when the station name
305   contained interesting characters.  Bug report credit:  Keith N. Smith.
306
307   (Portability) Updates to support building tide.exe using Visual C++
308   2010 Express Edition:
309     * Removed a use of snprintf.
310     * Worked around the absence of a scanf format compatible with
311       uint8_t.  The previous default of guessing "hhx" whenever SCNx8 was
312       not properly defined led to memory corruption, as Visual C++ would
313       treat the target variable as something larger than 1 byte.
314     * Updated build procedure in documentation.
315
316   (Nit) Updated CONFIGURE-HELP from autoconf's INSTALL.
317
318  XTide 2.12 (2011-11-03)
319
320   (Bug) Removed incorrect SVGGraph.cc dependency on X11 (thanks Jeff
321   Dairiki).
322
323  XTide 2.12 RC1 (2011-08-28)
324
325   (Feature) Added support for the SVG format.  Thanks to Jack Greenbaum.
326     * Command line client supports -fv.
327     * Interactive client supports choice of format when saving clocks and
328       graphs.
329     * xttpd uses JavaScript to decide between SVG via the embed tag or
330       PNG via the img tag.
331
332   (Code rot) The nofill (-nf) setting was deprecated in favor of
333   graphstyle (-gs), and the anti-alias (-aa) setting went away.
334
335   (Feature) Added a fancier style of graph (generalized from Jack
336   Greenbaum's SVG code, example possibly embedded below) as graphstyle s
337   (semitransparent).  Set opacity with -to; set line width with -lw.
338   Note that semitransparent style makes no sense in formats that don't
339   support opacity (text and PseudoColor X-windows).
340
341   JGFeatures SVG graph example
342
343   (Speedup) On TrueColor displays, graphs and clocks are now drawn by
344   constructing an RGBGraph and converting it to a Pixmap.  xxPixmapGraph
345   (the Graph implementation that uses X11's drawing functions) is now
346   used only on ye olde PseudoColor displays.  The excruciatingly bad and
347   slow implementation of opacities in xxPixmapGraph has been deleted
348   along with the crufty caching code that failed to speed it up.
349
350   (Cleanup) Parameters in Graph and subclasses that were misleadingly
351   named "saturation" changed to "opacity."
352
353   (Tweak) Turned off interlacing for PNGs, since it always seemed to do
354   more harm than good.
355
356   (Code rot) Made XTide work with gpsd 3.x.  This is an incompatible
357   change; gpsd 2.9x no longer works.
358
359   (Notes) Browser support for SVG is still tricky.
360     * Firefox 5
361          + If an SVG is embedded using img, Firefox 5 uses jaggy scaling
362            at some zoom levels.
363          + Font scaling is inaccurate in the Linux version.
364     * Internet Explorer 9
365          + If <!DOCTYPE html> is not present at the start of a web page,
366            Internet Explorer 9 pretends not to know what SVG is.
367          + Embedding SVG using object is unreliable.  It worked in simple
368            tests but failed when used by xttpd.
369          + SVG embedding doesn't work for local files (IE behaves
370            differently for the same HTML retrieved from a web server).
371     * Other browsers were not tested, as there are enough problems
372       already just getting the top two to work.
373
374  XTide 2.11 (2010-08-11)
375
376   Comment changes only.  The integration with gpsd 2.95 is still dubious
377   after very limited testing, so it's just as well that XTide won't
378   automatically link with gpsd 3.0 when that comes out.
379
380  XTide 2.11 RC1 (2010-07-02)
381
382   Patches from Trent Piepho:
383     * (Feature) Allow use of -ml on xtide command line.
384     * (Bug) Fixed memory leak (pixmap leak) in xxMap.
385     * (Optimization) Replaced a sqrt with a multiply in xxMap and
386       xxGlobe.
387
388   Code changes inspired by patches from Trent Piepho, but more or less
389   different than what was suggested:
390     * (Feature) Added -tc and -cc settings to set the color of the dots
391       indicating tide and current stations respectively in the location
392       chooser.  (Both formerly used the mark color.)  This incurred a new
393       bug:  The location chooser depends on a station naming convention
394       to determine which stations are currents.  If that convention is
395       not followed, dots may be drawn in the wrong color.
396     * (Bug) Fixed WVS dir specified in xtide.conf not working with
397       --enable-local-files.
398     * (Bug) Fixed improper handling of widget internal margins in xxMap
399       that was causing some flat map behaviors to be slightly off.
400     * (Semi-bug) Corrected the overly conservative vertical scaling of
401       graphs for stations that have a large number of constituents.  This
402       involved changing the method used to estimate tidal range.  As a
403       side-effect, stats mode no longer reports the absolute mathematical
404       bounds; it instead reports the new "estimated" bounds, which are
405       tighter but may occasionally be exceeded.
406     * (Nits) Changed from truncation to rounding of translated
407       coordinates in xxGlobe and xxMap to avoid the pile-up at zero that
408       truncation produces.
409     * (Nits) Added some consts, corrected some comments and help text in
410       xxGlobe and xxMap.
411
412   (Feature) Added -ch setting to specify clock height independently from
413   graph height.
414
415   (Feature) If gpsd 2.92 or a compatible 2.9x version is present and
416   working, start the location chooser zoomed in on the current GPS fix.
417
418   (Usability) Versions of GCC older than 3.4 are now unconditionally
419   rejected by configure.
420
421   (Usability) Reject attempts to regenerate the configure script using
422   autoconf 2.65, which has a regression that causes the INT*_T tests to
423   fail improperly.
424
425   (Code rot) Fixed resize lag in the newer generation of window managers
426   (including Metacity, Compiz, KWin, Xfwm, and Openbox) that deliver a
427   firehose stream of resize events.  (The Xlib Programming Manual says
428   the ConfigureNotify event is to be generated when the resize request
429   "actually completes.")
430
431   (Bug) In About mode, X-windows form, implemented line wrapping so that
432   long descriptive text that is not formatted with linebreaks does not
433   result in a ludicrously wide window.
434
435   (Code rot) Compatibility with libpng 1.4:
436     * Direct access to jmpbuf was deprecated.  Use the new macro instead.
437     * png_check_sig was replaced by a macro, causing the autoconf test
438       for linking with the library to fail.  Use png_sig_cmp instead.
439
440   (Portability) Added workaround for [8]GCC Bug #43905 so that XTide can
441   be compiled with GCC 4.5.0.
442
443   (Cleanup) Purged leftover xOrigin/yOrigin complexity from xxGlobe.cc.
444
445  XTide 2.10 (2008-02-05)
446
447   (Code rot) Updated bundled Dstr to version 20080124.
448
449   (Documentation) Fixed man page nits and related nits in documentation
450   of command-line switches.
451
452  XTide 2.10 RC1 (2008-01-18)
453
454   (Feature) Enabled clock mode output (mode k) in PNG and text forms from
455   the command-line client.  This feature was requested to enable the
456   construction of embedded clock widgets.  (Suggested by Mark Crossley)
457
458   (Portability) Fixed incorrect resolution of utsname on Suns.  Bug
459   report credit:  C. Jeffery Small.
460
461   (Code rot) Set the magic environment variable to opt out of the
462   backward-incompatible changes made by the Composite extension to X11.
463   Said changes were causing XTide windows to appear transparent in
464   foo-foo windowing environments.  Bug report credit:  Alan E. Davis.
465
466   (Documentation) Beefed up the man pages and made minor clarifications
467   to the descriptions of some settings.
468
469  XTide 2.9.5 (2007-12-10)
470
471   (Portability) Renamed CONFIGURE to CONFIGURE-HELP to eliminate conflict
472   on case-insensitive file systems.  Bug report credit:  Anton Pitts
473   (Mac), Leonid Tochinski (Windows).
474
475   (Portability) With help from Leonid Tochinski, made command-line client
476   portable to Visual C++ Express Edition.
477     * Tolerate missing header files and functions.
478     * Use nonstandard header files if present.
479     * Possibly use #pragma message instead of #warning.
480     * #define _USE_MATH_DEFINES.
481     * Specified binary mode for some files used by tide.exe.
482     * Tolerate MS-DOS line discipline in xtide.conf.
483     * Some Windows-specific code for low-level file operations.
484     * In source files needed for tide.exe, renamed every variable named
485       _timezone to timezoneLocalVar to eliminate conflict with global
486       _timezone variable.
487     * Fixed a yyerror signature mismatch between xml_l.ll and xml_y.yy.
488     * Added --enable-semicolon-pathsep and --enable-local-files.
489     * Possibly use %I strftime format instead of %l.
490     * Only if compiling under Visual C++, set locale to "English_United
491       States.1252".
492     * Added a workaround for a time function bug in Visual C++ 2005 that
493       causes the program to crash.
494
495  XTide 2.9.4 (2007-09-03)
496
497   (Bug) Fixed incorrect encoding of characters in "About This Station"
498   window when ambient locale is UTF-8.
499
500   (Legal) Relicensed under GPLv3.
501
502   (Code rot) configure.ac:  Removed -DYY_NO_UNPUT, which flex no longer
503   respects as of version 2.5.33.
504
505   (Cleanup) Build scripts:  Removed AM_MAINTAINER_MODE and made 'make
506   dist-bzip2' do the right thing.
507
508  XTide 2.9.3 (2007-04-17)
509
510   (Bug) Fixed dropped lines in flat map drawing (improved version of
511   recent fix to tideEditor).
512
513   (Portability) Moved #define __STDC_FORMAT_MACROS to the top of
514   common.hh to avoid a surprise that occurs when inttypes.h gets included
515   by a previous include file.
516
517   (Cleanup) Removed an unused #define from common.hh.
518
519  XTide 2.9.2 (2007-03-31)
520
521   (Bug) In MLLW estimation, possibly include final LLW value depending on
522   endTime.
523
524   (Usability) Set year limits for time control dialogs based on the
525   actual type of time_t rather than the conservative interval common to
526   all platforms.
527
528   (Usability) Made xttpd report version of XTide; removed obsolete
529   discussion of PNG image format.
530
531   (Usability) Catch missing STL at configure time (reportedly not found
532   without CPPFLAGS under Mac OS X 10.4.9).
533
534   (Portability) Fixed several nonportable casts in xxGlobe.cc (32-bit int
535   assumption); replaced constant 8 with CHAR_BIT in two places.
536
537   (Cleanup) A few more cleanups.
538     * Cleaned up config.hh.  Most #defines were changed to typed
539       constants.  Definitions not related to settings were moved to more
540       appropriate locations.
541     * Removed a few includes from common.hh.
542     * Cleaned up format strings in Colors.cc.
543     * Moved wvsrtv declaration to xxGlobal.hh.
544
545  XTide 2.9.1 (2007-03-14)
546
547   (Bug) Changed estimation of MLLW in stats mode to use tidal day as
548   specified by [9]Special Publication NOS CO-OPS 1 and 2 instead of solar
549   day as was done in XTide 2.9.  It makes about 1 inch of difference.
550
551   (Compliance) GNU attributes are now enabled only if one configures with
552   --enable-gnu-attributes.  They are only useful if compiling with extra
553   warnings anyway.
554
555   (Usability) Compilers that cannot build a particular test case
556   correctly (notably GCC 3.3.x) are now rejected by configure with an
557   explanation that it is time to upgrade.
558
559  XTide 2.9 (2007-02-27)
560
561   (Portability) Cygwin doesn't have llround yet.  Made do without it.
562
563   (Compliance) Rearranged some callbacks to avoid the need for objects in
564   the X11 interface to delete themselves (considered harmful) or their
565   containers (presumably worse).
566
567   (Cleanup) A few more cleanups.
568     * Quashed default copy constructors and assignment operators on
569       classes that did not want to have them.
570     * Changed an unsigned char to a bool.
571     * Made factories static members of the classes that they produce,
572       thereby eliminating another friend function.
573     * Tagged return values as const.  See coding conventions.
574     * Cleaned up the templates.
575     * Got rid of redundant declarations of friend functions.
576     * Replaced a magic number with a constant.
577
578  XTide 2.9 RC3 (2007-02-18)
579
580   (Bug) Stopped time warps on subordinate stations from crashing
581   calendars, AGAIN.  The parent class of the class that was junked and
582   rewritten the last time around has been junked and rewritten.  Calendar
583   mode has been reimplemented in an entirely different style at great
584   expense and at the last minute.
585
586   (Code rot) Fixed configure to detect and use libdstr if it is present.
587
588   (Optimization) Inlined some functions and methods to make the
589   highfalutin' C++ code in XTide 2.9 run as fast as the crufty C code in
590   XTide 2.8.3.  See commentary in ConstituentSet::tideDerivative for
591   details.
592
593   (Usability) Decreased scrolling fraction for flat map from 95% to 25%
594   (consistent with globe).  Made station dots bigger in globe (more like
595   map).  Made tide graphs scroll by half the width of the graph instead
596   of by 1 day.
597
598   (Docs) Added makefile rule to generate README, ChangeLog, NEWS,
599   AUTHORS, and README-QUICK from the web site.
600
601  XTide 2.9 RC2 (2007-02-11)
602
603   (Feature/Cleanup) Added estimation of MLLW to stats mode; made stats
604   mode text from RC1 more consistent.
605
606   (Usability) Improved error reporting to distinguish absence of an
607   HFILE_PATH from absence of harmonics files.
608
609   (Cleanup) The C++ standard does in fact promise that the elements of a
610   std::vector are stored contiguously--purged MemoryChunk and replaced
611   its uses with vectors.
612
613   (Nits) Fixed a violation of coding conventions; improved commentary in
614   several places.
615
616  XTide 2.9 RC1 (2007-02-01)
617
618   (Cleanup) 100% code review and major cleanup.
619     * Performed numerous major and minor refactorings.
620     * Replaced crufty data structures with standard templates.
621     * Updated obsolescent coding practices.
622     * Corrected improper inheritance relationships.
623     * Purged dead, duplicate, and wasteful code.
624     * Purged gratuitous complexity and excessive generality.
625     * Purged speed hack that was incompatible with the design (hoping
626       that nobody will be impacted by the performance hit).
627     * Improved integrity checking.
628     * Created enums for cryptic parameters.
629     * Used const where applicable.
630     * Defined coding conventions.
631
632   (Code rot) Installed canonical Dstr.  Only visible impact should be
633   different sorting of location names containing �, �, �, �, or
634   fractions.
635
636   (Code rot) Caused xttpd to serve /favicon.ico as expected by most
637   browsers nowadays.
638
639   (Code rot) Added support for the newfangled NET_WM protocol to set
640   window titles.  This resolves an issue with window titles getting
641   mangled when the ambient locale is UTF-8.  Bug report credit:  Lutz
642   M�ndle.
643
644   (Code rot) Converted to automake; updated configure.ac per autoconf
645   2.60.
646
647   (Code rot) Removed Cygwin and Irix workarounds for incomplete strftime
648   implementations.  Cygwin's was fixed.
649
650   (Optimization) Added a pixel cache to mitigate a performance bottleneck
651   that occurs while anti-aliasing X graphs in xxPixmapGraph.
652
653   (Feature) Added LaTeX format for calendar mode and associated settings
654   pagewidth, pageheight, and pagemargin.
655
656   (Feature) Added eventmask setting, deprecated nosunmoon setting.
657   Eventmask allows moon phase, sunrise, sunset, moonrise, and moonset to
658   be enabled or disabled individually, whereas nosunmoon only allowed
659   them to be enabled or disabled as a group.
660
661   (Feature) Text and HTML form output are now generated in UTF-8 if that
662   is the ambient codeset.  Names specified in UTF-8 on the command line
663   are now understood.
664
665   (Feature) Text mode graphs and banners now show darkness (night time)
666   in a manner analogous to PNG or X graphs.
667
668   (Feature) Mouse wheel (mapped as Button4 and Button5) now works to
669   scroll text prediction windows, location lists, the control panel, and
670   the disclaimer.
671
672   (Feature) Added mean of maxima and minima and CPU time to stats mode.
673
674   (Feature) Made raw and medium rare modes accessible from xtide command
675   line.
676
677   (Feature) Added setting to control whether tide graphs are anti-aliased
678   on true color displays.
679
680   (Feature) Added setting to label tenths of units in graphs.
681
682   (Feature) Resolved timestamp collision problem in graphs.  (1) Shift
683   location of timestamps to avoid collisions when feasible.  (2) Improved
684   logic for deciding when to use short descriptions.
685
686   (Usability) When failing to load a font, report the name of the font
687   that failed to load.  When swapping the begin and end times, inform the
688   user.
689
690   (Portability) Used new autoconf feature to obtain integer types with
691   known sizes.  Used these types for TIME_WORKAROUND and Interval.
692
693   (Compliance) Spun off libtcd into a separate tarball.
694
695   (Security) Allow configuring user and group for xttpd and make xttpd
696   exit if the uid/gid can't be set thusly.
697
698   (Robustness) Trap and report overflow when adding an Interval to a
699   Timestamp.
700
701   (Robustness) Generalized Timestamp::tm2utc and eliminated the last use
702   of libc's mktime.  Bad or out-of-range timestamps provided by the user
703   should now reliably yield a relevant error message.
704
705   (Robustness) Fixed bug in handling (ignoring) of ill-formed x-fields in
706   TCD.
707
708   (Robustness) Modified Graph to be more compatible with variable-width
709   fonts, similar to patch contributed by Lee Ann Rucker.
710
711   (Bug) Fixed assertion failure on changing preferred units of length in
712   control panel while a current station is displayed.
713
714   (Bug) Fixed xttpd neglecting to demangle %XX syntax in exact query
715   URLs.  Bug report credit:  James K. Lowden.
716
717   (Bug) Fixed window manager closing prediction windows while subordinate
718   dialogs were open, which caused XTide to fail to terminate when the
719   last window was closed.
720
721   (Bug) Fixed failure to apply color settings to control panel scrollbar.
722
723   (Bugs) Fixed identification of day transitions in rare and pathological
724   cases.  Prior to the fix, it was possible for calendar to put events in
725   the wrong day around the time of daylight savings time changes in
726   exotic locales having interesting DST rules.
727
728   (Bug) Fixed invalid simplification of current sub stations having slack
729   offsets and level adds that resulted in the slack offsets being ignored
730   for affected stations.
731
732   (Bug) Stopped time warps on subordinate current stations from crashing
733   calendars, again.  The offending logic is that responsible for figuring
734   how many columns are needed.  Said logic has broken repeatedly.  This
735   time I basically gave up on the whole approach and dumbed it down to
736   something that hopefully won't break.
737
738   (Bug) Fixed incorrect rounding of negative coordinates in graphs.  You
739   could notice this in text graphs or banners where column zero sometimes
740   collected an hour tick that should already have scrolled off into
741   negativeland.
742
743   (Nit) Remove assertion failure if knots^2 are specified as the units in
744   a sub station record (levelAdd units are always knots anyway).
745
746   (Nits) Minor changes in calendar mode text.
747
748   (Nit) Fixed off-by-one-second bug in end boundary setting for xttpd
749   calendars.
750
751   (Nit) Handle whitespace in HFILE_PATH correctly.
752
753   (Nit) In disclaimer, replaced facetious reference to continental drift
754   with serious references to subsidence and uplift.
755
756   (Nit) Fixed shifting horizontal alignment of text in X11 text modes.
757
758   (Nit) When applying settings in the control panel, preserve marklevels
759   and steps but reset aspect and units to defaults or whatever the new
760   settings specify.
761
762   (Nit) Instead of always barfing when HOME is unset, barf only when the
763   need arises to write something to the home directory, and do without
764   any config files that would normally be there.
765
766   (Nit) Once again changed descriptive text related to the middle-level
767   line to avoid confusion.
768
769   (Nit) Fixed unintended scrolling of X11 text modes triggered in rare
770   circumstances.
771
772   (Nit) Fixed X11 graphs and clocks momentarily flashing to background
773   color when updating.
774
775   (Nit) Minor changes to short descriptions for tide events.
776
777   (Bug) Added documented bug for xttpd logging timezone shift.
778
779   (Bug) Added documented bug for control panel vanishing buttons problem.
780
781   (Cosmetic) Installed new default icon.
782
783  XTide 2.8.3 (2006-03-13)
784
785   (Code rot) Made to compile under gcc 4.1.0.
786
787  XTide 2.8.2 (2005-01-06)
788
789   (Bug) Fixed "oops" in xxMap.cc that caused station dots to be
790   suppressed on part of the flat map.  Bug report credit:  Jan Depner.
791
792  XTide 2.8.1 (2004-12-28)
793
794   (Portability) Updated configure to look in lib64 for X libs, for
795   compatibility with x86_64.  Bug report credit:  Fedora / David Kaplan.
796
797  XTide 2.8 (2004-12-10)
798
799   (Nit) More intelligent selection of WVS resolutions in globe.  The
800   wvs3.dat file now gets use.
801
802   (Nit) Don't suppress single-point islands on globe.
803
804  XTide 2.8 BETA 2 (2004-11-17)
805
806   (Bug) Tried to fix crash on startup on multi-head displays (no feedback
807   on whether it worked).
808
809   (Oversight) Omitted slack offsets are now handled by interpolating from
810   known tide events rather than defaulting to reasonable values.  This
811   should have been done as part of the changes in Beta 1.
812
813  XTide 2.8 BETA 1 (2004-10-26)
814
815   (Bug) The subordinate station interpolation algorithm derived from work
816   by Jean-Pierre LaPointe started misbehaving when it met the new NOS
817   data imported 2004-09.  See Exhibit A.
818
819   Exhibit A: discontinuous tide graph for Hana, Maui
820
821   That algorithm was designed around architectural problems that were
822   eliminated in the refactorings of XTide 2.7.  Replaced it with a
823   simpler and better algorithm that solves the above problem and three
824   others (appearing below).
825
826   The old algorithm had the interesting property that, as a side effect
827   of fudging around pathological cases that broke the algorithm, the
828   graph would often be a more likely model of reality than unquestioning
829   loyalty to the corrections would give.  No such luck with the new
830   algorithm, unless I deliberately break it in the same way.  See Exhibit
831   B, where an application of offsets to the insignificant higher low and
832   lower high tides at Kahului has produced a significant (and probably
833   mythical) tide cycle at Hana on the evening of 2004-09-08.
834
835   Exhibit B: Kahului
836   Exhibit B: Hana ho
837
838   (Bug) Fixed this longstanding documented bug:
839
840     Tide graphs and raw output for subordinate current stations won't
841     mesh with the predicted times of slack water, Min Flood or Min Ebb.
842     Cause of bug: The interpolation algorithm used to produce tide
843     graphs for subordinate stations doesn't do slack water.  Workaround:
844     none.
845
846   (Bug) Removed this longstanding documented limitation:
847
848     The raw tide levels for subordinate current locations whose
849     reference stations are hydraulic will do bogus things for a few
850     minutes around the time of slack water.  Hydraulic currents
851     exacerbate a minor inaccuracy that exists for all subordinate
852     stations, producing a major inaccuracy.
853
854   (Feature) Removed this longstanding documented limitation:
855
856     For most subordinate stations, you can't set a mark level.
857
858   (Bug?) Changed application of offsets for Min Flood and Min Ebb on
859   subordinate current stations to match what I think is NOS' intent.  For
860   details, see [10]https://flaterco.com/xtide/mincurrents.html.
861
862   (Bug) Fixed an IMPOSSIBLE_CONVERSION failure (oddly enough, from some
863   units to the same units) triggered by opening a station, converting
864   units, setting a mark level, and then opening a new window from the
865   Options menu.  Kudos to August Hahn for discovering the steps to
866   reproduce this "interesting" bug.  Added a new warning, NO_CONVERSION,
867   to flag any other occurrences of the same thing.
868
869   (Code rot) Added :America/Juneau, :America/Nome, :America/Yakutat and
870   :Pacific/Johnston to the compatibility table for platforms with
871   obsolete zoneinfo.  (Deliver me from Solaris 8!)
872
873   (Bugs & Features) Upgraded to libtcd 2.0.
874
875   (Feature) Added about mode.  (As in "About this station")
876
877   (Cleanup) Cleaned up strange coding in StationRef, HarmonicsFile, and
878   Offsets left over from the days of XML sub stations.
879
880   (Cleanup) Deleted some dead pretty-printing code in Speed, Constituent,
881   etc.; got rid of static buffers in some other pretty-printing code; got
882   rid of the Constituent class (merged into TabulatedConstituent); synced
883   Angle::normalize with fp roundoff fix and assertion from Congen; added
884   an assertion that node factors should be greater than 0 (this will
885   detect TCD files with overflow problems).
886
887   (Cleanup) Removed CFLAGS from the build process; just use CXXFLAGS.
888   Removed -DNVSUNOS from configure.in since it has no effect on libtcd.
889
890   (Cleanup) Moved libtcd accesses out of TabulatedConstituent.  Moved
891   libtcd dependencies out of HarmonicsFile.hh and changed build
892   dependencies so that only HarmonicsFile gets rebuilt when libtcd is
893   changed.
894
895   (Bug) Changed "Mean Tide Level" verbiage (formerly "Mean Sea Level") to
896   say "Mean Astronomical Tide."  The National Ocean Service (NOS) defines
897   both Mean Sea Level (MSL) and Mean Tide Level (MTL) in terms of
898   averages taken over observations.  The line drawn by XTide corresponds
899   to the mathematical mean level of the predictions, which approximates
900   both MSL and MTL, but, strictly speaking, is equivalent to neither.
901
902   (Nits) Fixed nits revealed by g++ -Wall -Wextra -pedantic.
903
904   (Bug) Fixed a logic error that could cause XTide to lock up if you
905   looked at a period of more than 24 hours with no tide events in just a
906   certain way.
907
908   (Feature) Made the globe location chooser able to zoom in closer.
909
910   (Nit) In both location choosers, quit chopping lines that are only
911   partly outside the window.
912
913  XTide 2.7.1 (2004-08-17)
914
915   (Bugs) Incorporated libtcd patch:
916
917     Version 1.13
918     David Flater
919     2004-08-15
920
921     (create_tide_db)  Write a valid end_of_file record even if someone
922     creates a database with no tide records.
923
924     (tide_db_default)  Removed a superfluous space character in table of
925     default datum types (after Lowest Astronomical Tide).
926
927   (Evil) Disabled the translation of the TCD comments field into a notes
928   field for sub stations.  It was a historical oddity that sub stations
929   had notes but not comments and reference stations had comments but not
930   notes, and this was no excuse for overloading the comments field.
931   Harmbase2 now wants to put stuff in the comments field for sub
932   stations, with the result that XTide 2.7 blabbers the comments to every
933   user as a cryptic and strangely verbose note.  Notes will come back if
934   and when the TCD format is extended to include a separate notes field.
935
936  XTide 2.7 (2004-08-09)
937
938   (Nit) Fixed xttpd to include the file name as well as the revision date
939   when citing what version of which harmonics file it's using.
940
941  XTide 2.7 BETA 2 (2004-07-01)
942
943   (Portability) Ignore all hidden files (dot files) in a directory
944   indicated by HFILE_PATH, not just "." and "..".  (OS X creates hidden
945   files everywhere.)
946
947   (Portability) Run ranlib on libtcd.a; ignore error if ranlib isn't
948   there.  (OS X needs ranlib.)
949
950   (Portability) Changed normalcflags and normalcxxflags in configure.in
951   to say -O instead of -O2.  (Forte doesn't grok -O2.)
952
953   (Portability) When looking for X11 in configure, recognize libXaw.dll.a
954   (per latest Cygwin) as well as libXaw.so and libXaw.a.
955
956   (Nit) Removed unnecessary escaping and quoting in a warning message in
957   configure.in.
958
959  XTide 2.7 BETA 1 (2004-04-20)
960
961   (Code rot) libtcd 1.12:  Deleted #include <malloc.h> from tcd.h.
962
963   (Nit) Replaced inappropriate radiation symbols in error windows with
964   standard international symbols for general panic and impending doom.
965
966   (Feature) Added iCalendar format and option to get iCalendar output
967   from xttpd.
968
969   (Feature) Added cbuttons setting to control whether clock windows
970   appear with buttons by default.
971
972   (Feature) Allowed setting location of lone window with -geometry.
973
974   (Feature) Allowed specifying an IP address for xttpd.
975
976   (Feature) Added CSV format to various modes.
977
978   (Portability) Added test for Fedora RPM build environment in
979   configure.  If found, usual and customary compiler and linker switches
980   are suppressed and RPM_OPT_FLAGS are added.
981
982   (Bug) Fixed small memory leak in SubordinateStation.cc.
983
984   (Cleanup) Major refactoring of tide events handling code.
985     * Original design:  predictExactTideEvent took an "internal"
986       timestamp, scanned for tide events, returned a tide event with
987       "corrected" timestamp (incorporating subordinate station
988       corrections) and also the "uncorrected" timestamp from where
989       scanning for the next event would continue.  Complex caching logic
990       was needed to integrate actual tide-tide events with sun and moon
991       events and still return events in the right order... usually.
992       However, sub station corrections could still cause events to be
993       returned out of order, and there was no way to fix it.
994     * What happened:  Eventually every relevant module except xxTextMode
995       grew its own crufty layer of linked list bashing to post-process
996       the predictions, really get them in the right order, and meet other
997       requirements unique to each module.  Circa version 2.6 the cruft
998       achieved critical mass and began to obstruct routine maintenance.
999     * The fix:  Linked list bashing made redundant by
1000       TideEventsOrganizer, which inherits standard multimap template.
1001       predictExactTideEvent replaced by predictExactTideEvents, which
1002       takes a range of timestamps and populates an organizer with exactly
1003       the events falling within that range (no "internal" timestamps
1004       required).  extendRange adds more events at the beginning or end of
1005       an organizer to support scrolling types of behaviors, albeit in
1006       chunks instead of single events.
1007     * Outcome:  Cruft greatly reduced.  Several previously unfixable bugs
1008       were fixed (see below).  -b and -e ranges now mean something.
1009       Scrolling performance in xxTextMode slightly degraded.
1010
1011   (Bug) Fixed this longstanding documented bug:
1012
1013     There are edge effects at the start and end of an interval chosen
1014     for subordinate station predictions.  Some events that are inside of
1015     the interval may be excluded, and vice-versa.  Cause of bug: While
1016     the interval is faithfully scanned for the reference station, tide
1017     events can jump in or out of the chosen interval after the offsets
1018     are applied.  Workaround: Leave a margin around the interval of
1019     interest that is larger than the offsets of the subordinate station
1020     (a few hours should suffice).
1021
1022   (Bug) Fixed this longstanding documented bug:
1023
1024     If two events (e.g., high tide and full moon) happen to coincide
1025     very closely, within 1 minute of each other, and you reverse the
1026     direction of the scrolling in the interactive plain mode window at a
1027     point where only one of the events is visible, you might be able to
1028     make the other one disappear.  Cause of bug: accuracy of
1029     predictions, precision of timestamps.  Workaround: don't do that.
1030
1031   (Bug) Fixed this longstanding documented bug:
1032
1033     In the interactive plain mode window only, tide events can be listed
1034     out of order for subordinate stations.  Cause of bug: design
1035     conflict.  Efficient scrolling is incompatible with keeping the list
1036     sorted.  Workaround: save the predictions to a file and they will be
1037     sorted.
1038
1039   (Nit) -b and -e ranges now mean specifically "all t such that b <= t <
1040   e."
1041
1042   (Nit) Expunged anachronistic references to "text mode" (it's plain
1043   mode).
1044
1045   (Bug) Fixed an assertion failure "tidecol < numcol" that could occur
1046   generating calendars for pathological subordinate current stations
1047   where applying the offsets causes slack-before-flood to happen after
1048   max flood or analogous for ebb.
1049
1050   (Nits) Added casts and changed data types to get rid of
1051   unsigned-to-signed comparison warnings.
1052
1053   (Cleanup) Major refactoring of settings management code to fix this
1054   longstanding "known design problem:"
1055
1056     Nine source files must be changed to add one new setting
1057     (Settings.hh, Settings.cc in 3 places, config.hh, UserDefaults.cc,
1058     xxApplicationDefaults.cc, ConfigDefaults.cc, CommandLineSettings.cc
1059     in 2 places, xxXTideRoot.cc in 4 places, and xxXTideRoot.hh).
1060
1061  XTide 2.6.4 (2003-11-16)
1062
1063   (Bugs) Incorporated libtcd patch:
1064
1065     Version 1.11
1066     David Flater
1067     2003-11-16
1068
1069     (create_tide_db)  Fixed horrible bug:  offsets for speeds,
1070     equilibrium args, and node factors were sign-reversed with respect
1071     to their usage in read_tide_db_header and write_tide_db_header,
1072     resulting in possible overflows.
1073
1074     (read_tide_db_header)  Added handling for zero tide records, which
1075     happens on new database create.
1076
1077     (open_tide_db)  Added check of modified flag to 2003-10-14 code.
1078
1079     (close_tide_db)  Deleted repeat free of tindex introduced
1080     2003-10-14.  Cleared modified flag on close.
1081
1082  XTide 2.6.3 (2003-10-14)
1083
1084   (Bug) Incorporated libtcd patch:
1085
1086     Version 1.10
1087     David Flater
1088     2003-10-14
1089
1090     Incorporated patch from Phil Thornton that closes a memory leak and
1091     improves performance on repeat calls to open_tide_db.  See
1092     [11]https://flaterco.com/xtide/tcd_notes.html
1093
1094   (Nit) Added a precompiler directive to prevent code inside of assert
1095   statements from being disabled by over-ambitious optimization.
1096
1097  XTide 2.6.2 (2003-09-05)
1098
1099   (Bug) Incorporated libtcd patch:
1100    Version 1.09
1101    Jan C. Depner
1102    2003-09-04
1103
1104    Bug fix - modifying last record in file and changing size of record caused
1105    a big problem.
1106
1107  XTide 2.6.1 (2003-07-23)
1108
1109   (Bug) Incorporated libtcd patch:
1110    Version 1.08
1111    Jan C. Depner
1112    2003-07-23
1113
1114    Bug fix - deleting last record in file caused a big problem.
1115
1116  XTide 2.6 (2003-05-28)
1117
1118   No code changes; just promoted to final release status.
1119
1120  XTide 2.6 BETA 4 (2003-03-27)
1121
1122   (Nit) Updated version string in libtcd.
1123
1124  XTide 2.6 BETA 3 (2003-03-27)
1125
1126   (Bug) There was another problem with the encoding of subordinate
1127   stations in TCD files.  The only stations materially affected this time
1128   were Gnat Cove, Carroll Inlet, Alaska, and Olga Point, Olga Strait,
1129   Sitka Sound, Alaska.  However, the fix required another incompatible
1130   change to the encoding of subordinate stations and updates to affected
1131   code in libtcd and XTide.  TCD files produced with tcd-utils dated
1132   earlier than 2003-03-27 and previous development or beta versions of
1133   XTide 2.6 should be replaced to avoid getting incorrect results.
1134
1135  XTide 2.6 BETA 2 (2003-03-18)
1136
1137   (Bugs!) tcd-utils was building some subordinate current stations
1138   incorrectly.  The fix required an incompatible change to the encoding
1139   of slack offsets and updates to affected code in libtcd and XTide.  TCD
1140   files produced with tcd-utils dated earlier than 2003-03-18 and
1141   previous development or beta versions of XTide 2.6 should be replaced
1142   to avoid getting incorrect results on subordinate current stations.
1143   Except... ironically, it appears that some of the subordinate current
1144   stations presently in the database are broken in precisely the same way
1145   as one of the TCD bugs, with the result that in those cases, you get
1146   the right answer only with the broken code.  The issue with those is
1147   the bogus assumption that the right thing to do if you don't get slack
1148   offsets is set them to zero.  If you don't get slack offsets
1149   (floodbegins, ebbbegins), OMIT those fields!  When slack offsets are
1150   omitted, XTide will interpolate a reasonable value.  But if you specify
1151   zero, you get zero -- even if that's unreasonable given the skew of max
1152   and min.  (This note has been added to the relevant portion of the
1153   documentation.)
1154
1155  XTide 2.6 BETA 1 (2003-02-20)
1156
1157   (Optimization) Changed from ASCII format harmonics files (harmonics.txt
1158   and offsets.xml) to binary TCD format (harmonics.tcd); retired the
1159   problematic fast loader since all loading now occurs at ludicrous
1160   speed.  Thanks again to Jan Depner.
1161
1162   (Feature) Added setting to enable inferred constituents (Jan Depner).
1163
1164   (Code rot) Expunged all uses of deprecated C++ streams from the code
1165   except for the verbose debugging code that hasn't been used in ages.
1166
1167   (Feature) Added support for the following command line syntactic
1168   shortcuts:
1169     * Arguments can be concatenated with their switches.
1170     * A yes/no switch that omits its argument implies "y".
1171     * Using +xx instead of -xx for a yes/no switch inverts the argument
1172       (so if the argument is omitted, "n" is implied).
1173
1174   (Feature) Overhauled usage of time_t to allow timestamps to range
1175   before 1970 and after 2037.  Added TIME_WORKAROUND to enable access to
1176   the past and future years on platforms where time_t is 32 bits.
1177
1178   (Portability) Changed default time formats when compiling under Irix to
1179   work around lack of support for %l in SGI's strftime implementation.
1180   C.f., similar Cygwin bug fixed in XTide 2.5 BETA 1 (2002-05-21) and the
1181   "fix" that started it all in XTide 2.4 BETA 1 (2001-03-25).  What a
1182   pain.
1183
1184   (Nits) Gave the control panel a scrollbar.  Stabilized the layouts of
1185   the control panel, text, raw, and medium rare modes.  Merged
1186   xxRareModes into xxTextMode.
1187
1188   (Feature) Replaced the now mostly useless filename field in location
1189   lists with a type field (reference or subordinate).
1190
1191   (Feature) The zone at the bottom of tide graphs previously used to note
1192   slack and mark crossing events is now shared by moon events.  The date
1193   was replaced with a description that is abbreviated when things get
1194   crowded.
1195
1196   (Feature) Added moonrise, moonset.
1197
1198  XTide 2.5 (2002-07-14)
1199
1200   (Nit) Tweaked some verbiage in the control panel.
1201
1202  XTide 2.5 BETA 1 (2002-05-21)
1203
1204   (Portability) Tweaked autoconfig files to allow clean compilation under
1205   OS X.  Thanks to Martin Hofmann.
1206
1207   (Portability) Changed default time formats when compiling under Cygwin
1208   to work around lack of support for %l and %Z formats by Cygwin's
1209   strftime implementation.
1210
1211   (Feature) Added medium rare mode.
1212
1213   (Feature) Made raw and medium rare modes accessible from the GUI.
1214
1215   (Feature) Incorporated new globe code, which added coastlines and a new
1216   flat map projection, from Jan C. Depner.
1217
1218   (Feature) Allowed switching between Cylindrical Equidistant and
1219   Orthographic Projections.  Added setting to specify user's preference
1220   (flatearth).
1221
1222   (Feature) Globe now rotates on two axes, and both globe and map include
1223   latitude and longitude readouts.
1224
1225   (Feature/Portability) Incorporated patch from John Holden to improve
1226   xttpd user interface for requesting tide calendars and to work around
1227   an Alpha-specific bug in timestamp rendering.
1228
1229   (Code rot) Updated :America/Iqaluit, :America/Mexico_City, and
1230   :Mexico/General in time zone compatibility table.
1231
1232   (Bug) "Mean Sea Level" verbiage corrected to say "Mean Tide Level."
1233   Identifiers containing msl were not renamed.
1234
1235   (Nit) Updated disclaimer text.
1236
1237   (Nit) Cleaned up xxTimestamp.  N.B., newer versions of Athena Widgets
1238   now show two columns of choices where pull-down buttons used to run off
1239   the screen, so the "tiny font" previously used for some of the choices
1240   is no longer used here.  It is still used in the clock icon.
1241
1242   (Nit) Added a line to the 'install' target of Makefile.in to create the
1243   target directories if they do not exist.
1244
1245  XTide 2.4 (2001-05-09)
1246
1247   (Bug) Fixed an OLD memory management bug in Dstr.cc.  Thanks to Phil
1248   Thornton.
1249
1250  XTide 2.4 BETA 2 (2001-04-15)
1251
1252   (Bug) xttpd did not supply a robots.txt page.  Added robots.txt patch
1253   from John Stanley.
1254
1255  XTide 2.4 BETA 1 (2001-03-25)
1256
1257   (Feature) Enhanced HFILE_PATH to enable searching of directories.
1258
1259   (Bug) Removed, or at least improved, a kludge in Timestamp that was
1260   preventing 24-hour time users from getting leading zeros on hours.  A
1261   compensatory change to the default time and hour formats was also made.
1262
1263   (Nit) Updated example in NO_HFILE_PATH error message again.
1264
1265   (Tuning) Reduced fastload limit to 2.
1266
1267   (Feature) Xttpd now shows the versions of the harmonics files that it's
1268   using on its main page.
1269
1270   (Feature) Added a note attribute to subordinate station XML.
1271
1272   (Optimization) Incorporated patch to squeeze out null constituents.
1273
1274  XTide 2.3 (2000-12-08)
1275
1276   No code changes; just promoted to final release status.
1277
1278  XTide 2.3 BETA 2 (2000-10-01)
1279
1280   (Code rot) Added :America/Belem, :America/Fortaleza, and
1281   :America/Maceio and revised abbreviation for :America/Sao_Paulo in time
1282   zone compatibility table.
1283
1284   (Compliance) Smashed case in all (I hope) HTML markup tags for XHTML
1285   compatibility (sugg. Richard Kennedy).
1286
1287   (Nit) Typographical tweaks in xttpd.
1288
1289  XTide 2.3 BETA 1 (2000-09-03)
1290
1291   (Feature) Replaced calendar mode with a clone of the much more popular
1292   one that Dean Pentcheff has been using on his web site.  The "old"
1293   calendar mode is still available from tide as -m C.
1294
1295   (Feature) Added setting to suppress sunrise, sunset, moon phases.
1296
1297   (Code rot) Added :America/Goose_Bay to timezone compatibility table.
1298
1299   (Nit) Updated example in NO_HFILE_PATH error message.
1300
1301  XTide 2.2.2 (2000-07-30)
1302
1303   (Compliance) To comply with XML 1.0, the offsets.xml file was changed
1304   to have a single "root" document element.  As a result, XTide 2.2.1 and
1305   earlier cannot find the stations in it.  This patch enables XTide to
1306   read either old or new offsets.xml files.  The prolog of .xtide.xml
1307   written by XTide is also made compliant.
1308
1309  XTide 2.2.1 (2000-07-16)
1310
1311   (Code rot) Added :America/Hermosillo and :America/Iqaluit to the
1312   zoneinfo compatibility table.
1313
1314  XTide 2.2 (2000-01-12)
1315
1316   No code changes; just promoted to final release status.
1317
1318  XTide 2.2 BETA 1 (1999-12-12)
1319
1320   (Compliance) Xttpd now backgrounds itself and logs to the syslog
1321   facility.
1322
1323   (Feature) Added /etc/xtide.conf as alternative to setting HFILE_PATH.
1324   The format of this should probably be XML to guard against future
1325   expansion, but for now it is as contributed from Debian (Peter
1326   Galbraith).
1327
1328   (Feature) Ditched Imake for Autoconf, which simplifies installation.
1329
1330   (Feature) Installed a Unicode-esque collating sequence for Latin1.
1331
1332   (Feature) xttpd: applied location lookup patch from John Holden.  This
1333   enables URLs of the form http://whatever/locations/name in addition to
1334   the more reliable http://whatever/locations/nnn.html syntax.  The
1335   name-based URLs are not promulgated by xttpd itself.  The new syntax is
1336   documented in a new hints & tricks page served by xttpd.
1337
1338   (Feature) If you set the environment variable XTIDE_DEFAULT_LOCATION,
1339   it works like the default location feature of XTide 1.
1340
1341   (Robustness) Improved resolution of reference stations for subordinate
1342   stations to eliminate many SUB_SUBORDINATE errors.  Fast loading is
1343   still sensitive to the ordering of HFILE_PATH.
1344
1345   (Code rot) Added an autoconf step to deal with mutually incompatible
1346   requirements of different platforms on the signature of the accept()
1347   function as used in xttpd.cc.
1348
1349   (Code rot) Added Antarctic time zones to the compatibility table in
1350   Timestamp.cc.
1351
1352   (Compliance) Changed packaging from xtide2/* every time to
1353   xtide-X.Y.Z/*.  Changed suggested disposition of xttpd from bin to
1354   sbin.  Changed xttpd man page section from 1 to 8.  Changed suggested
1355   disposition of harmonics files from /etc to /usr/local/share/xtide.
1356
1357   (Compliance) Moved some static functions into externC.cc with
1358   appropriate signature changes to placate the Sun compiler's anachronism
1359   checker.
1360
1361   (Portability) Added workaround for bug in Sun WorkShop Compiler C++
1362   SPARC Version 5.000.  Thanks to Raphael Malyankar.
1363
1364   (Nit) Applied patch from Peter Galbraith to set background color in
1365   xttpd to white.
1366
1367  XTide 2.1.7 (1999-08-14)
1368
1369   (Bug) Fixed drawing of Latin1 characters.  This involved increasing the
1370   font height by one row, which will cause minor but noticeable changes
1371   in the placement of text.
1372
1373   (Portability) Changed backlog parameter for socket in xttpd.cc from 0
1374   to 5.  Digital Unix would accept no connections if backlog was 0.
1375   Thanks to Giuseppe Cabras.
1376
1377  XTide 2.1.6 (1999-08-09)
1378
1379   (Bug) Fixed xttpd assertion failure when subordinate stations don't
1380   supply time zones.
1381
1382   (Bug) Made RGBGraph stop crashing when it's asked to draw characters
1383   that it doesn't know.  To do, teach RGBGraph to draw the entire Latin1
1384   character set.
1385
1386   (Portability) Messed with usage of select() in xttpd.cc to try to make
1387   it more portable.  Giuseppe Cabras reported trouble with it under
1388   Digital Unix.
1389
1390   (Portability) Added Imakefile.hp from Christopher Caldwell.
1391
1392  XTide 2.1.5 (1999-07-22)
1393
1394   (Portability) Cleaned up overloading ambiguities and ANSI compliance
1395   problems encountered with HP aC++ B3910B A.01.18 (HP-UX 10.20).  Thanks
1396   to Christopher Caldwell.
1397
1398  XTide 2.1.4 (1999-05-17)
1399
1400   (Portability) Got rid of some dubious implicit conversions between
1401   PredictionValue::Unit and its encapsulated enum.  Don't know if they
1402   were strictly conforming or not, but they made the latest Sun compiler
1403   use the wrong constructor.  This showed up as UNRECOGNIZED_UNITS errors
1404   when trying to load a tide station.
1405
1406  XTide 2.1.3 (1999-05-16)
1407
1408   (Code rot) Stopped including stream.h in common.hh.  It was always
1409   redundant with iostream.h, but now stream.h has vanished from Sun's
1410   latest compiler.
1411
1412  XTide 2.1.2 (1999-03-15)
1413
1414   Add support for color specifications having the deprecated #RRGGBB
1415   format, which recently resurfaced on Debian.
1416
1417   Patch from Falk Hueffner for Timestamp::tm2utc.  On his Alpha (BSD?),
1418   time_t is 64 bits but gmtime returns NULL if the time_t is out of a
1419   certain range, which was leading to segfaults.
1420
1421   Fixed reporting of MKTIME_FAILED errors caused by bad timestamps on the
1422   -b and -e switches.
1423
1424  XTide 2.1.1 (1999-01-24)
1425
1426   Patch to get rid of all of the references to universe.digex.net that
1427   appeared in the sources and documentation.  No functional changes.
1428
1429  XTide 2.1 (1998-12-20)
1430
1431   Implemented something similar to a patch sent by Thomas Dean to enable
1432   the direction of current that he provided in his XML offsets to be
1433   displayed in the boilerplate of text output.  Making it work for
1434   reference stations is deferred until whenever reference stations are
1435   migrated to XML and the new attributes can conveniently be added.
1436
1437   Removed $(DEPXPMLIB) from xtide dependencies (DEPLIBS1 in manifest) to
1438   get rid of this needless compilation failure:
1439
1440make: *** No rule to make target `/usr/X11R6/lib/libXpm.a', needed by `xtide'.
1441Stop.
1442
1443   The cause of this was that some Linux distributions only provide a
1444   shared libXpm, while the dependencies generated by Imake check for the
1445   existence of the static library.
1446
1447   Made -o switch append instead of overwrite files per request from AED.
1448
1449  XTide 2.0.1 (1998-10-04)
1450
1451   Fixed a bug reported by Alan Davis which caused access violations and
1452   other problems when a default center longitude was set in the control
1453   panel.
1454
1455  XTide 2.0 (1998-07-28)
1456
1457   No code changes; just promoted to final release status.
1458
1459  XTide 2.0 Beta.3 (1998-06-28)
1460
1461   Reversed order of location list latitude sort so that points north
1462   appear at the top (sug. Dave Davey).
1463
1464  XTide 2.0 Beta.2 (1998-06-02)
1465
1466   SGI portability fix from David Warren:  changed declarations of nested
1467   structs in header files to use Classname::structname instead of struct
1468   structname.
1469
1470  XTide 2.0 Beta.1 (1998-06-01)
1471
1472   First versioned release of XTide 2.
1473     __________________________________________________________________
1474
1475   [12]<- Previous [13]-> Next [14]Contents
1476
1477References
1478
1479   1. https://flaterco.com/xtide/quickinst.html
1480   2. https://flaterco.com/xtide/news.html
1481   3. https://flaterco.com/xtide/xtide.html#contents
1482   4. https://flaterco.com/xtide/files.html#FunkyBuilds
1483   5. http://www.freedesktop.org/wiki/Software/systemd/
1484   6. https://flaterco.com/xtide/installation.html#systemd
1485   7. http://sourceforge.net/projects/sf-xpaint/files/libxaw3dxft/
1486   8. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43905
1487   9. https://flaterco.com/xtide/files.html#pubs
1488  10. https://flaterco.com/xtide/mincurrents.html
1489  11. https://flaterco.com/xtide/tcd_notes.html
1490  12. https://flaterco.com/xtide/quickinst.html
1491  13. https://flaterco.com/xtide/news.html
1492  14. https://flaterco.com/xtide/xtide.html#contents
1493