You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1371 lines
56 KiB
Plaintext
1371 lines
56 KiB
Plaintext
1 year ago
|
2023.206: 3.0.17
|
||
|
- Add tests for default record length and encoding.
|
||
|
- Document versioning schema as semantic versioning.
|
||
|
- Add const qualifiers to packing routines that do not modify the
|
||
|
passed MS3Record structure.
|
||
|
|
||
|
2023.204: 3.0.16
|
||
|
- Additional Steim 1 & 2 decoder optimization.
|
||
|
- Add more const qualifiers to pointer values. Thanks @damb.
|
||
|
|
||
|
2023.185:
|
||
|
- Fix logic in `msr3_duplicate()` for certain cases.
|
||
|
- Add many const qualifiers to pointer values where the library
|
||
|
interface does not modify the data. Thanks @damb
|
||
|
|
||
|
2023.180:
|
||
|
- Add const qualifier to record pointer declarations where the
|
||
|
library interface does not modify the data.
|
||
|
|
||
|
2023.177:
|
||
|
- Incorporate ms_gswapX() functions into libmseed.h to promote inlining.
|
||
|
- Optimize Steim 1 & 2 decoders.
|
||
|
- Change test for environment variable DECODE_DEBUG to compile-time define
|
||
|
- Change test for environment variable ENCODE_DEBUG to compile-time define
|
||
|
|
||
|
2023.162: 3.0.15
|
||
|
- Print sample rate in Hz consistently in msr3_print()
|
||
|
- Fix writing of SNR values field 9 of Blockette 201 (v2)
|
||
|
- Read and write microsecond offsets to/from Blockette 500 (v2)
|
||
|
- Fix addition of Clock Model field 9 of Blocketee 500 (v2)
|
||
|
|
||
|
2023.160: 3.0.14
|
||
|
- Add FAQ to documentation and update example code to match API changes.
|
||
|
- Change sample type for text encoding to 't', value 'a' still supported.
|
||
|
|
||
|
2023.159:
|
||
|
WARNING: API change as follows:
|
||
|
The `fpos` and `last` arguments of ms3_readmsr(), ms3_readmsr_r(),
|
||
|
and ms3_readmsr_selection() have been removed. The same capabilities
|
||
|
is avaiable and details are included in the porting guide.
|
||
|
|
||
|
- Add JSON Merge Patch capability to mseh_set_ptr_r().
|
||
|
- Fix zero-padding of empty bytes following data in miniSEED v2 creation.
|
||
|
- Rename DE_ASCII to DE_TEXT to generalize to UTF-8, legacy mapping provided.
|
||
|
- Add MS3Tolerance_INITIALIZER for MS3Tolerance values.
|
||
|
|
||
|
2023.155:
|
||
|
WARNING: API change as follows:
|
||
|
The `MS3TraceList.numtraces` was renamed `MS3TraceList.numtraceids`.
|
||
|
|
||
|
- New test suite based on Tau :https://github.com/jasmcaus/tau.
|
||
|
Many tests were added and the suite now works on MS-Windows.
|
||
|
|
||
|
- Update example/lm_pack.c:
|
||
|
* Use improved test sinusuoid that contains all differences for
|
||
|
Steim1 and Steim2 encoding.
|
||
|
* Add `-2` option to generate miniSEED v2 instead of default v3.
|
||
|
|
||
|
2023.105:
|
||
|
- Handle special case of year 0 when parsing version 2 blockettes. These
|
||
|
are now treated as "unset" and not included in the extra headers.
|
||
|
- Add nstime_t special value of NSTUNSET for use as "unset" meaning.
|
||
|
|
||
|
2023.099:
|
||
|
WARNING: API change as follows:
|
||
|
The `path` argument to mseh_get and mseh_set routines is now in
|
||
|
JSON Pointer (RFC 6901) format. This is a more appropriate, and
|
||
|
standardized, format than the pseudo-JSON Path, dotted string style
|
||
|
previously used. It also allows more flexibility such as specification
|
||
|
of an array element.
|
||
|
|
||
|
- `mseh_get_path_r()` and `mseh_set_path_r()`, previously named without
|
||
|
the `_r` suffix, now take a additional `parsestate` argument. This
|
||
|
functionality allows the parsed extra headers to be retained between
|
||
|
calls to avoid re-parsing. For advanced usage, this allows more efficient
|
||
|
getting or setting of multiple extraheader values. If used, this state
|
||
|
information must be free'd with `mseh_free_parsestate()`. If used
|
||
|
with `mseh_set_path_r()` the headers must also be serialized with
|
||
|
`mseh_serialize()`.
|
||
|
|
||
|
- `mseh_get_path_r()` and `mseh_set_path_r()` accept a value type of `i`
|
||
|
that is used with int64_t values.
|
||
|
|
||
|
- Replace JSON library with yyjson (https://github.com/ibireme/yyjson).
|
||
|
Benefits include performance, shortest accurate real number representation,
|
||
|
JSON Pointer support, and UTF-8 support.
|
||
|
|
||
|
|
||
|
2023.082:
|
||
|
WARNING: API changes as follows:
|
||
|
1. mstl3_printtracelist() now takes an additional `versions` argument.
|
||
|
When non-zero the routine will decorate SIDs with publication versions.
|
||
|
2. The MS3TraceID structure is no longer a simple linked list. Instead
|
||
|
it is a skip list, slightly changing the syntax for traversing the list
|
||
|
as illustrated in the examples.
|
||
|
|
||
|
- Significant optimization for the case of constructing trace lists with
|
||
|
large numbers of differnt source IDs, by using a skip list. Implementation
|
||
|
inspired by: https://github.com/tdeck/c-skiplist, thanks @tdeck!
|
||
|
- Add new mstl3_findID() function for searching a trace list for specific
|
||
|
SourceID and, optionally, publication version.
|
||
|
|
||
|
2023.068:
|
||
|
- Optimize trace construction in mstl3_addmsr_recordptr() for the case
|
||
|
of duplicate records.
|
||
|
- Add 'const' declarations to ms_sid2nslc() and ms_nslc2sid() to guarantee
|
||
|
input will not be modified.
|
||
|
- Add cURL detection and full build support to example/Makefile.
|
||
|
- Fix logic test for LIBMSEED_NO_THREADING declaration.
|
||
|
|
||
|
2023.029: 3.0.13
|
||
|
- Embed current leap second list, used by default and replaced by
|
||
|
ms_readleapsecondfile().
|
||
|
|
||
|
2023.028:
|
||
|
- Add ISOMONTHDAY_DOY time string variant, with day-of-year.
|
||
|
- Add '_Z' variants of time string formats for trailing Z versions.
|
||
|
- Print record timestamp in new ISOMONTHDAY_DOY_Z format.
|
||
|
- Deprecated the ms_nstime2timestrz() function.
|
||
|
- Re-brand to EarthScope.
|
||
|
|
||
|
2022.338: 3.0.12
|
||
|
- Change printing of bit flag sets to print each bit flag in
|
||
|
most-significant-bit first order to match binary number representation.
|
||
|
|
||
|
2022.156: 3.0.11
|
||
|
- Generate proper HTTP Range header by always including a start value,
|
||
|
defaulting to 0, when a range end is specified.
|
||
|
- When time correction value is present always set the time correction
|
||
|
applied bit when creating V2 records. Thanks @nicoleroy-ipgp.
|
||
|
- mseedview example: always emit accumulated log messages, and print
|
||
|
basic summary correctly.
|
||
|
|
||
|
2022.103: 3.0.10
|
||
|
- Fix uninitialized file position in ms3_readtracelist_selection() (#80)
|
||
|
by @anowacki.
|
||
|
- Fix array index warning in crc32c.c.
|
||
|
- Update emmbedded Parson to 1.4.0.
|
||
|
- Simplify byte swapping routines (#75) by @QuLogic.
|
||
|
- Initialize selection.pubversion to 0 in ms3_readtracelist_timewin()
|
||
|
by @Cuda-Chen.
|
||
|
- Make logging facility thread safe, with per-thread parameters.
|
||
|
- Add lm_pararead.c example to illustrate reading miniSEED in parallel
|
||
|
using re-entrant interfaces and POSIX threading.
|
||
|
- Add Add MS_HPTIME2NSTIME and MS_NSTIME2HPTIME macros to convert
|
||
|
to/from version 2.x time values.
|
||
|
|
||
|
2021.234: 3.0.9
|
||
|
- Update Source Identifier handling to the adopted specification of:
|
||
|
FDSN:NET_STA_LOC_BAND_SOURCE_POSITION
|
||
|
|
||
|
2020.156: 3.0.8
|
||
|
- Add error/warning log registry for accumulation of messages.
|
||
|
- Log and diagnostic printing callbacks now require 'const char *'.
|
||
|
- Verbose-triggered messages are now sent to stdout instead of stderr.
|
||
|
|
||
|
2020.137:
|
||
|
- Add capability to read data from URLs. This feature is optional,
|
||
|
enabled at build time with LIBMSEED_URL and requires libcurl to be
|
||
|
available on the system.
|
||
|
|
||
|
2019.216:
|
||
|
- Copy only UTF-8 characters in ms_strncpclean(), ms_strncpcleantail(),
|
||
|
and ms_strncpopen().
|
||
|
|
||
|
2019.172: 3.0.7
|
||
|
- Add conversion of epoch values via ms_timestr2nstime().
|
||
|
- Allow trailing 'Z' in date-times in ms_timestr2nstime().
|
||
|
|
||
|
2019.170: 3.0.6
|
||
|
- Generalize ms_timestr2nstime() to detect all supported time formats.
|
||
|
- Rename old ms_timestr2nstime() to ms_mdtimestr2nstime().
|
||
|
- Change minimum valid year from 1000 to 1678 to avoid wrap-around.
|
||
|
- ms_nstime2timestr(): fix printing of pre-epoch values for UNIXEPOCH.
|
||
|
- Add test for time string parsing and conversion.
|
||
|
|
||
|
2019.166: 3.0.5
|
||
|
- Allow trace list packing with multiple data sample types.
|
||
|
|
||
|
2019.163:
|
||
|
- Portable printing of size_t values.
|
||
|
|
||
|
2019.162:
|
||
|
- Re-license all libmseed code under the Apache License V2.0.
|
||
|
|
||
|
2019.161: 3.0.4
|
||
|
- Add record record list capability, replacing segment-level record metadata.
|
||
|
|
||
|
2019.142:
|
||
|
- Add ability to pack miniSEED version 2 records.
|
||
|
|
||
|
2019.137:
|
||
|
- Allow packing records with no payload, i.e. header-only.
|
||
|
|
||
|
2019.135:
|
||
|
- Add pre-allocation of data buffers, enable on Windows and disable otherwise.
|
||
|
|
||
|
2019.123: 3.0.3
|
||
|
- Fix version splitting, clarify behavior
|
||
|
- Fix publication version filtering, thanks @krischer
|
||
|
- Allow selections without time ranges, thanks @krischer
|
||
|
- Normalize encoding string lookups, the SEED manual values are messy no need to perpetuate them
|
||
|
- Add option to build PDF manual and clarifications in documentation
|
||
|
- Remove steps in install target of Makefile that no longer function, thanks @senshu
|
||
|
|
||
|
2019.103: 3.0.2
|
||
|
- mstl3_pack() can be called without modifying the Trace List with MSF_MAINTAINMSTL flag.
|
||
|
- Add lm_pack_rollingbuffer.c example of generating records with a rolling buffer.
|
||
|
- Consistently provide extra headers as terminated string from MS3Record.extra.
|
||
|
- Fix segment start time tracking in mstl3_pack().
|
||
|
|
||
|
2019.102: 3.0.1
|
||
|
- Add mstl3_readbuffer_selection() and fix selection-based ms3_readmsr_selection().
|
||
|
- Use callback functions for time and sample rate tolerance instead of fixed values.
|
||
|
- Fix progression of record start time when packing records.
|
||
|
- Optionally store record-level metadata, header flags and extra headers, in a MS3TraceList.
|
||
|
- More documentation and examples.
|
||
|
|
||
|
2019.094: 3.0.0
|
||
|
- A new major version refactored to support the next generation miniSEED
|
||
|
Documentation including porting guide avilable at:
|
||
|
https://iris-edu.github.io/libmseed/
|
||
|
|
||
|
Almost all core data structures and functions have been modified,
|
||
|
often mostly in name (due to structure changes), so porting is required.
|
||
|
|
||
|
Major new features and changes of note:
|
||
|
|
||
|
- Support for reading/writing of miniSEED 3 and read support of miniSEED 2.
|
||
|
|
||
|
- Support for nanosecond time resolution:
|
||
|
The HPTMODULUS is renamed NSTMODULUS and changed for nanoseconds.
|
||
|
Related change of HTPERROR to NSTPERROR value.
|
||
|
hptime_t changed to nstime_t and all time functions changed accordingly.
|
||
|
The hptime2XYZtimestr() function is combined into single nstime2timestr()
|
||
|
function with format flag.
|
||
|
|
||
|
- Added mstl3_readbuffer() to read all records in a data buffer into a Trace List.
|
||
|
|
||
|
- Add global libmseed_memory that contains user-definable function pointers to
|
||
|
malloc(), realloc() and free(). This allows all memory management from the library
|
||
|
to be performed with user-defined functions.
|
||
|
|
||
|
- Data structure change and rename:
|
||
|
Rename MSRecord to MS3Record and restructure for miniSEED 3.
|
||
|
Rename MSTrace[ID,Seg,List] to MS3Trace[ID,Seg,List] and restructure for miniSEED 3.
|
||
|
Rename Selections and SelectTime to MS3Selections and MS3SelectTime.
|
||
|
|
||
|
- Remove MSTrace_s and MSTraceGroup and related functions, use MS3Trace[ID,Seg,List] instead.
|
||
|
|
||
|
- Remove all platform defines (LWP_*) except LWP_WIN for MS Windows.
|
||
|
|
||
|
- Rename all library structs by removing the "_s" suffix so they match their typedef names
|
||
|
|
||
|
- Rename macros and functions specific to miniSEED 2.x by adding "2".
|
||
|
|
||
|
- Remove packheaderbyteorder and packdatabyteorder handling and related
|
||
|
envrionment variables. Byte order is either detected or fixed.
|
||
|
|
||
|
- Decrease MINRECLEN from 256 to 40, decrease MAXRECLEN from 1MB to 128 KiB.
|
||
|
|
||
|
- Increase 'recbuflen' to msr3_parse[_selection]() to uint64_t to work with very large buffers.
|
||
|
|
||
|
- Remove record length specifier from many parsing routines, always autodetermined.
|
||
|
|
||
|
- Remove MS_ISVALIDBLANK macro, was only used for notification of archaic structure.
|
||
|
|
||
|
- Add JSON handling and general wrapper functions to support extra headers
|
||
|
|
||
|
- Add CRC-32C calculation, new ms_crc32c() function.
|
||
|
|
||
|
- Set msr->swapflag bit flags to indicate if header and payload need swapping during parsing.
|
||
|
|
||
|
- Selection file format allows two selection listing variants
|
||
|
If the "quality" field is an integer it is assumed to be a publication version,
|
||
|
otherwise it is ignored.
|
||
|
|
||
|
- Remove capability to read the deprecated "pack" file format used at IRIS DMC.
|
||
|
|
||
|
- Remove StreamState tracking, effectively dropping the compression history capability
|
||
|
between records. Not worth the complexity.
|
||
|
|
||
|
2017.283: 2.19.5
|
||
|
- msr_endtime(): calculate correct end time during a leap second.
|
||
|
- Fixed signedness comparison warning.
|
||
|
|
||
|
2017.125:
|
||
|
- Export LM_SIZEOF_OFF_T on Windows via libmseed.def.
|
||
|
|
||
|
2017.118: 2.19.4
|
||
|
- Add global LM_SIZEOF_OFF_T variable that is set to the size of
|
||
|
the off_t data type as determined at compile time.
|
||
|
|
||
|
2017.075: 2.19.3
|
||
|
- Add missing public, global symbols to libmseed.map, thanks
|
||
|
to Elliott Sales de Andrade.
|
||
|
|
||
|
2017.061: 2.19.2
|
||
|
- Provide install target in Makefile thanks to by Pierre Duperray.
|
||
|
- Deprecate dynamic build target, the shared target will now build
|
||
|
shared or dynamic (Darwin) libraries depending on the system.
|
||
|
- Limit symbols exported in shared libraries to public interfaces
|
||
|
as defined in libmseed.map, thanks again to Pierre Duperray.
|
||
|
- Allow tests to work on Darwin with dynamic libraries.
|
||
|
|
||
|
2017.060: 2.19.1
|
||
|
- Derive versioning of shared/dynamic library from canonical version
|
||
|
defined as LIBMSEED_VERSION in libmseed.h.
|
||
|
- Apply updates to more standardized use of NAME and typos in man pages,
|
||
|
submitted by Pierre Duperray.
|
||
|
|
||
|
2017.053: 2.19
|
||
|
- Incorporate lmplatform.h details into libmseed.h for improved usage.
|
||
|
All that is needed is the static/shared/dynamic library and libmseed.h.
|
||
|
- Avoid undefined left shifts of signed values that would go out of
|
||
|
range and specify the types of some constants.
|
||
|
|
||
|
2016.290:
|
||
|
- Remove dependency on ntwin32.mak for Windows nmake makefiles, now
|
||
|
building works in plain MSVC development environments.
|
||
|
|
||
|
2016.286: 2.18
|
||
|
- Remove limitation on sample rate before calling ms_genfactmult()
|
||
|
in the normal path of packing records. Previously generating the
|
||
|
factor and multiplier was not attempted for rates higher than
|
||
|
32,767.
|
||
|
|
||
|
2016.281: 2.18rc4
|
||
|
- ms_genfactmult() now support a much larger range of integer
|
||
|
sample rates and periods.
|
||
|
- ms_genfactmult() now sets the factor and multiplier using the
|
||
|
SECONDS/SAMPLE notation for sample rates less than 1.0 to retain
|
||
|
precision for low rates.
|
||
|
- ms_genfactmult() now assumes the specified rate is a sample
|
||
|
period in seconds if the samprate value is negative.
|
||
|
- Add ms_rsqrt64() as a general use reciprocal sqrt for doubles.
|
||
|
- Use memcpy() instead of assignment when unpacking float32 and
|
||
|
float64 samples to avoid problems with NaN's. Thanks Lion Krischer.
|
||
|
- Add test for reading records without Blockette 1000.
|
||
|
- Reformat all source code using included clang-format profile.
|
||
|
|
||
|
2016.277:
|
||
|
- A more elegant sanity check for output length in packing by mbyt.
|
||
|
|
||
|
2016:276: 2.18rc3
|
||
|
- Improvements for test suite, more consistency.
|
||
|
- Remove msr_decode_steim? from libmseed.def, they are internal.
|
||
|
- Add sanity to length check before memset calls in packing functions.
|
||
|
|
||
|
2016:274: 2.18rc2
|
||
|
- Check for environment variables ENCODE_DEBUG and DECODE_DEBUG
|
||
|
and set debugging output, at this point it is Steim frame details
|
||
|
and differences being encoded/decoded.
|
||
|
- Fix padding in steim[12] encoding routines.
|
||
|
- Remove unneeded output buffer checks in steim[12] decoding routines.
|
||
|
|
||
|
2016.272: 2.18rc1
|
||
|
- Replace data sample packing and unpacking routines from qlib2 with
|
||
|
new routines developed from scratch. All code is now LGPL licensed.
|
||
|
- Add test suite with tests for encoding, decoding, parsing, etc.
|
||
|
- Update licensing to GNU-LGPL version 3 and include (L)GPL licenses
|
||
|
in LICENSE.txt.
|
||
|
|
||
|
2015.053:
|
||
|
- Define needed C99 int types for MSVC 2012 or earlier. Previously
|
||
|
this was only done for versions earlier than MSVC 2010.
|
||
|
|
||
|
2015.213: 2.17
|
||
|
- Round Fixed Section Data Header start time values to the nearest
|
||
|
tenth of millisecond and restrict the microsecond offset value
|
||
|
to a range between -50 and +49 as recommended in SEED. Previously
|
||
|
start times were truncated at tenths of millisecond resolution
|
||
|
and the microsecond offset value was between 0 and +99. This also
|
||
|
addresses a bug where microsecond offsets were off by 100ms for times
|
||
|
before Jan 1 1970. Thanks to Lion Krischer for reporting.
|
||
|
|
||
|
Note to future hackers: the definition of HPTMODULUS governing the
|
||
|
time tick interval for high precision time values implies that this
|
||
|
tick interval may be changed. In reality, this should not be changed
|
||
|
from the default, microsecond tick value without thorough testing.
|
||
|
Some logic is know to be dependent on the microsecond tick.
|
||
|
|
||
|
2015.134: 2.16m
|
||
|
- Add defines for needed integer types and macros from inttypes.h
|
||
|
missing in older MSVC versions. MSVC 2010 and later appear to have
|
||
|
enough C99 support.
|
||
|
- Add define tests for _WIN32 and _WIN64 to cover all WINs.
|
||
|
- ms_fread(): Add cast to quiet warning for conversion from size_t
|
||
|
to int. In this case the read will always be <= MAXRECLEN, much
|
||
|
smaller than int, making the conversion safe.
|
||
|
|
||
|
2015.113: 2.16
|
||
|
- Update minor release version in Makefile.
|
||
|
|
||
|
2015.108:
|
||
|
- Cleanup of lmplatform.h removing unneeded headers and using C99
|
||
|
standard headers except for a few platform specific cases.
|
||
|
- Convert all printf() and scanf() usage of %lld for 64-bit integers
|
||
|
to use the C99 PRId64 and SCNd64 macros for portability (MinGW).
|
||
|
- Change detection of Linux/Cygwin to set global define LMP_LINUX
|
||
|
instead of LMP_GLIB2 (now marked as deprecated).
|
||
|
- Change detection of Windows to set global define LMP_WIN instead
|
||
|
of LMP_WIN32 (now marked as deprecated).
|
||
|
- Add detection of __MINGW64__ define.
|
||
|
- Tested building on Win7 with: Open Watcom 1.9, MinGW gcc 4.8.1 and
|
||
|
Cygwin 1.7.35 (gcc 2.9.2).
|
||
|
|
||
|
2015.074:
|
||
|
- Define NTP-Posix time epoch conversion constant specifically as
|
||
|
a long long integer to avoid warnings on some compilers.
|
||
|
|
||
|
2015.070: 2.15
|
||
|
- Fix infinite loop if blockette chain is corrupt. Patch submitted
|
||
|
by Elliott Sales de Andrade.
|
||
|
|
||
|
2015.062: 2.14
|
||
|
- Fix memory leak when msr_pack() returns after an error. Patch
|
||
|
contributed by Larry Baker and Eric Thomas.
|
||
|
- Change casting of values passed to isdigit() to int intead of
|
||
|
unsigned character. Apparently this was consufing on ARM archs.
|
||
|
|
||
|
2015.061:
|
||
|
- Add ms_readleapseconds() and ms_readleapsecondfile() routines to
|
||
|
read a leap seconds file into an internal list.
|
||
|
- Modify msr_endtime() to check for an internal leap second list,
|
||
|
check for overlap with the record and adjust the end time as needed
|
||
|
when leap seconds are present. When a leap second list is present
|
||
|
any indication of positive leap seconds in the fixed section data
|
||
|
header are ignored.
|
||
|
|
||
|
2014.248:
|
||
|
- Add casting to size_t and int to avoid build warnings on certain
|
||
|
build systems (e.g. older MS Visual Studio).
|
||
|
The effective maximum sample buffer and record buffer size is ~2GB.
|
||
|
|
||
|
2014.234: 2.13
|
||
|
- Clean up Makefile and example/Makefile, remove all GCC-specific and
|
||
|
debug targets. Makefiles are compatible with both GNU and BSD make.
|
||
|
As before, the shared target works only for GCC-compatible compilers.
|
||
|
Thanks to Elliott Sales de Andrade for pointing out that shared library
|
||
|
targets did not work with parallel builds, prompting this clean up.
|
||
|
|
||
|
2014.197: 2.13rc
|
||
|
- Support 128-byte record length by changing MINRECLEN to 128 (was 256).
|
||
|
The current SEED specification is a minimum record length of 256-bytes,
|
||
|
but there are cases (e.g. low latency data flow) using 128-byte records.
|
||
|
- Add declarations, casting and string truncation to clear warnings
|
||
|
uncovered in ObsPy testing (thanks to Elliott Sales de Andrade).
|
||
|
|
||
|
2014.074:
|
||
|
- Add __CYGWIN__ defined test to Linux section of lmplatform.h.
|
||
|
|
||
|
2013.273: 2.12
|
||
|
- Add mst_convertsamples() and mstl_convertsamples() to convert sample
|
||
|
types. When converting from float & double types to integer type
|
||
|
a simple rounding is employed to compensate for machine representation
|
||
|
of floating point numbers.
|
||
|
|
||
|
2013.267:
|
||
|
- msr_endtime(): Check activity flags in fixed section of data header,
|
||
|
if bit 4 is set then a positive leap occurred during the record and
|
||
|
the end time should be reduced by one second to properly match the now
|
||
|
shifted UTC time. As long as the next record in the series is
|
||
|
properly marked with the correct UTC time no artificial time tear
|
||
|
will be generated when reconstructing the time series.
|
||
|
|
||
|
2013.137:
|
||
|
- Update docs for transition to 64-bit sample counts done in 2011!
|
||
|
|
||
|
2013.117: 2.11
|
||
|
- Initialize internal counters in mst_pack() to avoid their use
|
||
|
in error conditions. Thanks to D. Ketchum and M. Potter for help.
|
||
|
- Add 'const' qualifier to the msfile argument of the file reading and
|
||
|
writing family of routines to stop compiler warnings resulting from
|
||
|
generated binding functions. Thanks to M. Bach for reporting.
|
||
|
|
||
|
2013.056: 2.10
|
||
|
- Add more sanity checks to msr_unpack_data() to catch bad/corrupted
|
||
|
data records and avoid crashes due to impossible pointer construction.
|
||
|
|
||
|
2013.053: 2.9
|
||
|
- Extend parsing of day-of-year style time strings to allow parsing
|
||
|
of time fields separated by dashes in addition to allowing the day
|
||
|
and time fields to be separated by a 'T' or space. Modifications
|
||
|
were made to ms_seedtimestr2hptime().
|
||
|
- Extend parsing of year-month-day style time strings to allow parsing
|
||
|
of time fields separated by commas. Modifications were made to
|
||
|
ms_timestr2hptime().
|
||
|
|
||
|
2013.050:
|
||
|
- Add MS_ISVALIDYEARDAY() macro to test range for year and day values,
|
||
|
years between 1900 and 2100 and days between 1 and 366.
|
||
|
- Use new macro to determine when byte swapping is needed. This test
|
||
|
leaves a non-determination of byte order for days 1, 256 and 257 in
|
||
|
the year 2056, beware future data users.
|
||
|
|
||
|
2013.007: 2.8 (again)
|
||
|
- Add msr_parse_selection() to libmseed.def for Windows builds.
|
||
|
- Fix errors in pseudo code in doc/msr_parse.3.
|
||
|
|
||
|
2012.363: 2.8
|
||
|
- Implement msr_parse_selection() which is a wrapper of msr_parse()
|
||
|
that searches for the first parsable miniSEED record in a memory
|
||
|
buffer and returns it. Optionally a Selections list may be specified
|
||
|
to limit the returned data to records matching specific criteria.
|
||
|
|
||
|
2012.357:
|
||
|
- Fix corruption of float sample types when opposite byte order than
|
||
|
host in certain architecture combinations. By not addressing
|
||
|
individual float samples directly as floats prior to byte swapping
|
||
|
we avoid the values being placed into the FPU where they may be
|
||
|
corrupted. Thanks to Moritz Beyreuther and Lion Krischer for discovery
|
||
|
and testing.
|
||
|
- Expose the msr_unpack_data() function for use by removing the static
|
||
|
declaration. Change verbose flag type to match others and document.
|
||
|
- Fix some logging messages, typos, etc.
|
||
|
|
||
|
2012.138: 2.7
|
||
|
Add define for MINGW32 to use _fstat and _stat.
|
||
|
|
||
|
2012.114: 2.7rc2
|
||
|
- Change record parsing code to trim trailing spaces from network,
|
||
|
station, location and channel parameters. Spaces in between non-space
|
||
|
characters remain.
|
||
|
|
||
|
2012.111:
|
||
|
- Update example/test.mseed to new data with an earthquake to make it
|
||
|
more recognizable compared to ambient noise in the previous example.
|
||
|
|
||
|
2012.105: 2.7rc1
|
||
|
- Add many type casts to quiet newer GCC and MSVC compilers.
|
||
|
For 32-bit programs there are some places, mostly in packing routines,
|
||
|
where 64-bit integers are converted to 32-bit values for sample buffer
|
||
|
sizes and counts leaving the potential for overflow. This will become
|
||
|
a problem when byte counts for sample buffers are beyond 2^31, for
|
||
|
32-bit integer sample values that is more than 536 million samples.
|
||
|
So programmer beware if using such buffer sizes for packing miniSEED.
|
||
|
|
||
|
2012.088:
|
||
|
- When parsing records copy the ASCII string fields (sequence number,
|
||
|
network, station, location, channel) directly without removing spaces.
|
||
|
This makes the parser more lenient to unallowed characters and
|
||
|
synchronizes read and write capabilities.
|
||
|
|
||
|
- For sampling rates above 32,767 Hz only print a warning for high
|
||
|
verbosity settings and set the sample rate factor and multipler to zero.
|
||
|
Previously an error was printed during rational approximation.
|
||
|
The expectation is that a record with such a high sample rate will
|
||
|
include a blockette 100 to specify the actual sample rate.
|
||
|
This is not an official convention for SEED, but is a kludge to
|
||
|
support extremly high sample rates without printing errors.
|
||
|
|
||
|
- Fix conversion to doubles in examples/msrepack.c.
|
||
|
|
||
|
2011.304: 2.6.2
|
||
|
- Increase precision of sample rate in SYNC printing routines to
|
||
|
avoid trucation of rate values.
|
||
|
|
||
|
2011.262:
|
||
|
- Add '_lm' suffix to declaration of pivotal_gmtime_r_stamp in
|
||
|
genutils.c to avoid conflicts with other libraries. Thanks to Doug
|
||
|
Neuhauser for the tip.
|
||
|
|
||
|
2011.164:
|
||
|
- example/msrepack.c: add -N option to specify network code for output
|
||
|
data records.
|
||
|
|
||
|
2011.160:
|
||
|
- example/msrepack.c: make sure input buffer is flushed/packed, retain
|
||
|
good input data when the end of the file contains bad data.
|
||
|
|
||
|
2011.158:
|
||
|
- example/msrepack.c: convert samples to needed type for specified
|
||
|
output encoding, e.g. integers to floats.
|
||
|
- example/msrepack.c: do not open output file until after all options
|
||
|
have been parsed to avoid clobbering the output file unnecessarily.
|
||
|
|
||
|
2011.144: 2.6.1
|
||
|
- Update dynamic library version.
|
||
|
- Add notes to the users guide and intro about functions useful for
|
||
|
detecting and parsing records in a memory buffer.
|
||
|
|
||
|
2011.129:
|
||
|
- Correctly determine record lengths implied by presence of pack header
|
||
|
by avoiding record header searches in buffer beyond pack header.
|
||
|
- Fix ms_parse to return correct hint of how many more bytes are needed
|
||
|
when record length has not been determined.
|
||
|
- Change the samplecnt and numsamples elements of the MSRecord, MSTrace
|
||
|
and MSTraceSeg structures to 64-bit integers to avoid overflow.
|
||
|
|
||
|
2011.124:
|
||
|
- Allow lowercase 't' in ISO time string parsing.
|
||
|
|
||
|
2011.090:
|
||
|
- Add check for invalid blockette offset in ms_detect().
|
||
|
|
||
|
2011.056: 2.6
|
||
|
- Fix handling of sample data in internal MSTraceList routines.
|
||
|
- Cleanup WIN32 defines, make MSVC and Open Watcom play nicely.
|
||
|
- Default data byte order to big endian when blockette 1000 contains
|
||
|
invalid byte order value, previously defaulted to host byte order.
|
||
|
|
||
|
2011.042:
|
||
|
- Update libmseed.def to match current libmseed.h declaractions.
|
||
|
- Cleanup to avoid MSVC warnings.
|
||
|
|
||
|
2011.039: 2.6rc4
|
||
|
- Do not return MS_NOTSEED when no records read from packed file.
|
||
|
- Update user guide to include note about MSTraceLists and change
|
||
|
the miniSEED creation example to use mst_writemseed().
|
||
|
|
||
|
2011.036: 2.6rc3
|
||
|
- Fix parsing of records without blockette 1000, use pack headers
|
||
|
and end-of-file to determine implied record lengths.
|
||
|
|
||
|
2011.032: 2.6rc2
|
||
|
- Fix handling of truncated records, partial reads at EOF.
|
||
|
- Fix offset tracking when reading from stdin.
|
||
|
|
||
|
2011.006: 2.6rc1
|
||
|
- Add convience routines to only read selected records from a file:
|
||
|
ms_readtracegroup_timewin()
|
||
|
ms_readtracegroup_selection()
|
||
|
ms_readtracelist_timewin()
|
||
|
ms_readtracelist_selection()
|
||
|
- Add convience routines to write miniSEED data to specified file:
|
||
|
msr_writemseed()
|
||
|
mst_writemseed()
|
||
|
mst_writemseedgroup().
|
||
|
- Fix bug when either mst_pack() or mst_packgroup() was called with
|
||
|
a NULL packedsamples pointer.
|
||
|
- Fix bugs when (re)initializing read buffer.
|
||
|
- Fix return of file position in ms_readmsr_main()..
|
||
|
|
||
|
2010.365:
|
||
|
- Add internal ms_gmtime_r() to replace call to system gmtime_r(). The
|
||
|
internal version handles dates beyond year 2038 and avoids the system
|
||
|
call. Tested with years up to 5000.
|
||
|
|
||
|
2010.363:
|
||
|
- Add parseutils.c source file.
|
||
|
- Add msr_parse() to detect & unpack a record in a memory buffer.
|
||
|
- Add ms_detect() to check a memory buffer for a record.
|
||
|
|
||
|
- Rewrite ms_readmsr_main() to use msr_parse() and reduce I/O by
|
||
|
using a double-buffer to increase the average read size and other
|
||
|
simplifications and optimizations.
|
||
|
|
||
|
The internal read buffer size is MAXRECLEN as defined in libmseed.h.
|
||
|
Each file parameter structure used, including the global default,
|
||
|
will allocate a buffer of this size. For specialized applications
|
||
|
requiring low memory use the MAXRECLEN, current 1 MB, can be reduced.
|
||
|
|
||
|
- Change ms_readmsr_main() to interpret reclen <= 0 as a request
|
||
|
for autodetection of each record, a value of 0 no longer means all
|
||
|
records are the same length as the first record.
|
||
|
- Remove ms_find_reclen() function, replacement is ms_detect().
|
||
|
- Move ms_parse_raw() into parseutils.c.
|
||
|
- Change year sanity check to allow range 1800 to 5000.
|
||
|
- Use 64-bit values in hptime calculation to correctly handle years
|
||
|
beyond 2038.
|
||
|
- The "last" record indicator argument to the ms_readmsr() family
|
||
|
is considered deprecated and will probably be removed in future
|
||
|
releases. New programs should not use this functionality, it does
|
||
|
not, and will never, work in cases where there is more than
|
||
|
MINRECLEN padding after the last valid record in a file.
|
||
|
|
||
|
2010.304:
|
||
|
- Use gmtime_r() to avoid the non-thread-safe system gmtime() function.
|
||
|
- Define gmtime_r() for WIN32 and WIN64 in terms of gmtime() which is
|
||
|
thread-safe under WIN32.
|
||
|
- Add define for WIN64 even though WIN32 is probably defined for 64-bit.
|
||
|
|
||
|
2010.291:
|
||
|
- Add check for spaces as valid characters in sequence numbers.
|
||
|
|
||
|
2010.253:
|
||
|
- Add check for log parameters in ms_log_main().
|
||
|
|
||
|
2010.129:
|
||
|
- Fix small printing bug in diagnostic ms_printselections().
|
||
|
|
||
|
2010.068: 2.5.1
|
||
|
- Allow file name for ms_readselectionfile() to be "-" and read
|
||
|
stdin as a special case.
|
||
|
|
||
|
2010.047: 2.5
|
||
|
- Fix tracking of first and last MSTraceSeg entries in mstl_addmsr().
|
||
|
- Make the non-fatal Steim integrity failure and sample mismatch log
|
||
|
output print as "Warning" instead of "ERROR".
|
||
|
|
||
|
2010.015: 2.4
|
||
|
- Change ms_addselect() to take a srcname argument and create
|
||
|
ms_addselect_comp() as a wrapper that creates a srcname from
|
||
|
individual source name components.
|
||
|
|
||
|
2010.012:
|
||
|
- Fix unpacking of 16-bit integer encoded data, thanks to
|
||
|
Robert Barsch.
|
||
|
|
||
|
2010.008:
|
||
|
- Fix special case of "--" location ID in ms_addselect().
|
||
|
|
||
|
2010.007:
|
||
|
- Add SelectTime **ppselecttime argument to ms_matchselect()
|
||
|
and msr_matchselect() routines so that the matching time range
|
||
|
can optionally be returned to the caller.
|
||
|
|
||
|
2010.006:
|
||
|
- Add a check for ATTRIBUTE_PACKED define (lmplatform.h) and
|
||
|
if set add an __attribute__((packed)) qualifier to all structs
|
||
|
that are mapped to SEED structures (and cannot be padded).
|
||
|
This is useful on platforms such as ARM that pad structures
|
||
|
for alignment by default. To use add "-DATTRIBUTE_PACKED" to
|
||
|
CFLAGS or equivalent.
|
||
|
- Fixes to gswapX() routines for platforms where structures
|
||
|
are padded for alignment; patch from Laurence Withers, thanks.
|
||
|
- Add msr_matchselect and ms_printselections() routine to
|
||
|
selections.c.
|
||
|
|
||
|
2010.005:
|
||
|
- Simplify packed file reading in ms_readmsr_main() and allow
|
||
|
data sections to be skipped based on a Selection list, packed
|
||
|
files are used internally at the IRIS DMC.
|
||
|
- Rename ms_readmsr_r() to ms_readmsr_main() and create a
|
||
|
simple wrapper function for ms_readmsr_r().
|
||
|
|
||
|
2010.004:
|
||
|
- Add selection.c containing routines to manage data selection
|
||
|
lists based on network, station, location, channel, quality,
|
||
|
start and end times. The name parameters may contain globbing
|
||
|
charaters for matching. External routines are: ms_addselect(),
|
||
|
ms_matchselect(), ms_readselectionfile() and ms_freeselections().
|
||
|
|
||
|
2009.365:
|
||
|
- Correctly track microsecond offset in Blockette 1001 when
|
||
|
msr_pack() creates more than one record.
|
||
|
|
||
|
2009.357:
|
||
|
- Reduce error accumulation of record start times in pack.c,
|
||
|
thanks to Roman Racine for the report and suggested fix.
|
||
|
The error only accumulated to significant values when packing
|
||
|
a large number of records with a single call to msr_pack().
|
||
|
|
||
|
2009.354:
|
||
|
- Change return type of internal ms_readpackinfo() to off_t and
|
||
|
fix small error return check.
|
||
|
|
||
|
2009.353:
|
||
|
- Add ms_splitsrcname() routine to split "NET_STA_LOC_CHAN[_QUAL]"
|
||
|
into separate components.
|
||
|
- Update MINOR_VER version to 4 anticipating the 2.4 release
|
||
|
(seem to have forgotten 3).
|
||
|
|
||
|
2009.201: 2.3
|
||
|
- msr_unpack(): change new blockette count and data offset
|
||
|
test failures to "Warning" instead of "ERROR".
|
||
|
|
||
|
2009.194: 2.3rc
|
||
|
- Fix record offset reporting when record length detection fails.
|
||
|
- Add diagnostic reporting of data problems in ms_readmsr_r()
|
||
|
by calling ms_parse_raw().
|
||
|
|
||
|
2009.174:
|
||
|
- Fix corner case trace sorting error in mstl_addmsr().
|
||
|
- Add ms_nomsamprate() to genutils.c to calculate the sample rate
|
||
|
specified as a SEED sample rate factor and multiplier.
|
||
|
- Add ms_parse_raw() implementing a simple validating parser
|
||
|
to report invalid header values and print raw header fields.
|
||
|
- msr_unpack(): add tests for blockette count and data offset.
|
||
|
- Change byte swapping test of year to 1920 to 2050 range.
|
||
|
- Store blockette offset in BlktLink structure.
|
||
|
|
||
|
2009.111: 2.2
|
||
|
- Add CDSN decoding support due to popular demand.
|
||
|
- Incorporate enhanced dynamic library versioning as recommended
|
||
|
by Laurence Withers.
|
||
|
- Fix bug in ASCII encoding routine, thanks again Laurence Withers.
|
||
|
- Add and update libmseed.def which can be used with the Win32 DLL
|
||
|
for linking, original file contributed by Robert Barsch.
|
||
|
|
||
|
2008.361: 2.2rc3
|
||
|
- Improve mstl_addmsr() sorting and suturing logic so that it
|
||
|
matches the healed and sorted output from the trace group routines.
|
||
|
|
||
|
2008.327: 2.2rc2
|
||
|
- Add ms_readtracelist() to read all records from a file into a
|
||
|
MSTraceList.
|
||
|
- Update all man pages with changes and add new man pages.
|
||
|
- Fix auto sorting of traces in mstl_addmsr().
|
||
|
|
||
|
2008.320: 2.2rc
|
||
|
- Add MSTraceList facility which is functionally equivalent to
|
||
|
the existing MSTraceGroup facility but more efficiently populated,
|
||
|
especially when data records are in time order or the time series
|
||
|
are very gappy. The MSTraceList related functions are prefixed
|
||
|
with "mstl_" and exist in the new source file tracelist.c.
|
||
|
- Add mst_printsynclist() and mstl_printsynclist() functions to
|
||
|
print trace segment lists in SYNC format.
|
||
|
|
||
|
2008.318:
|
||
|
- Change one call in fileutils.c to fseeko() to lmp_fseeko()
|
||
|
so Win32 builds work again.
|
||
|
|
||
|
2008.313:
|
||
|
- Optimize mst_findadjacent() by first testing for time segment
|
||
|
match, then sample rate and finally source name components.
|
||
|
|
||
|
2008.283: 2.1.7
|
||
|
- Allow a caller of ms_readmsr()/ms_readmsr_r() to specify a
|
||
|
starting offset into the file by setting the value pointed to by
|
||
|
the fpos argument to a negative value (interpreted as a positive
|
||
|
offset).
|
||
|
|
||
|
2008.220: 2.1.6
|
||
|
- Optimize Steim 1 & 2 encoders significantly by using small local
|
||
|
working buffers and eliminating many redundant calculations.
|
||
|
Thanks to Jean-Francois Fels.
|
||
|
|
||
|
2008.171:
|
||
|
- Add Matlab/GNU Octave interface routines, thanks to Stefan Mertl.
|
||
|
- Remove 'const' qualifier from argument of log printing function
|
||
|
pointers, too many useless compiler warnings.
|
||
|
|
||
|
2008.163:
|
||
|
- Allow data record sequence numbers to be NULL values in addition
|
||
|
to ASCII numbers.
|
||
|
|
||
|
2008.161: 2.1.5
|
||
|
- Fix string parsing error for IRIS DMC packed files, thanks Sandy!
|
||
|
- Use a merge sort algorithm insteam of the bubble sort previsouly
|
||
|
used in mst_groupsort(), better performance.
|
||
|
- Do raw string manipulation in msr_srcname() and mst_srcname()
|
||
|
instead of using sprintf(), slightly better performance.
|
||
|
- Do raw string comparison in mst_findmatch() for better performance.
|
||
|
|
||
|
2007.228: 2.1.4
|
||
|
- Include compression history for Steim encodings by tracking the
|
||
|
last sample value packed for each data stream. For the first
|
||
|
record of a stream, a cold-start, the first difference is zero.
|
||
|
This included the addition of a StreamState struct and associated
|
||
|
pointers for MSRecord and MSTrace which get allocated during packing
|
||
|
routines.
|
||
|
- Do not adjust start time of record header during packing when
|
||
|
sampling rate is zero or negative.
|
||
|
- Add ms_hptime2mdtimestr() and ms_btime2mdtimestr routines to
|
||
|
create time strings in month-day format, this is the same as
|
||
|
the ISO format without the 'T' between the date and time.
|
||
|
- Add a 'subsecond' flag argument to all ms_hptime2<string>
|
||
|
routines to control the addition of sub-second precision.
|
||
|
|
||
|
2007.178: 2.1.3
|
||
|
- Fix log message bug for unknown encoding format while unpacking,
|
||
|
this could cause certain systems to segfault if encountered.
|
||
|
- Rename MS_UNPACKENCODINGFORMATFALLBACK macro to
|
||
|
MS_UNPACKENCODINGFALLBACK to match the actual variable name.
|
||
|
- Fix handling of fallback encoding format in unpack.c, worked
|
||
|
earlier but had regressed to a broken state.
|
||
|
- Remove declaration for lmp_strerror() which does not exist.
|
||
|
|
||
|
2007.148: 2.1.2
|
||
|
- Use calloc instead of malloc to allocate and clear a fsdh_s
|
||
|
in msr_pack_header_raw() when none is available in the passed
|
||
|
MSRecord. Previously this could result in a subtle bug for systems
|
||
|
where malloc'd memory is not zeroed. This would only have effected
|
||
|
programs that were creating miniSEED in a particular way.
|
||
|
|
||
|
2007.138: 2.1.1
|
||
|
- Create LMP_BSD platform definition to cover the BSDs including
|
||
|
Apple Mac OS X, this replaces LMP_DARWIN. Specifically FreeBSD,
|
||
|
OpenBSD, NetBSD and Apple are detected for this platform.
|
||
|
|
||
|
2007.118:
|
||
|
- Add msr_duplicate() function to duplicate an MSRecord struct.
|
||
|
- Use msr_duplicate() in example/msrepack.c example program to
|
||
|
track the most current MSRecord as a template for packing.
|
||
|
|
||
|
2007.102: 2.1
|
||
|
- Removed caveat comment from mst_groupheal() man page.
|
||
|
|
||
|
2007.083:
|
||
|
- mst_groupheal() now sorts the MSTraceGroup before it tries to
|
||
|
heal the traces, this increases the chances of healing all
|
||
|
possible segments.
|
||
|
- msr_pack(): add void *handlerdata argument that wil be passed
|
||
|
directly to the record_handler(), this is intended to allow
|
||
|
private data to be passed from the msr_repack() caller to the
|
||
|
record handling routine.
|
||
|
- mst_pack(): add void *handlerdata argument that is passed
|
||
|
directly to msr_pack() and used as described above.
|
||
|
- mst_packgroup(): add void *handlerdata argument that is passed
|
||
|
directly to mst_pack() and used as described above.
|
||
|
- Add macros for setting the pack & unpack, header & data byte
|
||
|
order override variables: MS_PACKHEADERBYTEORDER(X),
|
||
|
MS_PACKDATABYTEORDER(X), MS_UNPACKHEADERBYTEORDER(X) and
|
||
|
MS_UNPACKDATABYTEORDER(X).
|
||
|
- Add macros for setting the unpack encoding format override and
|
||
|
encoding format fallback variables: MS_UNPACKENCODINGFORMAT(X)
|
||
|
and MS_UNPACKENCODINGFORMATFALLBACK(X).
|
||
|
|
||
|
2007.074:
|
||
|
- Fix typos in the docs referring to msr_readtraces() that should
|
||
|
be ms_readtraces(), thanks Richard Boaz.
|
||
|
|
||
|
2007.034:
|
||
|
- mst_groupheal(): fix removal of first trace in group.
|
||
|
- mst_groupheal(): reset MSTrace data quality indicator when
|
||
|
merged traces do not have matching qualities.
|
||
|
|
||
|
2007.030: 2.0
|
||
|
- Set no default CFLAGS and CC variables for building and add a
|
||
|
note to the Makefile about using them for build configuration.
|
||
|
- Eliminate compiler warning for genutils.c routines.
|
||
|
|
||
|
2007.028:
|
||
|
- Add new pack file type 8.
|
||
|
- Allow 'M' as a valid data record indidator/quality flag.
|
||
|
|
||
|
2007.023:
|
||
|
- Determine needs for GEOSCOPE decoding and remove the need
|
||
|
for using the pow() function and linking with the math library.
|
||
|
|
||
|
2007.005:
|
||
|
- Fix resetting of global MSFileParam in ms_readmsr_f() when
|
||
|
cleanup is requested.
|
||
|
|
||
|
2006.363:
|
||
|
- Change mst_groupsort() to sort on: srcname, then starttime,
|
||
|
then descending endtime and finally sample rate. This moves
|
||
|
sample rate to the end of the criteria, the previous order was:
|
||
|
srcname, sample rate, starttime and endtime.
|
||
|
|
||
|
2006.354: 2.0rc1
|
||
|
- Stamp 2.0rc1.
|
||
|
- Fix diagnostic printing bug in pack.c.
|
||
|
- Fix ms_gswap.3 man page.
|
||
|
|
||
|
2006.346:
|
||
|
- Change "get_" prefix for lookup routines to "ms_".
|
||
|
- Change ms_encoding() to ms_encodingstr().
|
||
|
- Document ms_errorstr() in the lookup and other man pages.
|
||
|
- Document and use ms_log(3) in User Guide/ms_intro(3).
|
||
|
|
||
|
2006.344:
|
||
|
- Add "ms_" prefix to gswap routines.
|
||
|
- Change SWAPBTIME macro to MS_SWAPBTIME.
|
||
|
|
||
|
2006.339: 2.0pre8
|
||
|
- Add buffer length sanity check in ms_find_reclen() suggested by
|
||
|
Doreen Pahlke.
|
||
|
- Change mst_printracelist() and mst_printgaplist() to print
|
||
|
"-0" when the gap is 0 (one sample overlap) and "==" when there
|
||
|
is no gap.
|
||
|
|
||
|
2006.332:
|
||
|
- Add memory allocation checks, every allocation is now tested.
|
||
|
- Fix usage message for example programs, use fprintf for the long
|
||
|
section of the output.
|
||
|
|
||
|
2006.331: 2.0pre7
|
||
|
- Add source name to all unpacking error and diagnostic messages.
|
||
|
- Add source name to all packing error and diagnostic messages.
|
||
|
- Reorganize sanity check code in msr_unpack() to use the
|
||
|
MS_ISVALIDHEADER macro.
|
||
|
- Add ms_recsrcname() function to calculate the source name for
|
||
|
an unpacked record.
|
||
|
|
||
|
2006.326: 2.0pre6
|
||
|
- Add ms_readmsr_r() as a reenentrant, thread safe version of what
|
||
|
ms_readmsr() used to be and make ms_readmsr() a wrapper for the new
|
||
|
reentrant version that uses global file reading parameters.
|
||
|
- Use ms_readmsr_r() in ms_readtraces() so that it's now thread
|
||
|
safe too.
|
||
|
- Add logging.c routines and declarations in libmseed.h. This
|
||
|
constitutes a new logging facility that is used throughout the
|
||
|
library and can be used by libmseed based programs. The facility
|
||
|
allows the caller to redirect all the log, diagnostic and error
|
||
|
output from the library to specific functions. The facility
|
||
|
also allows user specifed prefixes for all output messages.
|
||
|
|
||
|
2006.321:
|
||
|
- Prefix all data encoding type defines with DE_ to avoid collision.
|
||
|
- Add GEOSCOPE (three subtypes), SRO and DWWSSN data decoders, there
|
||
|
are no encoders for these types.
|
||
|
- Need of the pow() function now requires linking with -lm (math lib).
|
||
|
|
||
|
2006.312: 2.0pre5
|
||
|
- Add MS_ISVALIDBLANK macro to libmseed.h to test memory for valid
|
||
|
blank/noise records: valid sequence number followed by ASCII spaces.
|
||
|
- Use MS_ISVALIDBLANK in ms_find_reclen() to implicitly find record
|
||
|
lengths, when reading ahead the record length can now be determined
|
||
|
if then next record is a real data record or a blank record.
|
||
|
- Use MS_ISVALIDBLANK in ms_readmsr() to print out a more specific
|
||
|
message when skipping blank records as opposed to non-data records
|
||
|
records.
|
||
|
|
||
|
2006.311: 2.0pre4
|
||
|
- Use MS_ISVALIDHEADER instead of MS_ISDATAINDICATOR when verifying
|
||
|
data records when the record length is not autodetected in ms_readmsr().
|
||
|
- In msr_unpack_data() move the test of reallocation directly after
|
||
|
the reallocation so it's only tested when actually done.
|
||
|
- In msr_unpack_data() include text description of encoding in the
|
||
|
unsupported encoding error message.
|
||
|
|
||
|
2006.296: 2.0pre3
|
||
|
- Add 'quality' flag argument to mst_srcname() to control the
|
||
|
addition of the quality indicator in the srcname.
|
||
|
- Add 'quality' flag argument to mst_groupsort() to control the
|
||
|
inclusion of quality indicator in the sorting.
|
||
|
|
||
|
2006.292: 2.0pre2
|
||
|
- Use memory-aligned swap functions in unpackdata.c for speed.
|
||
|
|
||
|
2006.291:
|
||
|
- Fix return type of ms_readtraces() on success and documentation.
|
||
|
- Tweak verbose flag checking in fileutils.c to avoid spurious msgs.
|
||
|
- Add gcc32gprof and gcc64gprof targets to Makefiles for profiling.
|
||
|
|
||
|
2006.284: 2.0pre
|
||
|
- Fix dynamic target and update API version in Makefile.
|
||
|
- Require GCC for shared and dynamic library building.
|
||
|
- Include ctype.h header in lmplatform.h for WIN32 platform.
|
||
|
|
||
|
2006.283:
|
||
|
- Add function msr_normalize_header() to update the FSDH and
|
||
|
blockettes with values at the MSRecord level.
|
||
|
- Add 'normalize' flag argument to msr_pack_header() control the
|
||
|
calling of msr_normalize_header() when packing.
|
||
|
- Change the MSRecord element 'private' to 'prvtptr' to avoid
|
||
|
collision with the C++ reserved word.
|
||
|
- Add a 'quality' flag argument to msr_srcname() to control the
|
||
|
addition of the quality indicator to the srcname.
|
||
|
- Move MS_ISVALIDHEADER(X) macro to libmseed.h for general use; this
|
||
|
macro tests for valid SEED data record signatures and is used for
|
||
|
detection of data records when reading data from files.
|
||
|
- Remove two redundant tests of swapflag in Steim-1 decompression.
|
||
|
- Declare starttime in msr_starttime() as hptime_t instead of double,
|
||
|
testing indicates that this never caused a problem in practice.
|
||
|
- Update example programs for API changes.
|
||
|
- Add -fPIC to GCCFLAGS in Makefile.
|
||
|
- Remove declaration for non-existent ms_verify_header() in libmseed.h
|
||
|
(thanks LLoyd Carothers).
|
||
|
|
||
|
2006.251:
|
||
|
- Add correct swapping of fsdh.numsamples and fsdh.data_offset,
|
||
|
problem and fix reported by Doreen Pahlke (thanks!). This fixes
|
||
|
packing of data when packing to a byte-order opposite of the host
|
||
|
machine.
|
||
|
|
||
|
2006.208: version 1.8
|
||
|
- Fix memmove bounds for out-of-time-order data additions in both
|
||
|
mst_addmsr() and mst_addspan().
|
||
|
- Fix memory leak in mst_pack() by freeing the temporary MSRecord
|
||
|
when no template is used.
|
||
|
- Add get_errorstr() function in lookup.c to return text descriptions
|
||
|
for specified libmseed return/error codes.
|
||
|
- Add gcc32, gcc32debug and gcc64debug targets to Makefiles.
|
||
|
|
||
|
2006.182: version 1.7
|
||
|
- Add MS_WRONGLENGTH error code and have msr_unpack() and the
|
||
|
file reading routines return it when the read length does not match
|
||
|
length specified in the Blockette 1000. This most commonly occurs
|
||
|
when either the specified record length or the length of the first
|
||
|
record is auto detected and the following record lengths assumed
|
||
|
do not match the actual records.
|
||
|
- Use MS_ISRATETOLERABLE macro in mst_groupsort() to compare the
|
||
|
sampling rates of adjacent trace segments. This is how sampling
|
||
|
rates are compared in other routines and will avoid problems
|
||
|
associated with testing the equality of floating point values.
|
||
|
|
||
|
2006.173:
|
||
|
- Remove some of the useless error codes.
|
||
|
- Steim compression integrity check failure and sample count
|
||
|
mismatch are not fatal unpacking errors, only warnings are printed.
|
||
|
|
||
|
2006.172:
|
||
|
- Changed return type of ms_readmsr() to int and added a pointer
|
||
|
to a pointer to an MSRecord to the arguments. Function now returns
|
||
|
status/error codes.
|
||
|
- Changed return type of ms_readtraces() to int and added a pointer
|
||
|
to a pointer to an MSTraceGroup to the arguments. Function now
|
||
|
returns status/error codes.
|
||
|
- Changed return type of msr_unpack() to int. Function now
|
||
|
returns status/error codes.
|
||
|
- Changes to many internal functions to support the new unpacking
|
||
|
error code bubble.
|
||
|
- Removed the MSRecord.unpackerr element as it is now unneeded.
|
||
|
- Found and fixed bug resulting in the assumption that all sample
|
||
|
sizes were 8 bytes (which would usually be wrong) during unpacking.
|
||
|
|
||
|
2006.124: version 1.6.3
|
||
|
- Fix (int *)packedsamples handling for packing routines.
|
||
|
- Fix compilation under Open Watcom (Win32).
|
||
|
|
||
|
2006.122: version 1.6.2
|
||
|
- More fixes for sampling rate == 0 when calculating the sample
|
||
|
period.
|
||
|
|
||
|
2006.121: version 1.6.1
|
||
|
- msr_endtime() now checks that the sample count is greater than
|
||
|
zero. If the sampling rate or sample count is less than or equal
|
||
|
to zero msr_endtime() returns the starttime.
|
||
|
|
||
|
2006.115: version 1.6
|
||
|
- Rename mst_heal() to mst_groupheal().
|
||
|
- Change examples for ms_readtraces() in documentation that implied
|
||
|
an incorrect return type.
|
||
|
- Small changes to error messages for clarity (e.g. add file read
|
||
|
offset, print sample types as char not int).
|
||
|
- Fix offset determination for packed files and files without
|
||
|
blockette 1000s.
|
||
|
|
||
|
2006.107:
|
||
|
- Add MS_ISVALIDHEADER macro to fileutils.c, verifies that a
|
||
|
specified buffer contains a valid fixed section data header.
|
||
|
- ms_find_reclen(): moved to fileutils.c
|
||
|
- ms_find_reclen(): More data record verification by checking
|
||
|
for valid time values (e.g. 0 <= hour <= 23 ).
|
||
|
- ms_find_reclen(): Detect record lengths even when no blockette
|
||
|
1000 is found by reading the next 48 bytes from the file and
|
||
|
looking for another record header or EOF. This check is not
|
||
|
performed if the specified FILE pointer is NULL. The original
|
||
|
file read position is restored. This required adding another
|
||
|
argument: FILE *fileptr.
|
||
|
- Change output of msr_print() to include record length for
|
||
|
the lowest detail output (single line per record).
|
||
|
- Change example msview program to autodetect each record by
|
||
|
default.
|
||
|
|
||
|
2006.082: version 1.5.2
|
||
|
- Make msr_pack() emit a warning with the function pointer to
|
||
|
the record_handler() is not set instead of bombing out. The
|
||
|
packed record is not accessible any other way.
|
||
|
- Make the packedsamples argument to msr_pack() optional, the
|
||
|
pointer can be NULL if this information is not needed.
|
||
|
- Modify ms_readmsr() to be able to read packed files which are
|
||
|
indexed files used internally at the IRIS-DMC and probably no
|
||
|
where else.
|
||
|
- Add lmp_fseeko() portable function (used in fileutils.c).
|
||
|
|
||
|
2006.079: version 1.5.1
|
||
|
- Add file name check in ms_readmsr() to make sure subsequent
|
||
|
reads are done on the same file. If the function is called with a
|
||
|
different file name than the file that is currently open the
|
||
|
current file will be closed and the new one opened and an error
|
||
|
message printed.
|
||
|
- Change mst_srcname to include the data quality code in the
|
||
|
srcname if it is non-zero.
|
||
|
- Remove the data quality code specifics from mst_print* functions
|
||
|
as it is now included in the source name.
|
||
|
|
||
|
2006.076: version 1.5
|
||
|
- No changes, just stamp 1.5.
|
||
|
|
||
|
2006.058:
|
||
|
- Change structure names:
|
||
|
* Trace -> MSTrace
|
||
|
* TraceGroup -> MSTraceGroup
|
||
|
* MSrecord -> MSRecord
|
||
|
A bothersome change, but it will ease inclusion into source
|
||
|
base of other libraries, etc.
|
||
|
- Change struct fsdh.drec_indicator to fsdh.dataquality.
|
||
|
- Change MSRecord.drec_indicator to MSRecord.dataquality.
|
||
|
- Add MSTrace.dataquality element.
|
||
|
- Add data quality matching flag arguments to ms_readtraces()
|
||
|
and mst_addmsrtogroup() to control matching of data qualities.
|
||
|
- Add data quality value arguments to mst_findmatch() and
|
||
|
mst_findadjacent() to control matching of data qualities.
|
||
|
- Modify mst_printtracelist() and mst_printgaplist() to include
|
||
|
data quality flags in their output when they have been set.
|
||
|
|
||
|
2005.336: 1.4.5
|
||
|
- Improve the data record verification in ms_find_reclen() to
|
||
|
improve the detection of non-data versus data records. In
|
||
|
particular the routine now requires a record to start with
|
||
|
6 ASCII digits followed by a valid data record indicator
|
||
|
followed by either a space or NULL character (even though
|
||
|
a NULL here is not valid SEED).
|
||
|
- Fix mst_groupsort for near srcname matches.
|
||
|
|
||
|
2005.325: 1.4.4
|
||
|
- Add end time sort level to mst_groupsort(), now the function
|
||
|
will sort on: source name, sample rate, start time and
|
||
|
descending end time in that order.
|
||
|
|
||
|
2005.315: 1.4.3
|
||
|
- Include WIN32 define for strcasecmp->_stricmp.
|
||
|
- Fix typo in blockette 200 printing.
|
||
|
|
||
|
2005.300: 1.4.2
|
||
|
- Include sys/types.h for Win32 systems in lmplatform.h and
|
||
|
do not typedef off_t.
|
||
|
|
||
|
2005.299: 1.4.1
|
||
|
- In mst_findadjacent() do not perform the time and sample
|
||
|
rate tolerance checks if the tolerance is specified as -2.0.
|
||
|
- Remove the msi.c example program, it has diverged from the
|
||
|
separate released msi.
|
||
|
|
||
|
2005.292: 1.4
|
||
|
- In mst_addmsr() and mst_addspan() test if data sample
|
||
|
memory needs to be moved before moving, allows adding an
|
||
|
msr to a trace which has no data samples (e.g. a flushing
|
||
|
pack has been done).
|
||
|
- Do not try to pack Traces with numsamples==0 in
|
||
|
mst_packgroup().
|
||
|
|
||
|
2005.289:
|
||
|
- Add check for sample count mismatch and decrement
|
||
|
mst->samplecnt when packing in mst_pack().
|
||
|
- Free mst->private in mst_init().
|
||
|
|
||
|
2005.271: 1.3
|
||
|
- Add lmplatform.[ch] to hold platform dependent defines
|
||
|
and portability routines.
|
||
|
- Create lmp_ftello() portable routines and use it.
|
||
|
- Change all uses of fopen() to include a 'b' in the mode
|
||
|
in order to open files in "binary" mode on Win32.
|
||
|
- Add Makefile.wat for Open Watcom's wmake.
|
||
|
- Add Makefile.win for Microsoft's nmake.
|
||
|
- Test using Open Watcom 1.3 under Win32 (Windows XP).
|
||
|
- Add 'dynamic' target in Makefile to build a dynamic lib
|
||
|
on Mac OSX.
|
||
|
|
||
|
2005.269: 1.2
|
||
|
- Update many unpacking routines so that the MS_SAMPMISMATCH
|
||
|
error code is correctly returned and that none of the errors
|
||
|
are show stoppers, it is left to the application to decide.
|
||
|
- Remove error message when read fails during detection, the
|
||
|
end of the file is simply that, no error.
|
||
|
- Fix definition of MS_EPOCH2HPTIME and MS_HPTIME2EPOCH in
|
||
|
ms_time.3 man page.
|
||
|
- Change int64_t types to hptime_t types in documentation.
|
||
|
|
||
|
2005.203: 1.1
|
||
|
- Add 'chainpos' argument to msr_addblockette() to control
|
||
|
which end of the blockette chain the blockette is added to.
|
||
|
- Change msr_pack() to add any missing 1000 Blockettes to
|
||
|
the end of the blockette chain.
|
||
|
|
||
|
2005.201: 1.0 Final
|
||
|
- Change version of example programs so they don't conflict
|
||
|
with future, non-example versions.
|
||
|
- Generate links to man pages and tar up a source package.
|
||
|
- No library code changes since pre6.
|
||
|
|
||
|
2005.173: 1.0pre6
|
||
|
- Set MSrecord->reclen to -1 in msr_init() to trigger
|
||
|
the default value in msr_pack(), etc.
|
||
|
|
||
|
2005.157: 1.0pre5
|
||
|
- Fix off-by-one error in number of samples for overlaps.
|
||
|
|
||
|
2005.146: 1.0pre4
|
||
|
- Add check for an UNPACK_DATA_FORMAT_FALLBACK environment
|
||
|
variable that defines a fallback format for when no encoding
|
||
|
format is specified in the data record (no blkt 1000).
|
||
|
- Set a default format fallback encoding of 10 (Steim 1).
|
||
|
If this default gets invoked, the byteorder will fallback
|
||
|
to big-endian if it has not been specified.
|
||
|
- Change the MS_EPOCH2HPTIME(X) and MS_HPTIME2EPOCH(X)
|
||
|
macro definitions to not include a semi-colon, duh.
|
||
|
- Add a 'timeformat' flag to the mst_printtracelist() and
|
||
|
mst_printgaplist() functions that indicates which format
|
||
|
the time stamp will be in: SEED time, ISO time or epoch.
|
||
|
- Add an option to msi to specify the time format in trace
|
||
|
and gap listings.
|
||
|
|
||
|
2005.117: 1.0pre3
|
||
|
- Add check for the following environment variable to force
|
||
|
the data encoding format when unpacking:
|
||
|
UNPACK_DATA_FORMAT = data encoding format
|
||
|
- Add '-e' option to msi/msrepack to specify the input data
|
||
|
encoding format allowing them to work with plain data records.
|
||
|
- Define _LARGEFILE_SOURCE in fileutils.c to get ftello()
|
||
|
without a compiler warning on Linux.
|
||
|
- Fixup swapping when byte order is forced on LE arch.
|
||
|
|
||
|
2005.116: 1.0pre2
|
||
|
- Add checking for the following environment variables that
|
||
|
can be used to force the byte-order for the header and data:
|
||
|
PACK_HEADER_BYTEORDER = 0 or 1
|
||
|
PACK_DATA_BYTEORDER = 0 or 1
|
||
|
UNPACK_HEADER_BYTEORDER = 0 or 1
|
||
|
UNPACK_DATA_BYTEORDER = 0 or 1
|
||
|
- Change the fpos argument to ms_readmsr() to be type off_t.
|
||
|
- Change the calls to ftell() in ms_readmsr() to ftello() to
|
||
|
return type off_t, this is required for large file support
|
||
|
where 64-bit offsets are needed.
|
||
|
- Change the header byte order determination to check for
|
||
|
start years between 1920 and 2020.
|
||
|
- Add gcc64 target to Makefile and example/Makefile.
|
||
|
|
||
|
2005.102: 1.0pre1
|
||
|
- Change msr_pack() to use a 'D' record indicator by default.
|
||
|
- Cleanup examples directory.
|
||
|
|
||
|
2005.097: 0.9.9b
|
||
|
- Remove '-g' from common GCCFLAGS in examples/Makefile.
|
||
|
- Small update to ms_time.3 to clarify that MS_HPTIME2EPOCH
|
||
|
can be used to get both a truncated integer epoch or a
|
||
|
double precision epoch.
|
||
|
|
||
|
2005.093: 0.9.9a
|
||
|
- Remove '-g' from common GCCFLAGS in Makefile.
|
||
|
|
||
|
2005.091: 0.9.9
|
||
|
- Fix printing of Blockette 500.
|
||
|
- Change macro defines to upper case macro names.
|
||
|
|
||
|
2005.080: 0.9.8
|
||
|
- Add ms_isratetolerable() macro to perform the default
|
||
|
sample rate tolerance check. Update appropriate functions.
|
||
|
- Fix sample rate checking in mst_print*() functions.
|
||
|
- Fix msi example code so negative min/max gaps (overlaps)
|
||
|
are parsed correctly from command line.
|
||
|
|
||
|
2005.069: 0.9.7
|
||
|
- Change mst_print() to mst_printtracelist() and add
|
||
|
mst_printgaplist().
|
||
|
- Both of the above routines now report gaps as the time
|
||
|
of the first sample after the gap minus the time of the last
|
||
|
sample before the gap, sample "coverage" time is no longer
|
||
|
included.
|
||
|
- Make mst_groupsort() sort on source->samplerate->starttime
|
||
|
instead of source->starttime.
|
||
|
- ms_readmsr() will now skip non-data records when doing
|
||
|
record length autodetection.
|
||
|
- Add ms_hptime2epoch() macro to convert hptimes to
|
||
|
Unix/POSIX epoch times, integer truncation, no rounding.
|
||
|
- Add macro ms_isdataindicator() which tests a character
|
||
|
for a valid data record header indicator (D,R,Q,etc.)
|
||
|
- Example program msi now takes -min and -max options to
|
||
|
specify min and max gap/overlap to display in gap list.
|
||
|
|
||
|
2005.047: 0.9.6
|
||
|
- Add ms_epoch2hptime() macro to convert Unix/POSIX
|
||
|
epoch times to hptimes.
|
||
|
|
||
|
2005.025: 0.9.5
|
||
|
- Add 'skipnotdata' flag argument to ms_readmsr() and
|
||
|
ms_readtraces() and update their respective man pages.
|
||
|
- Shuffle order of arguments for ms_readtraces(), no big
|
||
|
deal but since the interface was changing anyway...
|
||
|
|
||
|
2005.004: 0.9.4
|
||
|
- Change printing of sample rates to print higher precision
|
||
|
so that small differences in rates are noticeable.
|
||
|
- Change fixed section header printing of sample rate to be
|
||
|
the actual calculated value using the factor and multiplier.
|
||
|
- Spell check README/INSTALL files and man pages.
|
||
|
- Remove WIN32 Makefiles and hooks in example sources.
|
||
|
- Minor printing fixups in the example code msi.c.
|
||
|
|
||
|
2004.352: 0.9.3
|
||
|
- Change ms_readmsr() to search valid record lengths up
|
||
|
to 8192 bytes when auto detecting the record size.
|
||
|
- Change msr_addblockette() to always add Blockette 1000s
|
||
|
to the beginning of the blockette chain and others to the
|
||
|
end of the blockette chain.
|
||
|
|
||
|
2004.349:
|
||
|
- Fix reduction of precision when unpacking doubles.
|
||
|
- Change typo in pack.c from 'Unpacking' to 'Packing'.
|
||
|
- Improve printing of float/double samples in msi.
|
||
|
|
||
|
2004.342: 0.9.2
|
||
|
- Add proper rounding for span calculation in msr_endtime().
|
||
|
|
||
|
2004.341 - Release version 0.9.1
|