v3.1.0
Warning
Breaking data structure and API changes relative to the v3.0.x releases.
The following data structure and API changes are included in this release:
MS3Record.encoding
nowint16_t
instead ofint8_t
.MS3Record.datalength
nowuint32_t
instead ofuint16_t
(change in 3.0.18).MS3Record.datasize
andMS3TraceSeg.datasize
nowuint64_t
instead ofsize_t
.ms3_detect()
now returnsint64_t
instead ofint
.mstl3_unpack_recordlist()
'soutputsize
argument is nowuint64_t
instead ofsize_t
.mseh_get_ptr_r()
'smaxlength
is nowuint32_t
instead ofsize_t
.
The decision to change the API (and not move to a new major version) was not easy. The precipitating change
was that the MS3Record.datalength
value was too small to accommodate the value in the format specification.
This means the library would not be future proof to properly detect all records of the format, and, while it could
read and write the commonly-used, small records, it would eventually fail in a bad way. With this unfortunate
breakage the opportunity was taken to apply a few more breaking changes, in particular the encoding value
can now represent the entire range allowed in the format.
The v3.1.0 release API is now stable and semantic versioning can be expected.
The fixes in this release include:
- Fix to handle full range of allowed encoding values from 0-255.
- Fix to handle detection of huge record lengths beyond MAXRECLEN gracefully.
- Add more checks to avoid writing impossible values to miniSEED v2 blockette fields.
- Fix all compiler warnings at level -Wextra for clang, gcc, and \W3 for MSVC.
- Fix build of DLL target on Windows by defining exports in libmseed.def.
- Improve formatting of gap list produced by mstl3_printgaplist().