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
		
	
| 
								 
											2 years 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
							 |