(Code rot) Fixed compatibility with libgps API churn in gpsd 3.18 through 3.24. Bug report credit: Mamoru Tasaka.
(Usability) Softened the dependency on Schumacher fonts. If the font is missing, you get no text in the dynamic tide clock icon. Said icon is inaccessible with new generation window managers that get icons from different places, so the failure is invisible to most users.
(Obsolescence) Changed documentation and configure.ac to say GCC 6.1 or newer since C++11 keywords are now assumed to just work.
(Code rot) Fixed FTB with libXaw 1.0.14 by probing the signature of XawListChange in configure.ac. Bug report credit: Mamoru Tasaka.
(Code rot) Fixed a deprecation warning on Station's copy constructor by adding "= delete" (C++11) to all methods that were declared and not defined.
(Portability) Recoded the Timestamp overflow trap to avoid implementation-defined behavior.
(Robustness) Reduced double-barfing by deactivating prediction window redraw methods after a fatal error.
(Compliance) Harmonized the error box background in errorExclaim.xpm.hh with the standard generic warning sign (U+26A0).
(Compliance) Initialized SubordinateStation::cacheUnits to avoid undefined behavior. (The value does not matter, but some value has to be specified to avoid UB.)
(Nits) Quashed unhelpful GCC warnings:
(Code rot) Upgraded URLs in messages, man pages, and comments to https.
(Portability) Applied patch from Iain Hibbert to replace string comparison == with more portable = in configure.ac.
(Nit) Clarified configure.ac messages about libXaw3dXft.
Moved build scripts for Android, Windows, and DOS to the separate FunkyBuilds package available from https://flaterco.com/xtide/files.html#FunkyBuilds. Dropped scripts/Fedora, which was obsolete and replaced by scripts/systemd.
Corresponding changes and minor fixes to documentation.
(Bug) Escape ampersands and < characters in text strings in SVG images. Bug report credit: Stephen Woodbridge.
(Bug) Added AM_DISTCHECK_CONFIGURE_FLAGS to Makefile.am to enable make distcheck to succeed when out-of-path includes and libs are necessary to build.
(Code rot) Adapted to new toolchain producing xml_y.hh where it used to have xml_y.h.
(Code rot) Updated URLs for generation of text files from HTML.
(Regression) Fixed "bind: Invalid argument" failure of xttpd on FreeBSD and OS X (El Capitan). Linux and Android are not affected. Bug report credit: Manfred Antar.
This release is all about catching up with external changes, with significant additions occurring only to xttpd. Users of the 2.14 versions of xtide, tide, and libxtide won't notice a functional difference, but some build script breakage has been fixed.
Added systemd support to xttpd (with thanks to Mamoru Tasaka):
Other xttpd improvements:
-DXTTPD_NO_DAEMON
option for debugging/testing and as a
kludge for Android.For Xaw3dXft:
Updated Android, VS, and DOS build scripts for Android NDK r10e, Visual Studio Community 2015, and DJGPP 2.05 respectively, and the current versions of everything.
Obscure changes to build scripts for compatibility with new versions of automake/autoconf:
AUTOMAKE_OPTIONS = subdir-objects
to Makefile.am.m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
to configure.ac.Moved all "common" files into a separate library and namespace, libxtide. If libdstr is not provided the Dstr class gets included in libxtide.
Enabled building libxtide, tide, and xttpd for Android:
Other portability and code rot:
New settings:
New, experimental configurable --enable-moon-age
replaces the moon phase column of calendar mode with moon age. This
number wants to be replaced by graphics showing the moon as it would appear
(approximately) on each day of the lunar month as originally suggested by
Kelly Bellis, but it's not easy to implement that consistently across all
formats. FWIW, Unicode 1F311 through 1F318 provide characters for 8
phases of the moon that could be used in UTF-8 text modes.
(Tweak) Centered calendar cell contents in HTML and text formats as they already were in LaTeX format.
(Note) In most modes the approximately zero prediction values associated with slack water events are output, but they are omitted in calendar mode. Noted but not changed.
Thanks to Kelly Bellis for suggestions to improve calendar mode.
(Bug) Fixed that a UTF-8 locale didn't make any difference to text form graph and clock mode output.
(Portability) For DOS:
(Feature) Made the default prediction interval configurable (new setting -pi replaces Global::defaultPredictInterval).
(Code rot) libXaw3dXft 1.6.2b changed the name of the library and include path again.
(Code rot) Disabled the ancient and obsolete zoneinfo compatibility hack for everything except Visual Studio because it masked time zone breakage in an Android port.
(Portability) Removed requirement for the C++ compiler to support C++11 extended initializer lists and got the Visual Studio build working again.
(Removed limitation) Incorporated patch from James Ashton to replace the Skycal etcorr function, which was limiting moonrise/moonset predictions to years 1900 through 2099.
Nit fixes:
(Misfeature) Mostly eliminated the need to set the resource
XTide*beNiceToColormap: False
to avoid ugly borders with Xaw3d
and Xaw3dXft. Added documented bug for the remaining case, which
afflicts xxHorizDialog via libXaw3d's asciiTextWidgetClass and seems
unfixable.
(Nit) Deleted a superfluous configuration change for libXaw3dXft.
(Nit) Fixed new (GCC 4.7.0) warnings in Date.cc, xxRoot.cc, and xxX.cc.
(Code rot) libXaw3dXft took a hard left turn and jumped versions from 1.3.3 to 1.6.2. RC3 will correctly detect and use libXaw3dXft 1.6.2, but is no longer compatible with 1.3.3. A tweak that fixes the problem with long menus in the Set Time dialog is enabled.
Caution: If using Xaw3d or Xaw3dXft, borders will be ugly unless
you set the resource XTide*beNiceToColormap: False
.
(Compatibility) Added a workaround so that GCC 4.4 can build the complicated extended initializer list in Global.cc.
(Tweak) If building with GCC 4.6 or above, use #pragma GCC
diagnostic ...
to quash nuisance warnings.
(Nit) Configure: Add CPPFLAGS for FreeType only when actually needed.
(Cleanup) Removed unused field from ClientSide::Glyph.
(Optimization) When creating ClientSide::Font, null out and skip characters 0–31 and 128–159.
This release candidate of XTide requires compiler support for C++11 extended initializer lists. GCC has supported them since version 4.4. Visual C++ 2010 Express Edition doesn't have them, so the Visual C++ build is on ice until something changes.
(Feature) For Athena Widgets, configure will now look for Xaw3dXft (≥ 1.3.3), Xaw3d, or Xaw, in that order. Plain Xaw can be forced using --disable-3d. Thanks to Jean-Pierre Demailly for patches to make XTide work with Xaw3dXft (and vice-versa).
(Feature) GUI improvements:
* Important usage note: If XTide is built with Xaw3dXft, font names given to XTide must be in fontconfig format (e.g., "Helvetica-10"), rather than the traditional XLFD (e.g., "-*-helvetica-*-r-*-*-10-*-*-*-*-*-*-*"). Also, Xaw3dXft does not return errors if there are problems with a font name; it just loads a default font instead.
(Code rot) Added thousands of unholy casts to make the "warning: deprecated conversion from string constant to 'char*'" nagging go away for all the places where I have to call library functions that don't use const. Between that nagging and the new nagging about auto_ptr, the deprecation was getting thick in here.
(Compatibility) Fixed problem with graph mode no longer working right on a VT100. If TERM is set to vt100 or vt102 and text form is requested, the Special Graphics set will be used to get the middle dot and degree sign characters. However, non-ASCII characters in location names and other data received from the TCD file will still do something weird. Bug report credit: John Andrews.
(Feature) If TERM is set to vt100 or vt102 and text form is requested, depth lines in graphs will be aligned better using characters from the Special Graphics set. (I don't have a VT100, but it looks right in xterm's emulation.)
(Misfeature) Made HTML form of about mode less ugly.
(Bug) Corrected inconsistent quantization of coordinates (inconsistent rounding of half-pixels) in the Graph hierarchy.
(Compatibility) Added a cast to work around an ambiguous overload of waitpid (used in xttpd.cc) that appeared with GCC 4.5.3 and Cygwin. (Did not occur with GCC 4.6.2 under Linux.)
(Code rot) Updated backward-compatible time zone mapping for Samoa. The entire hopeless workaround for obsolete zoneinfo should be killed with fire, but it is still invoked when tide is built with Visual C++.
(Bug) Fixed missing encoding (character set) specification in SVG, which caused browser SVG rendering to fail when the station name contained interesting characters. Bug report credit: Keith N. Smith.
(Portability) Updates to support building tide.exe using Visual C++ 2010 Express Edition:
(Nit) Updated CONFIGURE-HELP from autoconf's INSTALL.
(Bug) Removed incorrect SVGGraph.cc dependency on X11 (thanks Jeff Dairiki).
(Feature) Added support for the SVG format. Thanks to Jack Greenbaum.
embed
tag or PNG via the img
tag.(Code rot) The nofill (-nf) setting was deprecated in favor of graphstyle (-gs), and the anti-alias (-aa) setting went away.
(Feature) Added a fancier style of graph (generalized from Jack Greenbaum's SVG code, example possibly embedded below) as graphstyle s (semitransparent). Set opacity with -to; set line width with -lw. Note that semitransparent style makes no sense in formats that don't support opacity (text and PseudoColor X-windows).
(Speedup) On TrueColor displays, graphs and clocks are now drawn by constructing an RGBGraph and converting it to a Pixmap. xxPixmapGraph (the Graph implementation that uses X11's drawing functions) is now used only on ye olde PseudoColor displays. The excruciatingly bad and slow implementation of opacities in xxPixmapGraph has been deleted along with the crufty caching code that failed to speed it up.
(Cleanup) Parameters in Graph and subclasses that were misleadingly named "saturation" changed to "opacity."
(Tweak) Turned off interlacing for PNGs, since it always seemed to do more harm than good.
(Code rot) Made XTide work with gpsd 3.x. This is an incompatible change; gpsd 2.9x no longer works.
(Notes) Browser support for SVG is still tricky.
img
, Firefox 5 uses jaggy scaling at some zoom levels.<!DOCTYPE html>
is not present at the start of a web
page, Internet Explorer 9 pretends not to know what SVG is.object
is unreliable. It worked
in simple tests but failed when used by xttpd.Comment changes only. The integration with gpsd 2.95 is still dubious after very limited testing, so it's just as well that XTide won't automatically link with gpsd 3.0 when that comes out.
Patches from Trent Piepho:
Code changes inspired by patches from Trent Piepho, but more or less different than what was suggested:
(Feature) Added -ch setting to specify clock height independently from graph height.
(Feature) If gpsd 2.92 or a compatible 2.9x version is present and working, start the location chooser zoomed in on the current GPS fix.
(Usability) Versions of GCC older than 3.4 are now unconditionally rejected by configure.
(Usability) Reject attempts to regenerate the configure script using autoconf 2.65, which has a regression that causes the INT*_T tests to fail improperly.
(Code rot) Fixed resize lag in the newer generation of window managers (including Metacity, Compiz, KWin, Xfwm, and Openbox) that deliver a firehose stream of resize events. (The Xlib Programming Manual says the ConfigureNotify event is to be generated when the resize request "actually completes.")
(Bug) In About mode, X-windows form, implemented line wrapping so that long descriptive text that is not formatted with linebreaks does not result in a ludicrously wide window.
(Code rot) Compatibility with libpng 1.4:
(Portability) Added workaround for GCC Bug #43905 so that XTide can be compiled with GCC 4.5.0.
(Cleanup) Purged leftover xOrigin/yOrigin complexity from xxGlobe.cc.
(Code rot) Updated bundled Dstr to version 20080124.
(Documentation) Fixed man page nits and related nits in documentation of command-line switches.
(Feature) Enabled clock mode output (mode k) in PNG and text forms from the command-line client. This feature was requested to enable the construction of embedded clock widgets. (Suggested by Mark Crossley)
(Portability) Fixed incorrect resolution of utsname
on
Suns. Bug report credit: C. Jeffery Small.
(Code rot) Set the magic environment variable to opt out of the backward-incompatible changes made by the Composite extension to X11. Said changes were causing XTide windows to appear transparent in foo-foo windowing environments. Bug report credit: Alan E. Davis.
(Documentation) Beefed up the man pages and made minor clarifications to the descriptions of some settings.
(Portability) Renamed CONFIGURE to CONFIGURE-HELP to eliminate conflict on case-insensitive file systems. Bug report credit: Anton Pitts (Mac), Leonid Tochinski (Windows).
(Portability) With help from Leonid Tochinski, made command-line client portable to Visual C++ Express Edition.
(Bug) Fixed incorrect encoding of characters in "About This Station" window when ambient locale is UTF-8.
(Legal) Relicensed under GPLv3.
(Code rot) configure.ac: Removed -DYY_NO_UNPUT, which flex no longer respects as of version 2.5.33.
(Cleanup) Build scripts: Removed AM_MAINTAINER_MODE and made 'make dist-bzip2' do the right thing.
(Bug) Fixed dropped lines in flat map drawing (improved version of recent fix to tideEditor).
(Portability) Moved #define __STDC_FORMAT_MACROS to the top of common.hh to avoid a surprise that occurs when inttypes.h gets included by a previous include file.
(Cleanup) Removed an unused #define from common.hh.
(Bug) In MLLW estimation, possibly include final LLW value depending on endTime.
(Usability) Set year limits for time control dialogs based on the actual type of time_t rather than the conservative interval common to all platforms.
(Usability) Made xttpd report version of XTide; removed obsolete discussion of PNG image format.
(Usability) Catch missing STL at configure time (reportedly not found without CPPFLAGS under Mac OS X 10.4.9).
(Portability) Fixed several nonportable casts in xxGlobe.cc (32-bit int assumption); replaced constant 8 with CHAR_BIT in two places.
(Cleanup) A few more cleanups.
(Bug) Changed estimation of MLLW in stats mode to use tidal day as specified by Special Publication NOS CO-OPS 1 and 2 instead of solar day as was done in XTide 2.9. It makes about 1 inch of difference.
(Compliance) GNU attributes are now enabled only if one configures with --enable-gnu-attributes. They are only useful if compiling with extra warnings anyway.
(Usability) Compilers that cannot build a particular test case correctly (notably GCC 3.3.x) are now rejected by configure with an explanation that it is time to upgrade.
(Portability) Cygwin doesn't have llround yet. Made do without it.
(Compliance) Rearranged some callbacks to avoid the need for objects in the X11 interface to delete themselves (considered harmful) or their containers (presumably worse).
(Cleanup) A few more cleanups.
(Bug) Stopped time warps on subordinate stations from crashing calendars, AGAIN. The parent class of the class that was junked and rewritten the last time around has been junked and rewritten. Calendar mode has been reimplemented in an entirely different style at great expense and at the last minute.
(Code rot) Fixed configure to detect and use libdstr if it is present.
(Optimization) Inlined some functions and methods to make the highfalutin' C++ code in XTide 2.9 run as fast as the crufty C code in XTide 2.8.3. See commentary in ConstituentSet::tideDerivative for details.
(Usability) Decreased scrolling fraction for flat map from 95% to 25% (consistent with globe). Made station dots bigger in globe (more like map). Made tide graphs scroll by half the width of the graph instead of by 1 day.
(Docs) Added makefile rule to generate README, ChangeLog, NEWS, AUTHORS, and README-QUICK from the web site.
(Feature/Cleanup) Added estimation of MLLW to stats mode; made stats mode text from RC1 more consistent.
(Usability) Improved error reporting to distinguish absence of an HFILE_PATH from absence of harmonics files.
(Cleanup) The C++ standard does in fact promise that the elements of a std::vector are stored contiguously—purged MemoryChunk and replaced its uses with vectors.
(Nits) Fixed a violation of coding conventions; improved commentary in several places.
(Cleanup) 100% code review and major cleanup.
(Code rot) Installed canonical Dstr. Only visible impact should be different sorting of location names containing ę, š, ų, ß, or fractions.
(Code rot) Caused xttpd to serve /favicon.ico as expected by most browsers nowadays.
(Code rot) Added support for the newfangled NET_WM protocol to set window titles. This resolves an issue with window titles getting mangled when the ambient locale is UTF-8. Bug report credit: Lutz Mändle.
(Code rot) Converted to automake; updated configure.ac per autoconf 2.60.
(Code rot) Removed Cygwin and Irix workarounds for incomplete strftime implementations. Cygwin's was fixed.
(Optimization) Added a pixel cache to mitigate a performance bottleneck that occurs while anti-aliasing X graphs in xxPixmapGraph.
(Feature) Added LaTeX format for calendar mode and associated settings pagewidth, pageheight, and pagemargin.
(Feature) Added eventmask setting, deprecated nosunmoon setting. Eventmask allows moon phase, sunrise, sunset, moonrise, and moonset to be enabled or disabled individually, whereas nosunmoon only allowed them to be enabled or disabled as a group.
(Feature) Text and HTML form output are now generated in UTF-8 if that is the ambient codeset. Names specified in UTF-8 on the command line are now understood.
(Feature) Text mode graphs and banners now show darkness (night time) in a manner analogous to PNG or X graphs.
(Feature) Mouse wheel (mapped as Button4 and Button5) now works to scroll text prediction windows, location lists, the control panel, and the disclaimer.
(Feature) Added mean of maxima and minima and CPU time to stats mode.
(Feature) Made raw and medium rare modes accessible from xtide command line.
(Feature) Added setting to control whether tide graphs are anti-aliased on true color displays.
(Feature) Added setting to label tenths of units in graphs.
(Feature) Resolved timestamp collision problem in graphs. (1) Shift location of timestamps to avoid collisions when feasible. (2) Improved logic for deciding when to use short descriptions.
(Usability) When failing to load a font, report the name of the font that failed to load. When swapping the begin and end times, inform the user.
(Portability) Used new autoconf feature to obtain integer types with known sizes. Used these types for TIME_WORKAROUND and Interval.
(Compliance) Spun off libtcd into a separate tarball.
(Security) Allow configuring user and group for xttpd and make xttpd exit if the uid/gid can't be set thusly.
(Robustness) Trap and report overflow when adding an Interval to a Timestamp.
(Robustness) Generalized Timestamp::tm2utc and eliminated the last use of libc's mktime. Bad or out-of-range timestamps provided by the user should now reliably yield a relevant error message.
(Robustness) Fixed bug in handling (ignoring) of ill-formed x-fields in TCD.
(Robustness) Modified Graph to be more compatible with variable-width fonts, similar to patch contributed by Lee Ann Rucker.
(Bug) Fixed assertion failure on changing preferred units of length in control panel while a current station is displayed.
(Bug) Fixed xttpd neglecting to demangle %XX syntax in exact query URLs. Bug report credit: James K. Lowden.
(Bug) Fixed window manager closing prediction windows while subordinate dialogs were open, which caused XTide to fail to terminate when the last window was closed.
(Bug) Fixed failure to apply color settings to control panel scrollbar.
(Bugs) Fixed identification of day transitions in rare and pathological cases. Prior to the fix, it was possible for calendar to put events in the wrong day around the time of daylight savings time changes in exotic locales having interesting DST rules.
(Bug) Fixed invalid simplification of current sub stations having slack offsets and level adds that resulted in the slack offsets being ignored for affected stations.
(Bug) Stopped time warps on subordinate current stations from crashing calendars, again. The offending logic is that responsible for figuring how many columns are needed. Said logic has broken repeatedly. This time I basically gave up on the whole approach and dumbed it down to something that hopefully won't break.
(Bug) Fixed incorrect rounding of negative coordinates in graphs. You could notice this in text graphs or banners where column zero sometimes collected an hour tick that should already have scrolled off into negativeland.
(Nit) Remove assertion failure if knots^2 are specified as the units in a sub station record (levelAdd units are always knots anyway).
(Nits) Minor changes in calendar mode text.
(Nit) Fixed off-by-one-second bug in end boundary setting for xttpd calendars.
(Nit) Handle whitespace in HFILE_PATH correctly.
(Nit) In disclaimer, replaced facetious reference to continental drift with serious references to subsidence and uplift.
(Nit) Fixed shifting horizontal alignment of text in X11 text modes.
(Nit) When applying settings in the control panel, preserve marklevels and steps but reset aspect and units to defaults or whatever the new settings specify.
(Nit) Instead of always barfing when HOME is unset, barf only when the need arises to write something to the home directory, and do without any config files that would normally be there.
(Nit) Once again changed descriptive text related to the middle-level line to avoid confusion.
(Nit) Fixed unintended scrolling of X11 text modes triggered in rare circumstances.
(Nit) Fixed X11 graphs and clocks momentarily flashing to background color when updating.
(Nit) Minor changes to short descriptions for tide events.
(Bug) Added documented bug for xttpd logging timezone shift.
(Bug) Added documented bug for control panel vanishing buttons problem.
(Cosmetic) Installed new default icon.
(Code rot) Made to compile under gcc 4.1.0.
(Bug) Fixed "oops" in xxMap.cc that caused station dots to be suppressed on part of the flat map. Bug report credit: Jan Depner.
(Portability) Updated configure to look in lib64 for X libs, for compatibility with x86_64. Bug report credit: Fedora / David Kaplan.
(Nit) More intelligent selection of WVS resolutions in globe. The wvs3.dat file now gets use.
(Nit) Don't suppress single-point islands on globe.
(Bug) Tried to fix crash on startup on multi-head displays (no feedback on whether it worked).
(Oversight) Omitted slack offsets are now handled by interpolating from known tide events rather than defaulting to reasonable values. This should have been done as part of the changes in Beta 1.
(Bug) The subordinate station interpolation algorithm derived from work by Jean-Pierre LaPointe started misbehaving when it met the new NOS data imported 2004-09. See Exhibit A.
That algorithm was designed around architectural problems that were eliminated in the refactorings of XTide 2.7. Replaced it with a simpler and better algorithm that solves the above problem and three others (appearing below).
The old algorithm had the interesting property that, as a side effect of fudging around pathological cases that broke the algorithm, the graph would often be a more likely model of reality than unquestioning loyalty to the corrections would give. No such luck with the new algorithm, unless I deliberately break it in the same way. See Exhibit B, where an application of offsets to the insignificant higher low and lower high tides at Kahului has produced a significant (and probably mythical) tide cycle at Hana on the evening of 2004-09-08.
(Bug) Fixed this longstanding documented bug:
Tide graphs and raw output for subordinate current stations won't mesh with the predicted times of slack water, Min Flood or Min Ebb. Cause of bug: The interpolation algorithm used to produce tide graphs for subordinate stations doesn't do slack water. Workaround: none.
(Bug) Removed this longstanding documented limitation:
The raw tide levels for subordinate current locations whose reference stations are hydraulic will do bogus things for a few minutes around the time of slack water. Hydraulic currents exacerbate a minor inaccuracy that exists for all subordinate stations, producing a major inaccuracy.
(Feature) Removed this longstanding documented limitation:
For most subordinate stations, you can't set a mark level.
(Bug?) Changed application of offsets for Min Flood and Min Ebb on subordinate current stations to match what I think is NOS' intent. For details, see https://flaterco.com/xtide/mincurrents.html.
(Bug) Fixed an IMPOSSIBLE_CONVERSION failure (oddly enough, from some units to the same units) triggered by opening a station, converting units, setting a mark level, and then opening a new window from the Options menu. Kudos to August Hahn for discovering the steps to reproduce this "interesting" bug. Added a new warning, NO_CONVERSION, to flag any other occurrences of the same thing.
(Code rot) Added :America/Juneau, :America/Nome, :America/Yakutat and :Pacific/Johnston to the compatibility table for platforms with obsolete zoneinfo. (Deliver me from Solaris 8!)
(Bugs & Features) Upgraded to libtcd 2.0.
(Feature) Added about mode. (As in "About this station")
(Cleanup) Cleaned up strange coding in StationRef, HarmonicsFile, and Offsets left over from the days of XML sub stations.
(Cleanup) Deleted some dead pretty-printing code in Speed, Constituent, etc.; got rid of static buffers in some other pretty-printing code; got rid of the Constituent class (merged into TabulatedConstituent); synced Angle::normalize with fp roundoff fix and assertion from Congen; added an assertion that node factors should be greater than 0 (this will detect TCD files with overflow problems).
(Cleanup) Removed CFLAGS from the build process; just use CXXFLAGS. Removed -DNVSUNOS from configure.in since it has no effect on libtcd.
(Cleanup) Moved libtcd accesses out of TabulatedConstituent. Moved libtcd dependencies out of HarmonicsFile.hh and changed build dependencies so that only HarmonicsFile gets rebuilt when libtcd is changed.
(Bug) Changed "Mean Tide Level" verbiage (formerly "Mean Sea Level") to say "Mean Astronomical Tide." The National Ocean Service (NOS) defines both Mean Sea Level (MSL) and Mean Tide Level (MTL) in terms of averages taken over observations. The line drawn by XTide corresponds to the mathematical mean level of the predictions, which approximates both MSL and MTL, but, strictly speaking, is equivalent to neither.
(Nits) Fixed nits revealed by g++ -Wall -Wextra -pedantic.
(Bug) Fixed a logic error that could cause XTide to lock up if you looked at a period of more than 24 hours with no tide events in just a certain way.
(Feature) Made the globe location chooser able to zoom in closer.
(Nit) In both location choosers, quit chopping lines that are only partly outside the window.
(Bugs) Incorporated libtcd patch:
Version 1.13
David Flater
2004-08-15(create_tide_db) Write a valid end_of_file record even if someone creates a database with no tide records.
(tide_db_default) Removed a superfluous space character in table of default datum types (after Lowest Astronomical Tide).
(Evil) Disabled the translation of the TCD comments field into a notes field for sub stations. It was a historical oddity that sub stations had notes but not comments and reference stations had comments but not notes, and this was no excuse for overloading the comments field. Harmbase2 now wants to put stuff in the comments field for sub stations, with the result that XTide 2.7 blabbers the comments to every user as a cryptic and strangely verbose note. Notes will come back if and when the TCD format is extended to include a separate notes field.
(Nit) Fixed xttpd to include the file name as well as the revision date when citing what version of which harmonics file it's using.
(Portability) Ignore all hidden files (dot files) in a directory indicated by HFILE_PATH, not just "." and "..". (OS X creates hidden files everywhere.)
(Portability) Run ranlib on libtcd.a; ignore error if ranlib isn't there. (OS X needs ranlib.)
(Portability) Changed normalcflags and normalcxxflags in configure.in to say -O instead of -O2. (Forte doesn't grok -O2.)
(Portability) When looking for X11 in configure, recognize libXaw.dll.a (per latest Cygwin) as well as libXaw.so and libXaw.a.
(Nit) Removed unnecessary escaping and quoting in a warning message in configure.in.
(Code rot) libtcd 1.12: Deleted #include <malloc.h> from tcd.h.
(Nit) Replaced inappropriate radiation symbols in error windows with standard international symbols for general panic and impending doom.
(Feature) Added iCalendar format and option to get iCalendar output from xttpd.
(Feature) Added cbuttons setting to control whether clock windows appear with buttons by default.
(Feature) Allowed setting location of lone window with -geometry.
(Feature) Allowed specifying an IP address for xttpd.
(Feature) Added CSV format to various modes.
(Portability) Added test for Fedora RPM build environment in configure. If found, usual and customary compiler and linker switches are suppressed and RPM_OPT_FLAGS are added.
(Bug) Fixed small memory leak in SubordinateStation.cc.
(Cleanup) Major refactoring of tide events handling code.
(Bug) Fixed this longstanding documented bug:
There are edge effects at the start and end of an interval chosen for subordinate station predictions. Some events that are inside of the interval may be excluded, and vice-versa. Cause of bug: While the interval is faithfully scanned for the reference station, tide events can jump in or out of the chosen interval after the offsets are applied. Workaround: Leave a margin around the interval of interest that is larger than the offsets of the subordinate station (a few hours should suffice).
(Bug) Fixed this longstanding documented bug:
If two events (e.g., high tide and full moon) happen to coincide very closely, within 1 minute of each other, and you reverse the direction of the scrolling in the interactive plain mode window at a point where only one of the events is visible, you might be able to make the other one disappear. Cause of bug: accuracy of predictions, precision of timestamps. Workaround: don't do that.
(Bug) Fixed this longstanding documented bug:
In the interactive plain mode window only, tide events can be listed out of order for subordinate stations. Cause of bug: design conflict. Efficient scrolling is incompatible with keeping the list sorted. Workaround: save the predictions to a file and they will be sorted.
(Nit) -b and -e ranges now mean specifically "all t such that b <= t < e."
(Nit) Expunged anachronistic references to "text mode" (it's plain mode).
(Bug) Fixed an assertion failure "tidecol < numcol" that could occur generating calendars for pathological subordinate current stations where applying the offsets causes slack-before-flood to happen after max flood or analogous for ebb.
(Nits) Added casts and changed data types to get rid of unsigned-to-signed comparison warnings.
(Cleanup) Major refactoring of settings management code to fix this longstanding "known design problem:"
Nine source files must be changed to add one new setting (Settings.hh, Settings.cc in 3 places, config.hh, UserDefaults.cc, xxApplicationDefaults.cc, ConfigDefaults.cc, CommandLineSettings.cc in 2 places, xxXTideRoot.cc in 4 places, and xxXTideRoot.hh).
(Bugs) Incorporated libtcd patch:
Version 1.11
David Flater
2003-11-16(create_tide_db) Fixed horrible bug: offsets for speeds, equilibrium args, and node factors were sign-reversed with respect to their usage in read_tide_db_header and write_tide_db_header, resulting in possible overflows.
(read_tide_db_header) Added handling for zero tide records, which happens on new database create.
(open_tide_db) Added check of modified flag to 2003-10-14 code.
(close_tide_db) Deleted repeat free of tindex introduced 2003-10-14. Cleared modified flag on close.
(Bug) Incorporated libtcd patch:
Version 1.10
David Flater
2003-10-14Incorporated patch from Phil Thornton that closes a memory leak and improves performance on repeat calls to open_tide_db. See https://flaterco.com/xtide/tcd_notes.html
(Nit) Added a precompiler directive to prevent code inside of assert statements from being disabled by over-ambitious optimization.
(Bug) Incorporated libtcd patch:
Version 1.09 Jan C. Depner 2003-09-04 Bug fix - modifying last record in file and changing size of record caused a big problem.
(Bug) Incorporated libtcd patch:
Version 1.08 Jan C. Depner 2003-07-23 Bug fix - deleting last record in file caused a big problem.
No code changes; just promoted to final release status.
(Nit) Updated version string in libtcd.
(Bug) There was another problem with the encoding of subordinate stations in TCD files. The only stations materially affected this time were Gnat Cove, Carroll Inlet, Alaska, and Olga Point, Olga Strait, Sitka Sound, Alaska. However, the fix required another incompatible change to the encoding of subordinate stations and updates to affected code in libtcd and XTide. TCD files produced with tcd-utils dated earlier than 2003-03-27 and previous development or beta versions of XTide 2.6 should be replaced to avoid getting incorrect results.
(Bugs!) tcd-utils was building some subordinate current stations incorrectly. The fix required an incompatible change to the encoding of slack offsets and updates to affected code in libtcd and XTide. TCD files produced with tcd-utils dated earlier than 2003-03-18 and previous development or beta versions of XTide 2.6 should be replaced to avoid getting incorrect results on subordinate current stations. Except... ironically, it appears that some of the subordinate current stations presently in the database are broken in precisely the same way as one of the TCD bugs, with the result that in those cases, you get the right answer only with the broken code. The issue with those is the bogus assumption that the right thing to do if you don't get slack offsets is set them to zero. If you don't get slack offsets (floodbegins, ebbbegins), OMIT those fields! When slack offsets are omitted, XTide will interpolate a reasonable value. But if you specify zero, you get zero -- even if that's unreasonable given the skew of max and min. (This note has been added to the relevant portion of the documentation.)
(Optimization) Changed from ASCII format harmonics files (harmonics.txt and offsets.xml) to binary TCD format (harmonics.tcd); retired the problematic fast loader since all loading now occurs at ludicrous speed. Thanks again to Jan Depner.
(Feature) Added setting to enable inferred constituents (Jan Depner).
(Code rot) Expunged all uses of deprecated C++ streams from the code except for the verbose debugging code that hasn't been used in ages.
(Feature) Added support for the following command line syntactic shortcuts:
(Feature) Overhauled usage of time_t to allow timestamps to range before 1970 and after 2037. Added TIME_WORKAROUND to enable access to the past and future years on platforms where time_t is 32 bits.
(Portability) Changed default time formats when compiling under Irix to work around lack of support for %l in SGI's strftime implementation. C.f., similar Cygwin bug fixed in XTide 2.5 BETA 1 (2002-05-21) and the "fix" that started it all in XTide 2.4 BETA 1 (2001-03-25). What a pain.
(Nits) Gave the control panel a scrollbar. Stabilized the layouts of the control panel, text, raw, and medium rare modes. Merged xxRareModes into xxTextMode.
(Feature) Replaced the now mostly useless filename field in location lists with a type field (reference or subordinate).
(Feature) The zone at the bottom of tide graphs previously used to note slack and mark crossing events is now shared by moon events. The date was replaced with a description that is abbreviated when things get crowded.
(Feature) Added moonrise, moonset.
(Nit) Tweaked some verbiage in the control panel.
(Portability) Tweaked autoconfig files to allow clean compilation under OS X. Thanks to Martin Hofmann.
(Portability) Changed default time formats when compiling under Cygwin to work around lack of support for %l and %Z formats by Cygwin's strftime implementation.
(Feature) Added medium rare mode.
(Feature) Made raw and medium rare modes accessible from the GUI.
(Feature) Incorporated new globe code, which added coastlines and a new flat map projection, from Jan C. Depner.
(Feature) Allowed switching between Cylindrical Equidistant and Orthographic Projections. Added setting to specify user's preference (flatearth).
(Feature) Globe now rotates on two axes, and both globe and map include latitude and longitude readouts.
(Feature/Portability) Incorporated patch from John Holden to improve xttpd user interface for requesting tide calendars and to work around an Alpha-specific bug in timestamp rendering.
(Code rot) Updated :America/Iqaluit, :America/Mexico_City, and :Mexico/General in time zone compatibility table.
(Bug) "Mean Sea Level" verbiage corrected to say "Mean Tide Level." Identifiers containing msl were not renamed.
(Nit) Updated disclaimer text.
(Nit) Cleaned up xxTimestamp. N.B., newer versions of Athena Widgets now show two columns of choices where pull-down buttons used to run off the screen, so the "tiny font" previously used for some of the choices is no longer used here. It is still used in the clock icon.
(Nit) Added a line to the 'install' target of Makefile.in to create the target directories if they do not exist.
(Bug) Fixed an OLD memory management bug in Dstr.cc. Thanks to Phil Thornton.
(Bug) xttpd did not supply a robots.txt page. Added robots.txt patch from John Stanley.
(Feature) Enhanced HFILE_PATH to enable searching of directories.
(Bug) Removed, or at least improved, a kludge in Timestamp that was preventing 24-hour time users from getting leading zeros on hours. A compensatory change to the default time and hour formats was also made.
(Nit) Updated example in NO_HFILE_PATH error message again.
(Tuning) Reduced fastload limit to 2.
(Feature) Xttpd now shows the versions of the harmonics files that it's using on its main page.
(Feature) Added a note attribute to subordinate station XML.
(Optimization) Incorporated patch to squeeze out null constituents.
No code changes; just promoted to final release status.
(Code rot) Added :America/Belem, :America/Fortaleza, and :America/Maceio and revised abbreviation for :America/Sao_Paulo in time zone compatibility table.
(Compliance) Smashed case in all (I hope) HTML markup tags for XHTML compatibility (sugg. Richard Kennedy).
(Nit) Typographical tweaks in xttpd.
(Feature) Replaced calendar mode with a clone of the much more popular one that Dean Pentcheff has been using on his web site. The "old" calendar mode is still available from tide as -m C.
(Feature) Added setting to suppress sunrise, sunset, moon phases.
(Code rot) Added :America/Goose_Bay to timezone compatibility table.
(Nit) Updated example in NO_HFILE_PATH error message.
(Compliance) To comply with XML 1.0, the offsets.xml file was changed to have a single "root" document element. As a result, XTide 2.2.1 and earlier cannot find the stations in it. This patch enables XTide to read either old or new offsets.xml files. The prolog of .xtide.xml written by XTide is also made compliant.
(Code rot) Added :America/Hermosillo and :America/Iqaluit to the zoneinfo compatibility table.
No code changes; just promoted to final release status.
(Compliance) Xttpd now backgrounds itself and logs to the syslog facility.
(Feature) Added /etc/xtide.conf as alternative to setting HFILE_PATH. The format of this should probably be XML to guard against future expansion, but for now it is as contributed from Debian (Peter Galbraith).
(Feature) Ditched Imake for Autoconf, which simplifies installation.
(Feature) Installed a Unicode-esque collating sequence for Latin1.
(Feature) xttpd: applied location lookup patch from John Holden. This enables URLs of the form http://whatever/locations/name in addition to the more reliable http://whatever/locations/nnn.html syntax. The name-based URLs are not promulgated by xttpd itself. The new syntax is documented in a new hints & tricks page served by xttpd.
(Feature) If you set the environment variable XTIDE_DEFAULT_LOCATION, it works like the default location feature of XTide 1.
(Robustness) Improved resolution of reference stations for subordinate stations to eliminate many SUB_SUBORDINATE errors. Fast loading is still sensitive to the ordering of HFILE_PATH.
(Code rot) Added an autoconf step to deal with mutually incompatible requirements of different platforms on the signature of the accept() function as used in xttpd.cc.
(Code rot) Added Antarctic time zones to the compatibility table in Timestamp.cc.
(Compliance) Changed packaging from xtide2/* every time to xtide-X.Y.Z/*. Changed suggested disposition of xttpd from bin to sbin. Changed xttpd man page section from 1 to 8. Changed suggested disposition of harmonics files from /etc to /usr/local/share/xtide.
(Compliance) Moved some static functions into externC.cc with appropriate signature changes to placate the Sun compiler's anachronism checker.
(Portability) Added workaround for bug in Sun WorkShop Compiler C++ SPARC Version 5.000. Thanks to Raphael Malyankar.
(Nit) Applied patch from Peter Galbraith to set background color in xttpd to white.
(Bug) Fixed drawing of Latin1 characters. This involved increasing the font height by one row, which will cause minor but noticeable changes in the placement of text.
(Portability) Changed backlog parameter for socket in xttpd.cc from 0 to 5. Digital Unix would accept no connections if backlog was 0. Thanks to Giuseppe Cabras.
(Bug) Fixed xttpd assertion failure when subordinate stations don't supply time zones.
(Bug) Made RGBGraph stop crashing when it's asked to draw characters that it doesn't know. To do, teach RGBGraph to draw the entire Latin1 character set.
(Portability) Messed with usage of select() in xttpd.cc to try to make it more portable. Giuseppe Cabras reported trouble with it under Digital Unix.
(Portability) Added Imakefile.hp from Christopher Caldwell.
(Portability) Cleaned up overloading ambiguities and ANSI compliance problems encountered with HP aC++ B3910B A.01.18 (HP-UX 10.20). Thanks to Christopher Caldwell.
(Portability) Got rid of some dubious implicit conversions between PredictionValue::Unit and its encapsulated enum. Don't know if they were strictly conforming or not, but they made the latest Sun compiler use the wrong constructor. This showed up as UNRECOGNIZED_UNITS errors when trying to load a tide station.
(Code rot) Stopped including stream.h in common.hh. It was always redundant with iostream.h, but now stream.h has vanished from Sun's latest compiler.
Add support for color specifications having the deprecated #RRGGBB format, which recently resurfaced on Debian.
Patch from Falk Hueffner for Timestamp::tm2utc. On his Alpha (BSD?), time_t is 64 bits but gmtime returns NULL if the time_t is out of a certain range, which was leading to segfaults.
Fixed reporting of MKTIME_FAILED errors caused by bad timestamps on the -b and -e switches.
Patch to get rid of all of the references to universe.digex.net that appeared in the sources and documentation. No functional changes.
Implemented something similar to a patch sent by Thomas Dean to enable the direction of current that he provided in his XML offsets to be displayed in the boilerplate of text output. Making it work for reference stations is deferred until whenever reference stations are migrated to XML and the new attributes can conveniently be added.
Removed $(DEPXPMLIB) from xtide dependencies (DEPLIBS1 in manifest) to get rid of this needless compilation failure:
make: *** No rule to make target `/usr/X11R6/lib/libXpm.a', needed by `xtide'. Stop.
The cause of this was that some Linux distributions only provide a shared libXpm, while the dependencies generated by Imake check for the existence of the static library.
Made -o switch append instead of overwrite files per request from AED.
Fixed a bug reported by Alan Davis which caused access violations and other problems when a default center longitude was set in the control panel.
No code changes; just promoted to final release status.
Reversed order of location list latitude sort so that points north appear at the top (sug. Dave Davey).
SGI portability fix from David Warren: changed declarations of nested structs in header files to use Classname::structname instead of struct structname.
First versioned release of XTide 2.