History v101.6 since v101.5c¶
This is a reverse chronological listing of enhancements and bug fixes made since
SAC version 101.5c
Early 2013¶
- Updated version to 101.6
- UPDATE: all Using SAC HELP files
- UPDATE: Made changes so that SAC could build/work with x86 Solaris 11
- UPDATE: Removed legacy POSIX finctions
- UPDATE: Disabled PNG and XFT for default builds
- To turn on PNG: ./configure --enable-png
- To turn on XFT: ./configure --enable-xft - UPDATE: Transition from CVS to SVN
- seiscode.iris.washington.edu/projects/sac-dev - FEATURE: Fill postive and negative portions of seismograms
See HELP LINE for details
Tests added - FEATURE: New Command Parser
Old behavior is availale using the "MATHOP OLD" command
Behavior is the same as original parser, case-insensitive
Inline math expression do not require spaces
Numbers are recognized as numbers and stored as floating point value
Inline variables are parsed correctly: %blackboard, &1,headervar, an
Unexpected characters tested for after: if test, elseif test, else
Routines in src/cpf now use this new parser
Added arg_msg( str ) to print a caret(^) at the current token with a
Allow for optional commas for sac_math and minimum/maximum
Can only use numbers, sac_math, constants and variables as argum
Changed cfmt("string$",#) to cfmt("string",#)
Added lcchar_base() that returns a string at all costs (Original inp
Replaced processline() with process_line()
Removed process*() functions and get*args()
Removed kmcom.kcom references
Force mesage command to not shrink numbers
Inline String functions have access to variables, file headers
Reply function now works
Uses new VARS subsystem - FEATURE: New Command MATHOP
Controls whether Math Operators have a precedence
Introduced for compatibility with parser in earlier versions.
See help files for INLINE and MATHOP for details - FEATURE: New VARS subsystem
Uses a set of hash tables for easy storage and retreival
Strings are stored as strings, numbers stored as floating point valu
Behavior is the same as the original VARS subsystem
getbb all now outputs variables in alphabetical order
Quoted Strings should now be either "stuff" or "stuff[EOL] - FEATURE: Modified -enable-debug to -g -Wall -Wextra
- FEATURE: Add --enable-coverage and make coverage, requires lcov
- FEATURE: SAC_DIE_ON_ERROR=1 will cause make check to stop when an error occur
Default is to continue and do all tests - FEATURE: SACTESTS=testname will only do a single test [existed already]
- FEATURE: Spaces are now allowed in filenames
Removed kmdfm.kdflrq variable
Removes need for kmdfm.kdflrq variable
Removed cmdfm.nwfl variable (Number of waveforms to write)
Removed kmdfm.kwfl vairbale (List of waveforms to write)
If no data file list (DFL) is specified, the list is undefined.
Filename now appears after time for Binary Operations Module
Expand wildcards in filelists for SUDS files
Expand wildcards in filelists for CSS and GSE files - FEATURE: Command parsing all moved to saccommands()
including macros and ReadExecutePrintLoop - FEATURE: Revision of code to handle filenames with spaces
- FEATURE: Commands are split on semicolons in main()
- BUG FIX: t/sacio now uses only libsacio.a
- BUG FIX: bell() added to libsacio.a
- BUG FIX: Buffer overflow fixes in acc.c, lll.c, and calccontrlink.c
- BUG FIX: Vertical alignment recognized in gettextjust
- BUG FIX: Test zam now avoids sin(pi * n) due to different implementations
- BUG FIX: Fix to externs not promoted to double
- BUG FIX: Removed files, including src/coda/C_* zinfo, zmemad, copy, xwpr
gc.h moved to sm_gc.h to avoid conflict with system installed gc.h (
Many obsolete files removed, some were probably missed - BUG FIX: convcolorname() returns -1 if colorname not found
Error handling in color improved - BUG FIX: GSE Files now recognize and parse the STA2 line
- BUG FIX: Added multiple calls to free memory as the program exits
- BUG FIX: FUNCGEN SINE results are different than older versions, numerical
- BUG FIX: findcommand() compares string to full command names, not first 8
- BUG FIX: xabout() fixes bug for Display Copyright
- BUG FIX: msg() where processed commands had an extra ==>
- BUG FIX: msg() where string is now initialized to NULL
- BUG FIX: Moved bbfswap routines to vars/bbf.c
Moved #defines values and struts to bbf.h - BUG FIX: Added memory of past files to ReadSpectral
- BUG FIX: Added color_parse() and color_parse2() functions
Parse a color number or color name - BUG FIX: Added string utilities
- lstrip, rstrip, strip, strcut - UPDATE: In the Hilbert help file, a limitation of this application
is described. - BUG FIX: Removed the faq help file because it was out of date and
not very relevant - ENHANCE: Added a time-shift macro to the lowpass help file
- BUG FIX: Corrected errors in KEVNM when there are > 8 characters
- A. Kasahara - ENHANCE: More explicit error messages for input format errors in
polezero file. - BUG FIX: FAP option in TRANSFER error when FAP file had freq(1) = 0.
Fixed src/icm/fap.c so does not include zero frequency. - BUG FIX: Spectrogram output when changing ymin-ymax range
- UPDATE: In saveimg, for PS and PDF, do not draw background fill if
it is white. This means that the option alpha off must be used in
programs like imagemagick/display. - UPDATE: Minor changes to the 10 linestyles so consistent among all
graphics devices (previously, only four were available on some
devices). Lengthened line segments in fileid location --
previously too short to distinguish among them - UPDATE: Update to Readme.buildsac to incorporate information
regarding memory checkers and changes to the source affecting the
consistency of the testsuite when
compiling with either gcc, clang, or optimized version of gcc or clang
- gcc 4.2.1 (Apple Build 5666)
- clang 3.1 - UPDATE: Added FREE macro to check if memory is defined
- UPDATE: Added upward-pointing vertical direction to file_format
- C.Tape - UPDATE: Updates from v101.5c from A. Snoke
- Documentation Updates
- Help File Updates
- pltext depended on uninitialized values:
gdm/text.c -- initialize xdel and ydel
textbox: make sure text strings exist before plotting and using
set filename to the first display id, always
- wsac3() changed to wsac0() is doc/examples/
- File pointer did not get put back to the beginning of the file
in PDF writing
- Print warning for interpolate if new delta is greater than
current delta and delta is even
- If master file is the shorter length file, then a out of bound error
occurs, possibly causing a segmentation fault. Fix by only copying
the length of the file, not the maximum possible length of any file. - UPDATE: Added alternative system() command to not stall in valgrind
- UPDATE: pytest.sh removed help from list of tests of valgrind is run
pytest.py runs quietly with valgrind and suppresses X11 Font Errors
Added valgrind.x11.suppress file to suppress X11 Font Errors
pytest.py displays the file could not read if it does not exist - UPDATE: Changed zfiles to use glob() rather than popen("ls -d")
as valgrind stalls on popen(), it is cleaner than using a piped command - UPDATE: Added SACTESTS and SACVALGRIND as options to
Run individual tests SACTESTS=testname
Run tests within valgrind SACVALGRIND=1 - UPDATE: Moved rstrip() and lstrip() into bot/indexb.c
- co/zopens.c and co/znfiles.c now take a filename
copy it and strip all whitespace to the right. - UPDATE: Introduction of strcut() to extract a string from a
Fortran character array
Results is null-terminated and user must free the string
Removed many of the messy constructs like:
strncpy((str = malloc(ic2-ic1+2)),in+ic1,ic2-ic1+1);
str[ic2-ic1+1]='/0'; - BUG FIX: gcc -Wall -Wextra -O2,
clang Address Sanitizer, valgrind, clang Static Analyzer
- Pointer Deferences
- Memory Leaks
- Comment out / remove sections of unused code
- Initialize Variables
- Fixes for gcc -Wextra, mostly comparision of signed and unsigned int
- Fixes to correct gcc -Wall warnings except in libtau
- Fixes to warnings and errors from clang v1.7 (LLVM2.9) - BUG FIX: Line Styles:
- Make the maximum number of linestyles to loop over to be 10, it was 4
- Modify PDF, PS, and X11 to have the same line styles as SGF.
- Always use drawpoly in src/gdm/polyline.c otherwise linestyles
are not plotted correclty
Linestyles were destroyed as each point is plotted individually
- PNG will match X11 - BUG FIX: Postscript Plotting: Changed ps_moveto() and ps_lineto()
from int to float for "more correct" and "better looking" plots - BUG FIX: FileID
Edit location and length symbols and line segments in FILEID for
PDF and PS
Testsuite should include tests of the output formats
- line inc on
- symbol inc on - BUG FIX: Fix for failure on strncpy() that exceeds the size of
destination string
in src/fdm/rcdi.c for KEVNM. Uses memcpy() - BUG FIX: Fix warnings about "error: initializer element is not
constant" (llvm-gcc-4.2 on OSX 10.7) - BUG FIX: Initialize runtext in src/co/zrun.c so that subscpy() can
determine the length of output string - BUG FIX: changestring() and deletestring() now do not call strcut() if
the start is after the end (or the end if before the start)
strcut() reports errors directly to standard output - BUG FIX: Fix logic in funcgen command as to how time in calculated
to avoid round off-errors. Has implications to tests that use the
funcgen command to generate data.
Round off error was also fixed in
- src/scm/lifite.c (linear least squares fit)
- src/scm/xrtr.c (remove trend) - BUG FIX: Check output of dblMergeTrees(). If output is the tree to
be merged, then do not delete the tree as the parent tree did not
exist. If the output and the merge tree are different then delete
the tree. - BUG FIX: Fix to buffer overruns found using clang Address Sanitizer
- BUG FIX: Fixes for memory leaks and pointer dereference in evalresp
- BUG FIX: Realloc correction in src/SeisMgr/gse/GSEWaveforms.c
- BUG FIX: Set *ncurves = jdx+1 as the number of phases increases.
The total number of phases is required to know how many to
release at the end. src/sss/xtraveltime.c - BUG FIX: Macro KYES did not work if the KEY was Capitialized
not case sensitive in
src/ncpf/macrokeyword.c - BUG FIX: Return with error if Freq, Amplitude or Phase is NULL
src/icm/fap.c - BUG FIX: If input string the strcasestr_bsd() is NULL reutrn NULL
src/icm/polezero.c - BUG FIX: Fix typo ygridmn -> ygrdmin in src/gtm/ylinaxis.c
- BUG FIX: Fix call to setlinestyle() in src/gtm/xlogaxis.c
- BUG FIX: Changed xlf to xloc (typo)
- BUG FIX: Changed unused to 1.0 in call to setsgfsize()
src/gam/xsgf.c - BUG FIX: Do not putfil() if there is an error in src/exm/xfg.c
- BUG FIX: Error recovery in src/dfm/xsort.c
- BUG FIX: Return if pick prefs file is empty in src/dfm/getprefs.c
* BUG FIX: Logic reorganization in src/dfm/defcut.c
- stop point code modified heavily
- Affect cutim commands currently no tests * BUG FIX: Fix to $Filename,HeaderVariable to find a name or not
src/dff/gethv.c * BUG FIX: Removed rntused and replace with 1.0 in src/dbh/pltplr.c * BUG FIX: Added error check to make sure origin was with data array
src/dbh/alias.c * BUG FIX: Added error check for unknown frequency sampleing
src/dbh/afr.c * BUG FIX: Fix typo realm -> realmx and removed realm
variable in src/cpf/lkrrcp.c * BUG FIX: Ensure error reporting doesn't fail if the command stack
is empty in src/cpf/cfmt.c * BUG FIX: Moved call to gettextsize()
src/countouring/plotcontdata.c to initialize widthsave and heightsave * BUG FIX: Changed src/coda/get_input() to accept and return
global_params so variables can be retrieved
Calls to calc_envelopes now have all arguments defined,
see npts and ndx2 * BUG FIX: Added necessary branch branches { } around the
'find the filename' and
'write the file' statements in src/coda/calc_coda_amplitudes.c * BUG FIX: Removed possible third branch in src/coda/C_overlap.c
would cause nload1 to be undefined * BUG FIX: Check input arguments are > 0 in uniq() in src/co/select.c * BUG FIX: Return if nlist <= 0 in src/bot/wrlist.c * BUG FIX: Check to make sure return from indexb is > 0
src/bot/lequal.c * BUG FIX: Rebuilt cmplxang(complexf c) to handle all cases properly * BUG FIX: Changed undefined badindirect flag to true error code
- 1206 VARS option not currently implemented: * BUG FIX: design() and inspect() functions now return with output error
if the analog filter prototype is of unknown type * BUG FIX: sgftops
- colortable code [never used] not compiled in: see #define COLORTABLE
- nbuffer changed from long to size_t and set before malloc statement
- buffer initialized to all zeros following malloc
- buffer free()'d after everything is done
- presisent 'count = buffer[i++];' statements removed,
count is not used anywhere in the code
- unused width and height variables not set in 'Hardware text size' * BUG FIX: Fixes from Richard Godbee
- fix case statements for header field T2 through T9 in iztypeMessage()
- fix use-after-free in specplot()
- fix logic error in getResponse() when freeing memory
- fix unterminated comment block in gdm/settextfont.c
- refactor taper() to simplify flow and prevent
return of uninitialized variables
- fix error-handling problems in sgf_print() and tmpfile_create()
tmpfile_create() would've passed NULL to mkstemps() if
strdup() failed.
sgf_print() would've passed NULL to unlink if
tmpfile_create() failed.
It also would've returned an uninitialized variable (retval)
if sgf_to_ps() returned a non-zero value.
- fix error-handling problems in sgf_to_ps() and ps_print()
Neither function checked to see if asprintf() succeeded.
ps_print() could've returned an uninitialized variable
if sac_print_disable
- fix logic error in pickwindows(), remove unused variable lxlims
- fix possible use of uninitialized vars,
simplify flow in xaddstack()
simplify flow in xchangestack()
simplify flow in xglobalstack()
- fix reference to uninitialized variable in xlogaxis() and ylogaxis()
- more fixes for xlogaxis() and ylogaxis()
- fix dereference of uninitialized pointer in MakeFileList() in src/
- doFile[] wasn't initialized on all flow paths in xch() in src/dfm/
- fix possible use of uninitialized variable in worlddraw()
- fix possible use of uninitialized variable in worldmove()
- initialize lempty in xppk()
- stop reading from uninitialized array, cleanup of setctable3()
- fix signed/unsigned mismatch in setctable3()
- fix uninitialized pointer dereference in encodeHeader()
in utils/bbfswap.c, It doesn't look like the code that
dealt with the "p" pointer actually did
2012/03/26
* BUG FIX: src/sam/xconvolve.c corrected read outside array limits
similar correction in src/sam/xcorrelate.c