HISTORY since release of v1015c

 2013/06: Version 101.6 Released

        * UPDATE: all "Using SAC" HELP files
        * UPDATE: increased defsult linewidth in sgftops to match saveimg output
        * UPDATE: Rewrote convolve help page, which had been confusing
        * Replaced the obsolete macros/ subdirectory with a sample set that is up to data
        * Removed the need for a 0911 error message and removed reference to it
        * UPDATE: Removed all reference to the obsolete NEWS help file
          command is still there, but its message is now current
        * UPDATE: Made changes so that SAC could build/work with x86 Solaris 11
        * BUG FIX: Removed legacy POSIX functions
        * 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
        * FEATURE: Fill postive and negative portions of seismograms
             See HELP LINE for details
             Tests added
        * FEATURE: New Command Parser
             Old behavior is available using the "MATHOP OLD" command
             Behavior is the same as original parser in that it is case-insensitive
             Inline math expression do not require spaces
             Numbers are recognized as numbers and stored as floating point values (doubles)
             Inline variables are parsed correctly: %blackboard, &1,headervar, and %macrovars
             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 message
             Allow for optional commas for sac_math and minimum/maximum
                 Can only use numbers, sac_math, constants and variables as arguments
             Changed cfmt("string$",#) to cfmt("string",#)
             Added lcchar_base() that returns a string at all costs (Original Input)
             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 including [default]
             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 retrieval
             Strings are stored as strings, numbers stored as floating point values (doubles)
             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 occurs
             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, xwprmt
             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 characters
        * 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(x) 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: removed help from list of tests of valgrind is run
 runs quietly with valgrind and suppresses X11 Font Errors
          Added valgrind.x11.suppress file to suppress X11 Font Errors
 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);
        * 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
        * BUG FIX: Return with error if Freq, Amplitude or Phase is NULL 
        * BUG FIX: If input string the strcasestr_bsd() is NULL reutrn NULL 
        * 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() 
        * 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 
         * 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 
         * BUG FIX: Added error check for unknown frequency sampleing 
         * 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 
         * 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

        * BUG FIX: src/sam/xconvolve.c corrected read outside array limits
           similar correction in src/sam/xcorrelate.c