Antelope Version 4.9 Release

May 2007


We didn't make it to Solaris 10 this year, but we are running it on
several machines at BRTT now, and plan to switch to Solaris 10
exclusively soon after the release.  According to Sun, the last shipment
of Solaris 8 was February 2007, and it should not be installed on
any new systems at this point.

The linux version of this release is still under SUSE Linux 9.3, but
the next release will use SUSE Linux Enterprise Desktop 10, which Novell
claims to support for several years into the future.  Linux 9.3 is no
longer supported.

We are experimenting with a Sun opteron system.  This is likely to 
become our recommended hardware platform for Linux systems.  If there
is sufficient interest, we may next year provide a version of Antelope
for Solaris on the opteron machine.

On the Macintosh, this Antelope release uses Tiger, and includes an
intel version.  We have not made an attempt to make Universal
applications, so the intel and powerpc versions are different.
This is very likely the last year we will provide a powerpc version
of Antelope. 

Matlab is updated to the most recent version on Mac and Linux; 
the most recent version doesn't run under Solaris 8, so we
stuck with the previous version.  You should be able to recompile
with the new version if you are running it yourself.

The version of perl differs: on most architectures, it is 5.8.8.
However, on Solaris, perl/tk does not compile nor run correctly
with perl 5.8.8.  It's unclear why, but seems to be related to memory
problems.

Tcl/tk is 8.4.4 across all platforms. We will probably move to 8.5
next year.

There are still problems with the case insensitivity of the default
Mac filesystem, epitomized by the failure to distinguish

    $ANTELOPE/data/tables/dblocsat/iasp91.PP 

and 

    $ANTELOPE/data/tables/dblocsat/iasp91.pP

You can get around this type of problem by creating your filesystem as
a case sensitive filesystem, or by creating a case sensitive
filesystem in a file inside your standard HSFS filesystem, using
hdiutil.  Either approach has its own problems, however.

The fortran used to produce this release on Darwin is gfortran, which
has various quirks with reading and writing strings, compared to
previous g77 compilers.  These problems have not been ironed out.

Thanks primarily to Kent Lindquist and Jennifer Eakins, the man pages
have had a thorough reading for grammatical, spelling and clarity. 
You'll notice a considerable improvement.

The format change to snr changed the null value from "-1.00" to "-1",
which can result in multiple complaints from dbverify, as well as less
likely failure by dbdelete to find a null record in the arrival table,
because it contains the earlier null value.

You should be able to fix any problems with the following command:

    dbset -cv db.arrival snr 'snr == -1' NULL

We've made an attempt to eliminate the use of 1024 instead of 1000 as
a conversion factor for kbytes, Mbytes, and Gbytes.  The k, M, and G
prefixes should now have their international standard meaning, not the
bastardized power of two meaning.  However, note that df uses 1024 as
the conversion factor, and memory is usually quoted in units of 1024
bytes.

There's a new datatype UE which allows placing floating point ascii
time ordered data points (time and value) in a waveform file. 
Interpolation is used to get equispaced data points, allowing this to
be displayed in dbpick, for example.  However, there is still a good
deal of work, in particular: 

 * a packet type which allows floating point values with time tags
 * an orb2db like program for recording these packets into waveform files

There is a new man page debugging(5) which makes some suggestions for
how to debug hard system problems.  We hope this may be helpful in
further isolating and defining mysterious failures.  It's often to
diagnose problems through email, and much better to resolve them or at
least collect as much information as possible when an event occurs. 
Please take a look at this new page.  (Make suggestions for how to
improve it).

q3302orb went through another large set of changes including support
for the new Paroscientific digital high resolution pressure sensors
through the Q330's serial interfaces.  See the q3302orb release notes
for more detail.

dlmon went through a complete rewrite and is now implemented using
perltk.  Consequently, it runs about 20 times faster than the old
version.  It also looks a lot different and has an overall different
user interface.  The new version has been developed mainly to support
the new Q330 and Q330HR digitizers, although it still should work with
the legacy dataloggers.  For those who like the old version, it has
been migrated to old_dlmon.

orbassoc/dbgrassoc were modified so that they will run a traditional
earthquake location code, such as dbgenloc, after an association has
been found.  This produces arror statistics automatically and also
allows the use of coarser grids since the final location will be
refined.  This version also includes separate channel sifters for P
and S arrivals so that P arrivals can be constrained to vertical
components and S arrivals to horizontal components.

Completely new generalized event processing programs, orbevproc(1) and
dbevproc(1), have been written to support event-based processing, such
as magnitude calculations, in both real-time ORB domains and off-line
database domains.  All of this source code has been put into the
contributed repository.  These new programs run their own imbedded
perl interpretors which are used to execute user written computational
kernels.  In this initial release computational kernels are provided
for computing Richter magnitude and traditional body wave magnitude.

Time domain waveform filtering has been generalized through the
development of a new library, wffil(3).  This library utilizes other
dynamic link libraries at run time that contain the actual filter
implementations.  The traditional Antelope digital recursion filters
have been put into a new wffilbrtt(3) dynamic link library that is
used by wffil(3).  Also, an open source code library, wffilave(3), is
provided as an example for writing user customized filtering
libraries.  Most of the Antelope programs, including orbmonrtd(1),
dbpick(1), tkdbpick(1), orbdetect(1), dbdetect(1), orbmag(1), dbml(1),
orbwfmeas(1), dbwfmeas(1), orbevproc(1) and dbevproc(1), have been
converted over to the new filtering library.

Removed:
    data_availability        db2orb                   
    dbs2n                    eworm2orb                
    extrd                    isc2db                   
    orb2eworm                orbxfer                  
    psd2db                   std_pwdx                 
    update_data_availability 

Added:
    concatpaths   corefilesok   dbcreate      
    dbevassoc     dbprelim_locs edr2db        
    ess2orb       kmi_install   manage_marmot 
    old_dlmon     orbclients    rt_baler_info 

Added contrib:
    cf                   lindquis
    checklist            lindquis
    cluster              pavlis
    cluster_cleanup      pavlis
    csi2orb              tshansen
    davis2orb            tshansen
    db2eids              lindquis
    dbarrparams          danny
    dbevproc             danny
    dbrmt                lindquis
    dlautomrc            vernon
    dlmon2snw            vernon
    editgclgrid          pavlis
    lcheapo2db           vernon
    makegclgrid          pavlis
    obsip2orb            vernon
    orbdlstat2xml        lindquis
    orbevproc            danny
    q330_location        vernon
    q330coms             vernon
    rt_daily_return      vernon
    rtrun_matlab         lindquis
    smartpick_classic    lindquis
    time_slice_db        vernon

Added examples
    orbstate.xpl
    wffilave		example of dynamic link library to extend wffil(3) interface
    php			examples using each command in the PHP interface to Datascope and orb

libraries removed:
    libgclgrid
    libseispp

new libraries:
    libwffilbrtt
    libwffilave
    libpool
    libbrttutil
    libwffil

Include file differences
  removed:
    steim.h 
  new:
    ComplexTimeSeries.h  SeisppKeywords.h     perlembed.h         
    ExternalProcessor.h  Seisw.h              xplot.h             
    MatlabProcessor.h    ant_steim.h         
    SeismicPick.h        display_marker.h    

Man page usage lines

    children pid ...
	    allow multiple pids

    dbcp 
	    added -F option to override refusal to place .. into a relative directory path

    dbdetect 
	    -onlypicks causes only the detection records with state set to "pick" to be output

    dbdiff
	    -N maxdiffs restricts output to first N differences of each type

    dbreplay
	    -u avoids adding the /@ suffix (indicating a delayed packet) to packet srcnames

    dbwebproject.1:
	dbwebproject [-v] [-p pfname] [-r DocumentRoot] [recipe]
	dbwebproject [-v] [-n] [-p pfname] [-r DocumentRoot] [recipe]

    dlmon
	removed: [-start_status {OLDEST|pktid|time}] [-start_log {OLDEST|pktid|time}]   orbname [-cmd cmdorbname]
	new:     [-mcol ncols] [-state {Icons|Multi|Single}] [-db dbname] [-subset expr] [-sort name] [-dump seconds] [-dump_image file] orbname [-cmd cmdorbname]

    heartbeat
	-N net_sta specify net_sta value for srcname

    miniseed2orb
	-p pf       specify alternate parameter file

    orbmonrtd.1:
	-tshift_time t0     specify an alternate time for the right side of window (instead of now)    
	-reverse_labels     put channel labels on right instead of left

    orbxchange
	-d database         allow looking up ip address (eg, of datalogger) in database maintained by another program

    orbxfer2
	-N net     specify an alternate for the net_sta_chan portion of the srcname; default is host name

    q330pocd
	-i local_ipaddr  
		  specify an ip-address to bind  all local UDP sockets for communication with Q330s.  Don't use this
		  unless you know what you are doing!!
    q330util
	-i local_ipaddr             
		  specify an ip-address to bind  all local UDP sockets for communication with Q330s.  Don't use this
		  unless you know what you are doing!!
	New commands:
	    ping       targetip,lport,{info|}           send a q330 ping
	    sbpwr      targetip,sn,interface,function,timeout       power control for balers
	    rqannc     targetip,sn                                  requests the Q330 "Announce" structure

    reb2db
	-d  write detections when input contains arrivals
	-v 
	-D
	-a

    rtsys
	-C eliminate cron job output from rtsys reports

    tail2orb.1
	-N net_sta  specify net_sta portion of srcname for orb packets

    truncate_log
	-f  force truncation of files sooner than 8 days previous to now

Man pages removed:
    bnssnoop.3        
    db2orb.1          eworm2orb.1       
    extrd.1           guralplocate.1    
    marmot_setup.1    orb2eworm.1       
    orbxfer.1         perlpf.3p         
    psd2db.1          std_pwdx.1        

Man pages added:
    ascii_cnt.3           bkg.3p                
    cleantext.3p          closex.3              
    concatpaths.1         corefilesok.1         
    dbcreate.1            dbprelim_locs.1       
    debugarr.3            debugchar.3           
    debugtbl.3            delx.3                
    dumptext.3p           edr2db.1              
    ess2orb.1             gbytes.3              
    getx.3                install_s99antelope.8 
    kbytes.3              kmi_install.1         
    manage_marmot.1       mbytes.3              
    namesx.3              okstr.3               
    openx.3               orbgetstash.3         
    orbstashselect.3      perlembed.3           
    pf2struc.3            pktmon_examples.5     
    ptkcolor.3p           putx.3                
    rtimbank.3h           rundbgenloc.1         
    showPktMatch.3        show_hash.3p          
    strjoin.3             touch.3p              
    trcopy.3              utility.3p            
    vaisala2orb.1         wait_until_static.3p  
    weather.1             webdbshow.3h          
    weborbstat.3h         wffil.3
    wffilave.3            wffilbrtt.3     
    writable.3p           xheap.3               

Added contrib man pages:
    Magnitude.3p         Danny
    Mbusneic.3p          Danny
    Mlrichter.3p         Danny
    cf.1                 Kent
    checklist.1          Kent
    cluster.1            Gary
    cluster_cleanup.1    Gary
    csi2orb.1            Todd
    davis2orb.1          Todd
    db2eids.1            Kent
    dbarrparams.1        Danny
    dbevproc.1           Danny
    dbrmt.1              Kent
    dlautomrc.1          Jennifer
    dlmon2snw.1          Frank
    editgclgrid.1        Gary
    evproc.3p            Danny
    examples_php.5       David
    lcheapo2db.1         Frank
    makegclgrid.1        Gary
    obsip2orb.1          Frank
    orbdlstat2xml.1      Kent
    orbevproc.1          Danny
    perldb2xml.3p        Kent
    perlpf2xml.3p        Kent
    q330coms.1           Frank
    rt_daily_return.1    Frank
    rtrun_matlab.1       Kent
    smartpick_classic.1  Kent

Parameter file differences

    /opt/antelope/4.8/data/pf/dbgrassoc.pf /opt/antelope/4.9/data/pf/dbgrassoc.pf
	lots of new options, although a 4.8 version of the parameter file should work with
	the 4.9 version of orbassoc

    /opt/antelope/4.8/data/pf/dbrecenteqs.pf /opt/antelope/4.9/data/pf/dbrecenteqs.pf
	> html_suffix html
	> region_string_prefix      Earthquake
	>   colormode       auth            # auth, prefor, age
	>   prefor_linewidth  3
	>           quakecolor red
	>           quakecolor blue
	>           quakecolor orange
	> #         quakecolor yellow

    /opt/antelope/4.8/data/pf/dbwebproject.pf /opt/antelope/4.9/data/pf/dbwebproject.pf
	many differences

    /opt/antelope/4.8/data/pf/dlmon.pf /opt/antelope/4.9/data/pf/dlmon.pf
	many differences due to rewrite of dlmon, you will need to rewrite
	any customizations that were done with the original parameter file
	to switch over to using perl script fragments instead of tcl script
	fragments

    /opt/antelope/4.8/data/pf/elog.pf /opt/antelope/4.9/data/pf/elog.pf
	> net_sta           # fill this in with network and station code to set first part of srcname when logging errors to orb

    /opt/antelope/4.8/data/pf/orbassoc.pf /opt/antelope/4.9/data/pf/orbassoc.pf
	lots of new options, although a 4.8 version of the parameter file should work with
	the 4.9 version of orbassoc

    /opt/antelope/4.8/data/pf/orb2db.pf /opt/antelope/4.9/data/pf/orb2db.pf
	eliminated 
	    flush_wf_writes                  no longer used
	added parameters to watch for filling waveform filesystem
	    path            .       # path to waveforms filesystem
	    min_freespace   10      # minimum number of megabytes available to write waveforms
	    frequency       1000    # number of packets to process between checking free space
	    sec             10      # number of seconds to sleep between checking filesystem, when stopped for space

    /opt/antelope/4.8/data/pf/orb2ew.pf /opt/antelope/4.9/data/pf/orb2ew.pf
	>   my_type                 TYPE_TRACEBUF
	>   max_tracebuf_size       4096
	>   large_tracebuf_handling send

    /opt/antelope/4.8/data/pf/orbserver.pf /opt/antelope/4.9/data/pf/orbserver.pf
	> statistics_file logs/orb_statistics # file in which to write transfer and connections info

    /opt/antelope/4.8/data/pf/orbserver_names.pf /opt/antelope/4.9/data/pf/orbserver_names.pf
	New names
	    > obsip         53456   # OBSIP data transfer
	    > poc           6690    # poc 
	    > prelim                6701    # prelim USArray orb
	    > proc          6703    # processing orb
	    > meta          6705    # USArray metadata
	    > bulletin      6707    # bulletin server
	    > usarrayTA     6715    # USArray TA data only
	    > usarrayREG    6716    # USArray contributed data only

    /opt/antelope/4.8/data/pf/q3302orb.pf /opt/antelope/4.9/data/pf/q3302orb.pf
	> shutdown_wait_time                20.0            # amount of time to wait for dataloggers to be de-registered
	>                                                   #    during a shutdown of q3302orb
	> output_time_packet                no              # output an ORB packet with a time tag from the Q330?
	>   data_serial_chan0       sc0     $DLNET_$DLSTA_SC0       # data from serial interface 0 (configurable report interval)
	>   data_serial_chan1       sc1     $DLNET_$DLSTA_SC1       # data from serial interface 1 (configurable report interval)
	>   data_serial_chan2       sc2     $DLNET_$DLSTA_SC2       # data from serial interface 2 (configurable report interval)
	>   data_serial_chan3       sc3     $DLNET_$DLSTA_SC3       # data from serial interface 3 (configurable report interval)
	>   data_serial_chan0       no      yes     mst
	>   data_serial_chan1       no      yes     mst
	>   data_serial_chan2       no      yes     mst
	>   data_serial_chan3       no      yes     mst

    /opt/antelope/4.8/data/pf/rtexec.pf /opt/antelope/4.9/data/pf/rtexec.pf
	many differences, mostly related to program command lines

    /opt/antelope/4.8/data/pf/rtinit.pf /opt/antelope/4.9/data/pf/rtinit.pf
	added several new directories
	    > idserver
	    > rtlogs
	    > dbids
	    > diskserver

    /opt/antelope/4.8/data/pf/rtm.pf /opt/antelope/4.9/data/pf/rtm.pf
	eliminated automatic suggestions for reasons why shutting down the system

    /opt/antelope/4.8/data/pf/rtsys.pf /opt/antelope/4.9/data/pf/rtsys.pf
	ignore certain garbage output from orbdetect
	    > ignore  &Tbl{
	    > orbdetect.*frame overlap
	    > orbdetect.*frame discarded
	    > }

    /opt/antelope/4.8/data/pf/smartpick.pf /opt/antelope/4.9/data/pf/smartpick.pf
	many changes

    /opt/antelope/4.8/data/pf/tail2orb.pf /opt/antelope/4.9/data/pf/tail2orb.pf
	> max_log_bytes_per_packet   25000

    /opt/antelope/4.8/data/pf/trdefaults.pf /opt/antelope/4.9/data/pf/trdefaults.pf
	< CA         trCA         -2147483648     -2147483648   2147483647      0   wfinCA  -          -       -     yes          Canada compressed 
	> CA         trCA         -2147483648     -2147483648   2147483647      0   -       -          -       -     yes          Canada compressed 
	> UE         trUNEVEN     3.4e38          -1e38      1e38               0   -       -          -       -     yes          unevenly sampled data, with times
	>     J        watts            power (Joules/sec) (UCSD)
	<     d        meters           depth or height (eg, water)
	>     d        meters           depth or height (e.g., water)
	<     s        meter/second     speed (eg, wind)
	>     s        meter/second     speed (e.g., wind)

Parameter files removed:
    eworm2orb.d           orb2disk.pf           orb2eworm.desc       
    eworm2orb.desc        orb2eworm.d           seed_translations.pf 

New parameter files:
    cf.pf                 dbevproc.pf           rtrun_matlab.pf      
    checklist.pf          dbprelim_locs.pf      smartpick_classic.pf 
    cluster.pf            dbrmt.pf              weather.pf           
    cluster_cleanup.pf    editgclgrid.pf        webdbshow.pf         
    csi2orb.pf            makegclgrid.pf        weborbstat.pf        
    davis2orb.pf          orbevproc.pf          wffil.pf
    db2eids.pf            rtimbank.pf          

Detailed Changes 

    Makefile
	shunt make errors for contrib to separate file
	run "make purge" at every compilation in contrib
	
	(I'm no longer looking at compilation problems in contrib).
	
	The daily results from contrib compiles are logged to a different file, as
	well as being available on the BRTT web site at
	
	    http://www.brtt.com/contrib/ 

    S99antelope 
	Update for use on Mac
	adapt to slate method for rc files
	stop saving old log files into sub-directory during reboot
	update documentation
	add rc.6 file for Linux

	mention install_S99antelope and explain how to use it

    Trace4.0
	fix a bunch of bad format strings 



    ah2db 
	truncate insname to avoid problems with dbputv returning errors for overflowing field.

    alter_timestamps 
	fix some memory leaks, and other lint complaints

    antelope.html
	rearrange

    antelope_update
	try to provide a bit more debugging output with -d option
	change name of patch in $ANTELOPE/patches to *.tar.gz, to avoid confusion
	try to implement Glenn's suggestion about the origin of antelope_update email.
	Show the URL used to get the patches at the top of gui.
	Explain the option of installing patches from a local copy
	of the Antelope patch directory.

    antelopemake
	add -lpool to STOCKLIBS

    autodrm 
	change regular expressions to avoid being tripped by embedded STOP in 
	autodrm waveforms.  Problem discovered and solution suggested by Niko.

	add magnitude and magnitude type to report

	fix new problem due to dbputv overflow results

    cd2orb 
	changes to allow handling the srcname for the status/information data
	from a cd1 packet separately from the waveform data.  This is useful
	in Australia, where the soh data is placed there.

	this should change cd2orb so that it does not require the new status
	parameter in the parameter file, preserving the previous behavior
	in that case.  This is in response to Sandy's criticism.

	change verbosity, print out number of packets sent

	fixed some memory leaks

    cdorb2db 
	fix usage
	stop using nsamp in the rematch after a pause for rtdbclean
	improve the reporting of problems in the input, but always save the data
	    into the waveform file, disregarding errors like calib changing, 
	    segtype changing, or tick registration changing

	mention db2msd, as Niko suggests

	try to get cdorb2db to shut up after once mentioning that calib or
	segtype has changed.  

	keep the tick registration aligned with midnight
	turn off tick registration checks altogether
	fix bug Rifat discovered

    check_license 
	print banner with -v option in check_license

    corefilesok (rtexec)
	start to complain about missing corefiles

    css3.0
	add new segtype for Todd Hansen:
	   n      nanoradians      angle (tilt)
	add S1 for steim 1 compressed data
	Get rid of net in specdisc
	Switch from tagid to tagname
	add segtypes for Jamie and Todd
	Add in "J" segtype to represent "power" for Todd.
	experimentally add a range condition to endtime: endtime >= time
	add uneven datatype
	switch to g format for snr to avoid field overflow in orbdetect
	Change tables where a range had been placed before some simple keys.
	Add dlsite table used by dlmon.
	rename the net field in detection so that it's clearly not used
	so we don't get questions about the wrong net code in detection
	Get rid of net code and switch from tagid to tagname in trigger
	change net to either snet or tagname in tables (changed gap
	    latency netperf ratechange retransmit) where the name is inaccurate.

	A new datalogger acquisition table meant is input to programs like
	q3302orb and rt2orb as a replacement for the Dataloggers table in
	their respective parameter files.

	Add a dlchannel table that will house the mappings between SEED
	net-sta-chan-loc codes over a time range and the particular datalogger
	and its physical channel and stream number where it was acquired.

	add iptable for orbxchange

	eliminate pointless files arrival_tshift dmcseed dmcwf wfdisc_tshift

    db2msd 
	change final status output to notify rather than error so it
	isn't flagged by rtsys

	correct usage line

	don't bother trying to convert empty waveforms (nsamp==0)

	add -n option
	also add locking to the waveform files, as another attempt to guard
	against conflicts with orb2db and cdorb2db

	add steim1 option for Taimi


    db2sd
	don't read response file if dfile is '-'
	explain time range in 010 blockette in man page

	make error message about FAP filters (and IIR filters) a bit more clear:
	they're not supported (FAP by seed, IIR by db2sd)

	deal with the situation when people move their station
	so that multiple 050 blockettes are required in the seed volume.

	eliminate some memory leaks

	fix minor problem in useless blockette 011 when station moves

    dbaddv
	strip leading whitespace from value when reading key/value pairs from stdin

    dbbuild
	put .00001 seconds between different configurations of sensor/stage/calibration
	rather than 1 second.  This effectively hides the change from SEED volumes, 
	because the SEED resolution is a bit coarser.  Apparently this is an issue
	for PASSCAL, because they may change a sensor while the datalogger is running.
	If the seed volume shows a gap, but there's data, the DMC flags it as an 
	error.  With this change, there's still an error -- the configuration 
	information info is wrong during the changeout -- but the DMC won't notice it.

	due to popular request, remove the comment lines in the dbbuild log file
	identifying who did what when

	changes to allow setting a different loc code for dataloggers only, 
	to allow for different state of health channels for multiple dataloggers
	at the same site (eg, multiple downhole sensors requiring multiple dataloggers
	as for example Jamie has).
	
	Also allow turning off generation of state of health channels in the output 
	database.

	Try to make close more predictable and reliable.
	
	close sensor eliminates any sensor hanging around creating
	    more channels in the next configuration input.
	
	close datalogger eliminates all the sensors as well as the 
	    datalogger, so sensors don't hang around here either
	
	the close time is handled a little differently now:
	    if the time is only a date, then endtime become the 
	    23:59:59 on the date in question, and offdate stays as
	    the date in question.  However, the offdate may get adjusted
	    back 1 day if a conflicting record is then added.
	
	More verbosity in the log about closing sensors/dataloggers/stations
	
	The database is closed and reopened after sensors, etcetera are 
	closed to avoid problems with dbmatches returning wrong records 
	because of key changes

	add some comments about swapping sensors and dataloggers

	dbbuild batch file examples in a man page

	add references to examples in the other man pages

	Do a better job when a datalogger is closed on one day and then 
	the same datalogger is started up again on the same day.

	fix problem that dbbuild close batch statement works on all active
	records rather than just ones before the close date.

	add a new network command to support the nettype and auth fields that
	Jennifer wants to fill in with dbbuild.

	modify to recognize insname values that are too long and trim them noisily

	Add info Literal for various dataloggers in associated parameter files.

    dbcheck_responses
	flag all positive poles in paz responses as problems
	changes to make debugging easier in dbcheck_responses, 
	print out readable times in case of errors in dbverify.pf

    dbcmpwf
	handle output of missing data values better, printing 'M' instead of 1e38 or something like that
	correct a mistake in comparing time slices

    dbconvert.pf
	Fix error in example pf pointed out by Kent.

    dbcp
	don't allow dbcp to insert relative paths with ..

	add a flag to force dbcp to allow inserting relative upward links into
	directory fields, although this can cause problems later, especially
	with databases distributed around multiple directories.

    dbdelete.1
	correct description of -v option

    dbdetect 
	Dont fill in srcid or net fields in detection output table.

	Get rid of all foreign keys calls.

	Added -onlypicks option, like for orbdetect

	Convert over to using wffil filtering library

    dbdiff
	show more resolution in the time comparisons
	add -N option to limit the number of differences shown


    dbe 
	attempt to enable the File->Print menu
	fix problem Glenn pointed out

    dberesp
	revert to using the nyquist or samprate as the upper bound of 
	response curves in dberesp

    dbevents 
	Changed default time to be a really large number. This will get rid of the
	Can't read "symbol_color_unsel(6)" error message.

	Add event latency

	show error ellipses if the origerr table exists

	change star symbols to circles which looks better when making the event plots

	Change appearance of selected origin so that error ellipse shows.

	Add -pf argument

	Add 'phases' and 'additional' options for passing to dbpick

    dbfixchanids 
	fix problem Michael West pointed out

    dbfixtimeres 
	Changed reference from /sw/data/tables/taup_ttimes to $ANTELOPE/data/tables/taup_ttimes.

    dbids
	Additional information for troubleshooting error messages and example descriptor files.

    dbloc_verify
	print informational message on stderr instead of stdout to avoid confusing dbloc2

	experimentally allow recalculating magnitudes on some origins
	by running the magnitude programs directly against the database, 
	so that there is no undo.  

	Change SCHEMA_DEFAULT from rt1.0 to css3.0 in dbloc2.pf

	attempt to allow setting the evid of an origin previously calculated (perhaps
	outside of dbloc2 altogether)  This may not properly handle all cases of
	the event table prefor field.

	add version to usage line in dbloc2

	get syntax right for "all" arids associate option

	fix banner for dbloc2, allow empty list of databases to associate

    dbmapevents 
	Add -d option for PostScript-only plotting.

	Add EXAMPLES section.  Include example of how to plot mutliple symbols based on author field.  Note that no auth field pattern matching is available.

    dbml
	fix message about waveforms

	Convert over to using wffil filtering library

    dbpick 
	move around writes to fdcom so they occur after actual writing to database, 
	seems to fix problems with dbloc2

	Add "it's not a bug" info in man page regarding break in waveform display 
	at day boundary.

	Update man page and usage line.

	Change to make trace labels properly track time dependent changes in
	calib and segtype.

	Fix efficiency problem with event-related time scrolling and station order resetting

	will show proper units based upon segtype

	Convert over to using wffil filtering library

    dbreplay
	allow suppressing the /@ suffix with the same -u flag as in miniseed2orb
	hook up the previously unattainable -F option, pointed out by Frank
	fix some minor memory leaks
	switch to using lag parameter for waiting on orb reader.
	implement Frank's request to not delay when there are no data.
	fix problem with linux version due to different integer-float conversion

    dbsnapshot
	try to eliminate dependency of waveform snapshot on correct database

    dbwfmeas
	Describe the time range option.

	Convert over to using wffil filtering library

    diskserver 
	add example and caveat
	give threads a chance to die after halt
	switch to %u for printing thread ids (for linux) 
	update man page for some drawbacks with diskserver
	try to make diskserver allow orbopens more quickly after
	execution by moving the bind and listen earlier.
	changes to address other shortcomings of diskserver, particularly updating status.
	force consistent results with an empty directory

    displaynoise 
	correct to properly use replacement tclx if original is not available.

	Get rid of all references to net code.

	Get rid of net attribute

    dlcmd 
	Make program die if command packet will not pfcompile.

    dlmon 
	Switch over to new dlmon 

    ecrontab
	remove the confusing "run now" button, which accomplished much the
	same thing as try command, but in the background.

    elog 
	eliminate segmentation violation from exceeding the number
	of valid signals on Darwin

    epoch 
	change rounding to actually print the enhanced resolution
	change usage() exit status
	Added a much needed example using output format. Fixed a typo pointed out by Kent.

    event_archive 
	Minor modifications to event_archive.  
	Moved compress_wfdisc to archive.pm
	Added many routines needed for other programs into archive.pm
	fix so sendmail will cat text to standard out so that the rtexec log files
	will replicate what is sent in the emails.

    examples/msdd
	add comment about raw time values with -d option

    examples/perl/orbstate 
	add example of saving and restoring orb position in perl

    ffilter
	exclude directories from -x option

    fix_miniseed 
	ignore empty files

    forbserver 
	remove option A from the usage line
	simplify with new forb routines
	close forb when program ends for purify
	cause forbserver to die if it can't read the forb file

    forbstat 
	add -n and -check options to reap

    grepsrc 
	add .xs files to the files searched with -c option
	by default, avoid subdirectories named junk or ending in - ; override with -A option
	add .cpp to -c option

    inspect_snapshot
	put the name of the file in the window title
	correct a bug in inspect_snapshot that dropped (didn't show) the last entry in 
	a snapshot
	better support for editors other than xvile

    installman
	check for bad font codes while installing man pages

    ldlibs 
	ignore unreadable libraries


    libPkt
	add a new routine showPktMatch which prints only selected channels from
	a waveform packet.
	try to do rounding right when printing higher resolution time here.
	add a mechanism for printing full precision times from orbstat if needed
	return the proper error code when umsd fails inside unstuffPkt
	add PKT_PEEK to Pktxlat translations
	give PKT_PEEK some meaning for stash packets.
	add peek option to parameter files and db records
	add some varieties of compressed text packets using libz:
	    cpf
	    cch
	    celog
	    csyslog
	in clrpkt, also set the string_size to zero when string is freed.

	test for reasonable data size in orbxfer2 packet
	better job of PEEK showPkt mode for stash packets.
	add another test for reasonable size in cch packets

	make sure weather string from cd1 packet is terminated with zero
	eliminate an error from indent by changing =- to = -

	Deal properly with nsamp == 0 for GENC packets.

	avoid another segmentation violation Eliana found with corrupt orbxfer2 packets

    libbrttpkt 
	Change orbputx to orbput in keepalive thread
	Changed keepalive pf packets so that they can be unstuffed properly.
	Turned on the digital signature stuff

	Fix bug where a NULL response is being generated when dlcmd does not
	want a response.

	Change command response threading

	Fix a print buffer overflow uncovered by Jennifer while issuing a dlcmd with a bald *
	in the command line. 

	Test command packets to make sure they will pfcompile before
	placing them on the ORB.

	Add orbreapthr_new2 which includes orbopen, orbselect, etc.
	within the reap thread.

	Fix destroy method

	Synchronize stopping and opening

	Make so stopping thread will wait for thread exit using pthread_join

	Add new tool for assimilating waveforms as trace dbs from
	either ORB packets or from a db. This acts a lot like cdorb2db
	inthat it first assimilates traces with fixed time slots and
	with trace values set to the gap value and then it plunks down
	the data into the trace arrays as it comes in.

	Increase time range a little to trgetwf to make sure all points are read.

	Add orbclose and fix return value when no data.

	Switch over to SIGHUP for terminating read threads.  Also call orbclose.

	Change shutdown logic.

	Change name if orbreapthr_stop2 to the more descriptive orbreapthr_stop_with_signal
	and explain how to use this properly in the man page

	Get rid of the signal handling. Instead switch to non-blocking orbreap_nd
	so that threads can be stopped even if orbreap would have been blocking.

    libbrttutil
	Add simple pf to C struc parser.

    libcgeom
	Change gridname to qgridname
	Change dlat and dlon to qdlat and qdlon in cggrid2db

    libdeviants 
	pid_exists, is_timezone

	optimize byte swap routines, which should improve performance in miniseed
	compression/decompression, as well as packet stuff/unstuff

	On mac, as suggested by Kent:
	
	* allow finding children for other user's processes
	* stop ignoring processes started with redirection from /dev/null or closed 0, 1, 2.
	
	Also find children of children.

	std_statvfs returns non-zero, but bogus, results for # inodes (for filesystems without inodes)

	remove the script std_pwdx

	attempt to fix the problem with checking for adequate space before
	creating orb buffers for the 64 bit orbserver.  stat returns a different
	dev field in Solaris 64 bit interface.

	attempt to handle terabyte size filesystems (mainly in rtexec and rtm)

	eliminate bad free in macintosh my_username

    libds 
	document Transient clause in dbschema.5

	make several variables static to avoid possible conflicts with xml libraries, 
	    as suggested by Kent

	eliminate include of malloc.h, which evidently doesn't follow posix standard.
	    fix in-place sort

	fix memory leak

	add mutexes around (hopefully) all the remaining global variables
	where a conflict might arise.  This should allow separate threads
	accessing separate databases, but not separate threads accessing the
	same database.
	
	There has not so far been any attempt to test multiple threads with
	multiple databases.
	
	This has the potential for introducing new problems, but so far the
	changes are passing all the old tests.

	cleanup after encountering a duplicate field declaration when compiling 
	a schema, eliminating one memory leak

	Add missing dbTABLE_PRESENT, as suggested by Niko

	These are incompatible changes which may cause previously running programs
	to break.  dbputv now reports an error to stderr when a value is too large for
	the assigned field, rather than quietly truncating the value.  Problems
	showed up in a variety of tests, but were easily fixed.

	add info about difference between dbquery and dbget for null values, add dbis_null

	Because of the way ranges work in Datascope indexes, it's important
	for them to occur last in Primary keys, rather than having some scalar
	keys following.  The search through the index decays to a linear
	search for keys beyond a range.  
	
	This has not been enforced in the past, occasionally leading to some 
	surprising results.  In addition, adding rows to tables with simple
	keys beyond a range could fail, due to an implementation error.
	
	These changes 
	
	1) fix the error in dbaddv
	2) add checks for the position of ranges in base table keys
	3) rearranges keys in joined tables to put ranges at the end
	
	This also required some changes in the css3.0 schema, where ranges fell
	in the wrong position in keys for a few tables.

    libforb
	try to eliminate segmentation violation seen once on an adev machine, evidently
	due to a partial read.

	return error code instead of dying when given a bad seek code in forbseek.

	fix memory leak

	fix a variety of small problems with forb routines

	more tweaks to correct handling of orbget codes

	fix memory error

	fix error finding newest packet with match/reject criteria

	fix bug with diskserver failing to find the first packet in a disk buffer

	try to improve behavior at new end of orb

	modified forb routines to use unbuffered reads on the mac because
	the buffered reads don't work right when the file is growing.

	fix various problems with forb i/o which may address the symptoms on orb-sci

	try to eliminate a potentially infinite loop.

	make the complaints about short packets a bit more explicit

	partial improvement in reading from damaged forb directory

	deal with different include files on mac

	when that is missing

	add routine to attempt to patch up incomplete segment files 
	(due to untimely death of orb2disk or disk full)

	add some new tests for segment files for orb2disk:
	    -- ignore times of packets too far in the future (about a year) during segmentation
	    -- segment based on size also
	    -- segment based on #packets also
	
	fix up some lingering problems due to the switch to unbuffered reads and writes

	allow taking the first pktid from the filename for single files as well
	as files in a directory.
	
	be more quiet about temporary read failures, only complaining after the second 
	failure.

	stop complaining about short reads so marmot logs are empty

	attempt to fix problems on marmot

	better debugging routines for fake packets

	add retries to writes of forb packets

	try rereading when the next input line seems bad, since that
	seems to be happening on marmot.

	fix a problem in the fast seek to the end of the forb file

	try to buffer output to speed up arm routines

	fix against premature read termination during segment file switch

	finish off segment files with marker in forbclose

	get the pktid numbers correct

	avoid waits at end of file for forbreap
	move backward across segment boundaries without skipping a packet.

	cache directory information to increase diskserver performance, 
	especially on marmots where directory is changing slowly

	force rereading the forb directory whenever a new file is opened, rather
	than depending on modification time change on the directory to cause 
	a reread.  The modification time may not change fast enough.

	remove sync options from open of segment files for speed on solaris writes

    libgpl
	This fixes the problem Natalia found with the filter menu not acting
	immediately hopefully without undesirable side effects.

	Add detection and timemark color specifications in the Xdefaults database
	and the command line. Also fix a problem with color conversions.

	Attempt to fix problem with deleting arrivals on Linux.

	Fix efficiency problem where it was taking a long time for event-related
	time scrolling and station order resetting

    liborb
	avoid retrying orbclose

	(orbelog)
	take the net_sta portion of srcname from elog.pf if possible, so that
	error messages can have same net_sta as other packets on marmot orbserver
	use original behavior for elog orb packets if elog.pf has
	no value specified for net_sta

	bump maximum orb packet size to 4,000,000 bytes at Danny's request
	clarify return code from orbputx = remote pktid

	make the tests on time less tight on orbresurrect, because of the 
	    limited resolution in the state file
	use strydtime instead of strtime
	more verbosity when the remote orb has been reset since burial

	add orbput_nolag 

	Add Jennifer's new orbserver names, add obsip name at port 53456

    libpool
	new library for shared globals to avoid problems where perl extensions
	might get two separate copies of some variable which should be singular.

    libresponse: range_resp 
	try to fix several problems with past versions of range_resp
	lower tolerance
	change range_response to *always* use the geometric average of the knees
	of responses to calculate the center of the frequency range

	fix various leaks

    libscv2
	Attempt to put in correct units in dbpick and trdisplay displays.
	Put units conversions into a single subroutine

    libstock
	change rounding methods, fix float truncation problem for times
	round properly for printing tens of microseconds 

	fix leaks in pfput pointed out by Kent

	throw an error in path routines when user attempts to back up over a symbolic link with
	a .. in a path.
	Add a caution in the path(3) man page about .. elements in paths.

	jointbl has been appending an extra delimiter following the last element
	of the tbl.  This change brings it in line with the usage in perl.

	add some fdopen, fdget, ... routines to buffer unbuffered read routines something like
	gets and getc for diskserver on a mac.

	allow EINTR in reads in fdgets routines
	add reread to restat routines
	make fdtell long instead of int

	findzero: more stable algorithm
	add net_sta to elog.pf

	add routine for printing hexdump comparisons of memory

	add a routine freespace, for possible use in orb2db
	check for enough space before creating a large file in mkfile

	change output of pfout to be more readable: don't always escape right
	    bracket, only unmatched right (squirrely) brackets.

	update bns man page to add bnskeep, bnsresend
	
	Add example to pf.5

	add strjoin function

	document xheap routines for maintaining persisten key/binary value pairs in a file
	add utility routines debugarr, debugtbl, debugchar and ascii_cnt to conveniently print certain structures

	add a utility routine okstr to return "" when char pointer is 0


    libtr
	Fix an error in an attempt to derive a new name for a waveform file; I think
	this is only exercised in cdorb2db.
	Improve the error messages from a few related routines.
	Force a manual load of trdefaults.pf when some of the foreign key mapping routines
	are called and trinit() has not happened.  This only occurs if the application
	has been statically linked.

	change the way the times in the seed headers are generated when the
	1001 blockette is being created, to avoid round-off problems.

	catch and complain about any rounding errors while writing seed headers

	add verbose_splicing parameter to trdefaults.pf which allows printing out information about the failed splices.

	mention 1001 blockettes

	change fake "zz" signal to triangle wave to try to avoid problems with different sin calculations on linux versus mac/sun.

	fix trsplit so it sorts the result after removing marked gaps (and works correctly)
	change verbose_splicing to elog_debug instead of complain
	correct man page trsplit.3
	add some verbose output into trsplit using verbose_splicing flag 

	fix a fairly serious memory leak in trgetSEEDwf, evidently introduced
	when adding opaque blockettes to the library.  I noticed it from
	looking at memory usage on anfops, where dbreplay clearly showed 
	bad behavior.  To exhibit the problem probably requires something
	like dbreplay, where files are opened many times to create 1 minute
	packets, and about 56 bytes are leaked each time.

	fix the bug exposed by Eliana and Passcal where completely bogus miniseed
	records cause a segmentation violation as msdhdr_unpack attempts to copy
	from unallocated memory.

	Corrected default waveform pattern to: "%Y/%j/%{sta}.%{chan}.%Y.%j.%H.%M.%S"

	add experimental unevenly sampled data datatype, allowing ascii data files with
	time measurement data pairs.  samprate in wfdisc is fake, time should be related
	to time in data.  trgetwf returns spline interpolation of data points

	Add trcopy routine for making temporary transient copies of trace data.

	switch to dynamically calculating the maximum nsamp allowed in wfdisc, 
	rather than using a constant.  This allows changing the nsamp field if
	required, eg for very high sample rates.

	Convert over to using wffil filtering library

    libtt
	strdup the method string to avoid problems with static variables, like
	Danny encountered.
	Add information in tt.3 about specific phases. Define "basic" and "all" based on Buland and Kennett tau routines.

    libttgrid 
	Add new capability to apply a channel sifter for different phases. This
	allows horizontal components to be run through the detector and used solely
	for S arrivals, while using only the vertical detections for P arrivals.

	Make it so that phases with 0 weights will still associate and be
	removed in recursive processing, but will not be used in the actual
	location.

	Fix bug related to S associations when there are no S travel times in
	the ttgrid file.

	Add final pass through an iterative inversion location code

	Add separate parameters to control the maximum P and S allowed residuals
	for making associations after the initial cluster-window based grid search.

	Changes to increase efficiency (dont bother to process picks whose weights are 0)

	Ddd no_output option to allow a grid solution to be made but not output

	Make stack assignments of method and phase strings fixed length instead
	of letting the compiler figure it out. Why this is necessary is
	a mystery to me, but this seems to fix a problem with the Linux
	version.

	Add grid parameter use_only_relocation

	Attempt to implement closest number of stations culling

	Add in table-based nsta threshold as a function of source-receiver aperture.

	Add DMAX to verbose output

	Add capability to restrict defining stations to those within a
	bounding box relative to the search grid boundaries.

	Add table entry for specifying arbitrary distance-weight
	functions for distance weighting.

	Fix bug in weighting calculation.

	Add default deltim value for final arrival rows.

	Add default P and S deltim values (in default parameter file) to be put in arrival table rows.

	Carry weighting factors for use downstream in the relocation code.

	Add in new P_det_tmin parameter that will toss out detections that
	follow too closely behind an initial detection for making the initial
	P association search more robust.

    libtttaup
	Refer to tt(3) for specific phase information.  Update ftp location for Buland and Kennett tau routines.

    miniseed2days 
	automatically eliminate miniseed blocks where the "clock quality"
	is less than some value, the default being 10.

	fix time test used with -I option, pointed out by Frank

	add comment about reading large files from stdin to the man page, 
	as Michael West suggests

    miniseed2orb 
	correct the time range test used with the -I option
	attempt to add the ability to wait for a reader when putting miniseed
	    packets onto the orb, as requested by Chad.

    orb2db 
	add an option to fill irregular small gaps inserted into the data stream
	by some ROADNET dataloggers 
	
	change verbosity a little, add log comment about reason behind a gap.
	
	try to avoid an odd situation during a shutdown when sources are turned
	off before sinks (like orb2db), and so orb2db never gets a new packet
	and is trapped in orbreap.

	more changes in verbosity when new wfdisc is started

	fix orb2db so that when CalTech switches samprate from 20 to 40 on the fly, 
	the recording samprate is changed immediately (instead of on the next sample)
	and the nominal samprate (in the standard seed header) gets changed also.
	Previously, the nominal samprate didn't change until orb2db was restarted.

	add checking for a full partition.  If the
	current partition is found to have less than 10Mbytes of
	space, orb2db waits for improvement, and does not write
	out any more data (or read any more packets).
	The partition watched and the minimum space necessary
	are new parameters in the parameter file.
	
	It's hoped that this will be a bit more friendly approach
	than the previous method of dying when a waveform write
	failed.  That failure mode can still occur if the filesystem
	full check doesn't happen often enough, and the filesystem
	fills up in between checks.  The frequency of checks is
	specified as the number of packets read, a new parameter in 
	the parameter file.

	eliminate "no matching row" message from orb2db, as latent stations
	can cause these messages, which don't necessarily indicate a problem

	add output which shows where discarded packets are saved.

	eliminated flush_wf_writes in orb2db.pf, which does nothing, and updated
	the man page appropriately, as Steve Foley suggested.

	modify preferred wfdisc time range to keep nsamp within bounds

	change two complains to elog_notify so they don't show up in standard reports, since they aren't errors.

    orb2dbt 
	Minor typo corrections to manpage.  

	Added additional author to author_priority for clarity.

	Use the assoc library instead of what was coded directly in orb2dbt. 
	This is to standardize how event associations are done so that orb2dbt 
	will do exactly as other programs like dbgrassoc. 

    orb2disk 
	improve the man page for orb2disk

	if final command line time argument is "last", stop after reaching current last packet 
	in orb (rather than attempting to go until last packet copied is the last packet)

	attempt to patch up short segment files at startup

	mention the defaults for size options in man page

	add another parameter to specify how often state file is saved

	add options to set # packets in segment files, limit the number of packets copied

	adjust verbosity in orb2disk

	don't save a stash packet id (==-16) in the state file

    orb2ntp 
	set clock including seconds, forget about rerunning ntpd as the
	version on the slate can be running with multiple instances.

	add -M option to orb2ntp to set some "marmot" options.  With this option, 
	it feeds every read packet to the memory clock, and always runs date
	to set the clock when it's first started, using the first packet it reads.

    orb2ntp
	repeatedly set the clock when time advances quickly, as it might
	if the marmot had been down for some time while the datalogger
	was recording.

    orb2orb 
	adjust verbosity, and note the capability of showing the pktid mapping
	when -xvv option is used.

	fix blunder so that getting a time range with orb2orb works properly

    orb2stream 
	Add ability to create fixed length files in a directory.

    orbassoc/dbgrassoc
	Removed tele grid_params in orbassoc.pf. 

	Added 'tele_uni' and 'tele_slow' to match grids in ttgrid.  

	Add explanation of orbassoc log output.

	Add a generalized detection sifter for rejecting and accepting
	detections before any processing.

	Add channel code based sifters to restrict P and S associations
	(e.g. P associations only on vertical components)

	Implement a final pass through a location code like genloc

	Add script for running dbgenloc as a final pass.

	Make default orid and evid 1 instead of -1.

	Keep an event cache and check to see if a new event matches an old
	one using the origin_lat_tolerance, ... grid parameters. If a match occurs then
	don't output the event.

	Drop the original associated location if a relocation can be done
	successfully and the use_only_relocation flag is set.

	Added rudimentary trigger function so that events get rapidly processed
	without having to run orbtrigger

	Make station trigger inactive for very latent detections.

	Add capability to restrict defining stations to those within a
	bounding box relative to the search grid boundaries.

	Add table entry for specifying arbitrary distance-weight
	functions for distance weighting.

	Use deltim parameter instead of hardwired to 0.1 for arrival rows

	Use weights to adjust deltim for defining arrivals.

    orbdetect 
	Fix so that sample rate changes will not cause the program to exit.
	It will just skip the packet in question. Apparently seedlink packets
	have varying sample rates on a regular basis.

	Added 'iphase' (commented out) to each of the 'bands'. Should now be 
	synchronized with the labels in orbassoc. 
	
	Added .*_BHZ to netstachanlocs Tbl.
	
	Described iphase in man page.

	Don't fill in net field in output detection row packets.

	arrange for tagname to have null value in output

	fix print bug found at UNR.

	Convert over to using wffil filtering library

    orblatency 
	write snet rather than net

    orbmag
	Include some explanation about need for correct snetsta based on comments from Natalia.

	Convert over to using wffil filtering library

    orbmonrtd 
	Deal with no net code in detection.

	Add reverse_labels option to put channel labels on right side.

	add -tshift_time option to synopsis

	Convert over to using wffil filtering library

	Implement waveform reaping with orbreapthr(3) routines so that orbmonrtd
	does not hang when the orbserver goes away.

    orbmsd2days 
	try to speed this up for Frank

    orbreap 
	better messages

	write everything to stderr so smoke test in forbserver tests works reliably

	some sanity checking of stash packets before attempting to verify them, 
	to avoid seg faults

    orbserver 
	fix the count of srcnames at orbserver startup by eliminating a blunder
	make some error messages more informative
	change status request messages to notify instead of complain, so that
	    they don't end up in rtsys reports
	eliminate ORBRUP messages unless verbose_exists()

	change the behavior of orbserver when it receives a packet
	bigger than its allocated space.  Instead of dying, now 
	it clears the existing space, complains, and drops the incoming packet.

	various minor improvements which should not affect orbserver operation

	add an option to ignore the results of the verification tests and run anyway, 
	    for debugging

	save statistics in a different output file, as requested by Frank and Jennifer


    orbserver
	change the behavior of orbserver when it receives a packet
	bigger than its allocated space.  Instead of dying, now 
	it clears the existing space, complains, and drops the incoming packet.

	screen out packets from the extremely distant future or past  |t| > 1e230 

	in case some orb buffers are empty on restart (after full disk situation), remove
	them.

    orbstat 
	add a new restrict command to the interactive mode to print only selected
	channels from a packet in verbose modes.

	add a method for printing full precision times if necessary, 
	and another command to show the current select/reject/restrict expressions

	override the elog.pf parameter file by setting an environment variable
	so that the output of orbstat -i doesn't end up on the orb.

	try to explain that orbstat latency is not a direct measure of 
	    packet travel time from the datalogger.
	refer to orblatency.

    orbtrigger 
	Get rid of net attribute reading from detection and writing into trigger table.

	Get rid of all foreign keys calls.

    orbwfmeas 
	Get rid of output net attribute in specdisc table.

	Fix several problems that showed up in Trieste (dev version didn't work
	at all because of some schema changes (get rid of net in wfmeas) and peaks across
	channels didn't work execpt for orbwfmeas version using the wfmgme stuff)

	Convert over to using wffil filtering library

    orbxchange 
	first pass at implementing dhcp reconnection (to marmots, for example) using 
	a database table though which the dynamic ip is discovered.

    orbxfer2
	save the state directory in the correct location, in spite of
	chdir's 

	add some more verbosity, some sanity tests to try to perhaps
	catch the problem Eliana is seeing

	change to central orbput_nolag

	add option of specifying the net_sta_chan portion of srcname
	on command line with -N option

    perl 
	put release info into snapshots

	fix options for top in snapshot on linux

	add "antelope_update -L" to snapshots, so it's easier to tell 
	if some patches aren't applied.

	add some use of prstat in solaris snapshot

	add ls -lR to snapshot

	another fillip on rtmail

	remove documentation for perlpf (deprecated, for internal use only)

	add a more complex method for specifying menus and corresponding routines, 
	and fix a bug in pfperl pfkeys

	add touch and wait_until_static routines in utility.pm

	change architecture names again for intel/powerpc macs in osinfo.pm

	try to improve the ptk man page, adding explanations of relative row/column
	positions as suggested by Kent

	try to avoid taint problems in ptkalert as suggested by Kent.

	add a man page for utility routines

	handle better cases where gethostbyname fails (on linux/marmot) in rtmail

    perldb
	fix failure (segfault) of legit_ip when there is no restriction code.
	improve error message for saving value to database
	clean up some error messages
	fix some memory leaks, following a suggestion from Kent

    perlorb
	first attempt at adding special stash routines to perl i/f
	fix some problems unstuffing zero length packets
	fix address from orbstat in perl interface
	improve error messages, warn about no threading
	add orblag and orbput_nolag
	fix bug which Kent pointed out with empty suffix input into suffix2pkttype

    perlsysinfo 
	eliminate nan resulting from some statvfs results

    pfecho 
	change pfecho output slightly so that it can be directly copied into 
	another parameter file without editing.

    pkgIndex.tcl
	allow not having Brttplot when loading Dbe package

    pktmon
	Add a man page of examples for pktmon.  
	Minor typo fixes and clarifications to pktmon.1
	switch to using rtmail for mailing alarms
	Attempt to provide a different failure mode when the state file
	is corrupt for some reason:  move the old state file aside and start
	a new one.

    q3302orb
	Eliminate some of the register_error calls in q330_read_data and some of
	the lower level subroutines. These were not every getting cleared with a
	complain or clear_register and apparently caused q3302orb to eventually
	SEGV. Added a clear_register(1) at the beginning of every registration.

	Added a number of new options that allow for a new "hibernation"
	mode that is entered into automatically based upon user setable
	dataloggers registration sleep and max retries parameters. Once
	in hibernation mode a datalogger thread will not attempt to 
	communicate with the datalogger until 1) a start command is received,
	2) a POC message is received or 3) the inactivity timeout expires.
	Note that this works with the normal startacq disposition.

	These changes cause q3302orb to put out "partial" status packets
	whenever a datalogger acquisition mode changes. This behavior is
	set by a new parameter. In this new behavior mode, you will see
	acquisition mode changes for dataloggers even if the pfstatusreport_interval
	is long.

	Get rid of status error messages during deregistration.

	Add q3302orb run time in status packets

	Don't check for response from a deregister command.

	Put out final status packet at shutdown

	Copy over some of the POC logs to the datalogger threads.
	In particular 1) a log to announce ip address changes and
	2) a log to announce that an acquisition start is due to a POC

	Fix so that a POC will immediately wakeup a thread in
	REGISTER_SLEEP state.

	Added POCs in last 24 hours and ip-address changes in last 24 hours
	to status variables.

	Error exit immediately if any getconfig structure returns an error.

	Add RGFLGS error log

	Fix con strings to reflect actual thread run states.

	These changes re-implement the computation of the communication efficiency using
	the values of total data packets sent and data packets retransmitted from the Q330
	status structures instead of trying to guess these numbers at the q3302orb end.
	This should result in a much more stable and accurate estimate of communication
	efficiency.

	Add a short delay before sending out the first data user message.

	Fix a bad placement of q330_umsg in the wrong thread. This was
	acting as a bottleneck for all of the datalogger processing threads.

	Add flow control 

	Specify flow control in parameter file.

	Add version to status packets.

	Add new "reg" acquisition state.

	Changed default local_port_base to not coflict with system ephemeral
	ports and mentioned the ephemeral ports in the man page.

	Put in more deregistration calls to minimize delays
	when using dynamic local port assignments.

	Ignore deregister if ip-address is NULL.

	Attempt to clean up various timeout and wakeup problems
	in thread state changes.

	OK - deep breath - this implements full remote "system" control of
	all dataloggers through the C1_CTRL command structure. What that means
	is that you can 1) reboot, 2) save config to eeprom, 3) resync,
	4) turn on gps, 5) turn off gps and/or 6) cold start gps through a
	batch dlcmd for the entire network (see the q3302orb man page).

	Put in a new control_inactivity_timeout parameter that causes links
	to re-register whenever the control port connection appears to be
	inactive - we are seeing this on lots of the WB stations which basically
	disables commanding the stations or getting status.

	Changed the behavior of the shutdown_timeout parameter so that is active
	for both startacq and listen mode threads. Ths is now link an "activity"
	timeout that will cause automatic re-registration on all threads after
	a certain connect time. This could be useful for these WB stations where
	connections get lost after a certain amount of usage.

	Re-arrange where bufpcnt is computed so that it will 
	switch to a NULL value whenever the status packet request
	fails.

	Make error logs during registration problems more informative

	Fix execution order problem in status request threads

	Add disposition to inp status

	These changes put the last ip address into the state file and read 
	these back in a startup. Right now nothing else is done. However, we could
	use this to implement initially setting the datalogger ip-addresses from
	whatever was last used from a previous execution. I am not sure right now
	what is the best way to switch from using a specified ip-address in the
	parameter file or the last address from the state file or just set it
	to NULL and wait for the POCs.

	Added setting local port numbers 

	fix a bug in the bytes read-written in last 24 hours

	This changes the behavior of deregister so that it always
	tries to get back an ACK and if not sends one more C1_DSRV
	and exits. This may get rid of the errors associated with C1_DSRV
	sprays.

	Change default shutdown_buffer_wait to 15 seconds

	streamline control debug messages

	economize on registration overhead.

	Fix log message bug involving DP3 instead of DP4

	Added Baler power control and setting q330 ip-address with dlcmd.

	Put in web_port in baler token parsing and reporting.

	Added mass locking and unlocking throught dlcmd interface

	Added support for the optional Q330 auxiliary data channels through
	the normal status parameter interfaces. This update will automatically
	switch properly between single-ended and differential data channels
	as reported by the bitmaps in the data blockettes.

	Write state file into a temporary file and only rename it if all
	of the writes and close were successful. This should fix the problem of
	a statefile corrupted because of a disk full or whatever.

	Can put in "-" for SN and q3302orb will attempt to POLLSN for serial number.
	This requires the Q330 to be configured to allow POLLSNs. This is being added
	mainly to support marmots.

	Added new program q330pocd which acts as an independent Q330 POC daemon
	for receiving the UDP POC messages, encapsulating them as ORB pf packets
	and changes in q3302orb so that these ORB packets can be read as sources
	of the POCs. This will allow multiple q3302orb instances to acquire their
	POCs from a single daemon program.

	Cause q3302orb to always put its complete
	command line and parsed parameter file contents out as
	a stash packet once at start time using the status packet
	source name.

	Add capability to bind the local UDP sockets to
	a particular ip-address in cases where the host 
	has multiple internet interfaces.

	Add the dlsite table to the status packet stash.

	Add in memory error status from Q330 requested status LOG structures.

	Change calibration error status in data stream to be regularly sampled.

	Implementation of request for Q330's "Announce" structure which contains
	the POC destination ip-addresses. Note that this is one of the only requests
	that can only be done on the config port. Therefore it is necessary to do
	this through a dlcmd "control" command. Therefore, this request is not made 
	on a routine automatic basis like the other configuration requests.

	Fix man page description of how to connect to an ORB for getting
	POC messages.

	Added stash entries for each of the datalogger log srcnames. These stashes
	form tables of all of the waveform channels being acquired by each datalogger and the 
	mappings into orbname/srcname. This is intended to help dlmon to figure out
	how to display waveform data and as input to the formation of the new dlchannel
	table.
	
	Also added Q330 ping capability to q330util.

	Finishing touches on the dlname/log stash packets. These now contain
	the datalogger model and serial number and all of the channel mappings,
	which include the SEED net-sta-chan-loc codes, a string describing the
	datalogger source of the channel, a fully resolved orbname where the data is
	being written and the srcname used to multiplex the channel. This should provide
	all of the hooks needed to connect SEED channel codes with specific dataloggers
	and where the channels are being written in the ORB world.

	Add specification of local ipaddress for machines with multiple
	ethernet interfaces.

	Switch to raw unbuffered file descriptors for writing out the state file.

	Add UDP/IP overhead comment about calculation of total datarates.

	Get rid of some unnecessary sleeps

	Added some explanation to data_cal_error.

	Fix up interrupt handlers.

	Handle interrupted polls and reads a little more gracefully.

	Add new ORB output packets that contain the Q330's internal time
	from its GPS synced clock.

	Make all serial number strings upper case.
	This may fix the problem with case conversions and its various side
	effects.

	implement the new parascientific Q330 acquisition through its serial ports.

	Add serial stuff to dblk processing list

	Added shutdown_wait_time parameter to control how long q3302orb waits for
	all of the dataloggers to be de-registered during a program shutdown. This
	was originally hardwired to 20 seconds and then to 2 seconds to deal with
	rapid shutdown for the marmots. It turns out that 2 seconds is too short for
	remote dataloggers through marginal comm links or in cases where the link
	parameters cause longish read timeouts.

	Finally got around to putting all of the datalogger status blocks into
	pf form which is return with the new getstatus command (using dlcmd).

	put getstatus in man page.

	fixes a bug with setting the sensor control lines 
	for massrecenters, etc. in cases where the "active" signal is 
	low instead of high. This can cause problems with Guralp sensors
	which need to be pulsed by switching from 5 t0 0 volts instead of from
	0 to 5 volts on the control lines.

	Rework the response logic after seeing a config change on the data
	port - after conversations with Joe.

	last mod before buttoning down the changes for
	the marmot to support the Parascientific sensors. This change implements
	automatic determination of calib and segtype from Q330 status blocks
	associated with the serial data channels.

	Set default segtype to 'c' for counts for anything other than the 24-bit
	data samples. Leaving it at '-' causes dbpick to display the units as nm 
	instead of cts.

	Add set verbose_log to commands section

	Add more db related printout when there is an error.

	trap poll error return of EAGAIN and treat like EWOULDBLOCK (i.e dont do anything)

	fix the problem we are seeing with the DP token changed bit
	set in the status return.

	always ask for all token memories regardless

	Add extra non-blocking read before poll. This shouldn't be necessary.
	The non-blocking read after shouldn't either, but it seems to be
	anyway.

	A little more output to mark EWOULDBLOCK events.

	All inclusive signal handler as an attempt to resolve the
	returns from the system pause() on the marmot.

	Put shutdown into main thread and culled out signal list to be consistant
	with Linux signal list.

	Add undocumented -nowritestash command line option for debugging

	Flush everything and write state file before
	waiting for acquisition to stop. Hopefully this will
	work around the mystery hangs during acquisition shutdown
	on the marmot.


    qtunbale, qtunbale2
	add -I option to executions of miniseed2{orb,days} from within
	qtunbale

	attempt to switch so that qtunbale doesn't generate bogus miniseed
	blocks when only a partial block is read from the baler.
	Unfortunately, no balers are accessible here, so I can't test this.

    render
	add struct mode
	handle unsigned, describe the -m option better
	added clause to suppress generation of certain routines
	improve debug printing
    rt2orb 
	add missing parameter to rt2orb.pf

	Die when orbput returns an error.

	Fix uninitialized string

	Dont run status thread if status disabled

	Fix bug where two threads were writing into the same orb write socket
	asynchronously. Apparently this causes occassional corruption of ORB
	packet.

	Put version and run time into pf/st packets.

    rtchecksums 
	revert to cksum on all machines, because Sun evidently
	changed elfdump -k in Solaris 10 - it no longer gives
	the same checksum!

    rtdbclean 
	clarify the orb2db_msg mechanism

    rtexec 
	comment out orbtrigger in default rtexec parameter file
	truncate to integer the delay before running compression of old log files, hopefully
	    correcting new non-fatal error during startup

	add a bit more release information to the startup messages

	Fix rtexec so that it reliably detects still running cron jobs and
	does not restart them while the previous job is running, even 
	across rtexec executions.
	
	The fix involves eliminating a test for the working directory of the 
	job, which was broken on Linux and can't be made to work on Darwin.
	
	In addition, I've tried to more completely separate cron jobs from the
	normal rtexec log and from the rtsys.history table, which should make
	the rtsys report a bit more manageable.

	Added command lines for rt2orb, orb2logs, orbserver64, diskserver, 
	dbidserver, dborigin2orb.  Various other cleanups and reorganizations.
	
	For rtinit.pf added idserver and rtlogs to directories and dbids, 
	diskserver, and orbserver64 to parameter_files.

	allow shutdown order to specify programs names or task names.
	improve the description of shutdown order
	add orb2disk to the shutdown order

	try to deal with a clock (like on the slate) where now() is 
	behind filesystem times, particularly times on pf/* files.

	try to streamline shutdown a little for slate
	change : to . in save directories for Macs, also change : to - in
	    Startup and Shutdown task log names for Macs.

	avoid killing things twice if possible

	go back to 1 second sleeps while waiting for processes to die.

	be more agressive about generating incident reports -- on a mac, no 
	core files are generated by default, so waiting for a core file means
	no incident reports.  Now, rtexec should generate an incident report
	whenever a program dies from certain signals, including bus error, 
	segmentation violation, floating point exception, trap, illegal instruction,
	etcetera.

	Improve the handling of stopping when a task dies.
	put time tags in the Why file.
	allow redirection in Startup and Shutdown tasks
	Correctly recognize and annotate properly when an incident report 
	    is generated without a core file.
	Stop putting the pointless exit code in the message about dying from a signal
	Don't generate an incident report over SIGPIPE

	shorten long command lines to avoid problems with new return code from dbputv

	Explain that when core files fall somewhere other than the rtexec.pf
	directory, they're not found by rtexec and information from them does
	not appear in incident reports.

    rtincident 
	attempt to get MacOS X crash report
	add pstack output to rtincident reports -- get stack from all threads

    rtmail 
	update rtmail to correct usage line, and add to CAVEATS in man page, responding
	to Taimi's comments.

    rtmonitor 
	futile attempts to fix rtm "floating point" errors on viper
	reduce the number of floating point errors reported on arm by using catch
	add processor type and more explicit Antelope version in rtm time/date menu
	allow no waveform database in rtm
	get rid of all complaints about missing database
	switch to pid_exists instead of checking /proc/pid for macs
	switch cpu usage display (in top panel) when #cpu's is > 4, using
	   lines instead of bars.  This is for Frank's 32 cpu machine
	eliminate absolute requirement for Tkpixmap on marmot
	try to suppress another funny problem with floating point
	put an absolute path in when running epoch to get a version

    rtorbcmd 
	Change SCHEMA_DEFAULT from rt1.0 to css3.0

    rtoutage 
	rename net to snet

    rtreport, rtsys
	add a little more space to make columns line up better
	add Antelope version to rtsys and rtreport reports
	don't ignore some non-antelope messages from shell in log files

	attempt again to improve the output of rtsys by better filtering of the
	log files and some attempt to compress out multiple lines with the 
	same complaints.

	improve printout of restarted processes

	allow running reports without a database

	ignore certain messages in rtsys

	ignore incident reports from the logs directory

	clean up some temporary files

	make error message more consistent between linux and solaris

    sachd
	don't print garbage if the file doesn't exist.

    seed2db 
	fix bug which causes a segmentation violation when stagedir is not specified.

	intercept dereference through null pointer when stages are missing in seed volume

	Don't write out SEED net code into the affiliation table

	Don't print out 'no ndens' errors when processing an extended
	B0057. Also, make the FIR filter symetry test a little less
	stringent for cases where there are single coefficient errors.


    setup.csh.id setup.sh.id
	add perl/bin and tcltk/bin to default path
	this isn't actually required by Antelope, but some of the programs
	like perl-widget and tclhelp are in these directories

    sgd 
	fix some output and attempt to fix problem when listening to automatic
	port scan at UCSD.

    status: cpu2orb, df2orb, heartbeat, orblog, ps2orb, tail2orb
	add -N option to status programs to allow specifying the net_sta portion
	of the srcname, so all these packets can be made to fit into the same orbserver station
	count as the data packets.  Also eliminate leading underscore when default 
	hostname is used.

    tail2orb
	various improvements to tail2orb and its man page:
	
	* bring out the maximum number of log bytes per packet to the -b option
	* mention the throttling in the man page
	* skip ahead in log files if they grow faster than the throttle allows.
	* improve the verbosity so it's useful for debugging
	* allow having a state file without using a parameter file


    tkbrttplot 
	put in an alternative if input range is <= 0 

	Added new trace sample type to the vector object.

    tkdbpick 
	get X-window error handler right

	Convert over to using wffil filtering library

    trdisp 
	add caveat that trdisp is only for display

    trexcerpt 
	try to fix up the reference to output data types to be more useful.

	Corrected default pattern.
	
	Made sure all references were for: "%Y/%j/%{sta}.%{chan}.%Y.%j.%H.%M.%S"

	clarify how event data makes it into sac headers when using trexcerpt

	add some info about debugging when writing sac headers

    truncate_log
	switch to elog routines
	add -f option
	try to truncate with older date if can't find specified date
	switch to pid_exists so this works right on macs

    ttgrid.pf
	Added regional grid to ttgrid.pf to make it consistent with orbassoc

    ucsdsp2db
	fixed up a couple errors exposed by new compiler -- probably this program should be retired, though