Antelope Version 5.0-64 Release

June 2010


This year we have a lot of changes as we move to a 64 bit version of
Antelope, and transition our primary focus from Sun Microsystems
(which no longer exists) to Apple Macintosh systems. 

Note that there is no 32-bit version of 5.x Antelope.  Therefore,
Antelope can only run on 64-bit hardware running 64-bit versions of
UNIX.  For Solaris and MacOSX, this is not a problem since SUN and
Apple hardware have been exclusively 64-bit for many years and both
Solaris and MacOSX come in only 64-bit versions.  However, for Linux
this can be a problem.  In order to run Antelope 5.x you will need a
64-bit x86 PC running a 64-bit version of Linux.  We built the
Antelope Linux version of this release on an openSuSE version 10.3
64-bit version of Linux.  We did this to preserve backward compatility
with our users who have been using this version of Linux.  Since the
10.3 version of openSuSE is no longer available, we tested the
Antelope release on openSuSE 11.2 64-bit version of Linux and users
who need to upgrade their 32-bit Linux version should use this version
of Linux.  Note that 64-bit openSuSE 10.3 and 11.2 are the ONLY
versions of Linux that we will support in full.  Specifically, we have
seen many problems with Antelope on redhat Linux and we do not offer
support for Antelope running on redhat systems.

There are probably still a few 64 bit issues which we haven't yet
uncovered, which might show up as odd bus errors or segmentation
violations, or in some cases, anomalously large numbers somewhere. 

Scripts should not encounter new problems with 64 bit Antelope. 
However, if you write programs in c, you probably need to modify them
to run under Antelope 5.0-64.  Please look at the man pages
64bit_conversion(5) and 64bit(1), and look at this presentation from
an earlier Antelope User Group meeting:

    http://www.brtt.com/events/iris2008/pdf/quinlan-64bit.pdf

The transition to Antelope 5.0-64 may be more difficult, because of
the transition to 64 bit.  You should have a plan for completing the
upgrade, and the plan should include running the previous version in
parallel with the new version for some period, until you are convinced
that operations are working normally.

On every upgrade, you should

*   carefully read these notes, alert for changes that affect you

*   make sure your computer and operating system version are compatible
    with the new release.

*   make your own comparison of your parameter files and the default
    parameter files

*   check the man page and execution line for each of the programs in your
    real time system.

*   look at the demo systems, particularly the gsn demo.  Be sure to
    understand why your system is configured differently, if it is.


64 bit incompatibilities
    Datascope views are not compatible between 64 and 32 bit
    versions, because the 64 bit versions use long integers for
    the database pointers.

Other incompatibilities
    db2msd -t argument is now measured in days rather than
    seconds.

We are not including compiled versions of the Matlab, Python, and PHP
extensions for Antelope from Lindquist Consulting, Inc.  because these
depend on the versions and locations of the interpreters installed on
your local system. 

For these extensions, you must get the source code from the
contributed-code repository and compile them yourself: 

(1) You can download the whole contributed-code repository from

    http://antelopeusersgroup.org/repository/

(2) Run the localmake_config(1) utility, which will launch a GUI to
help you configure your local system to compile these utilities (the
localmake_config(1) utility replaces the amakelocal(1) program from
previous releases). 

(3) You may then compile the interfaces by hand or, provided the
source-code is in the standard location $ANTELOPE/src/contrib, you may
use the localmake(1) utility e.g.

	localmake matlab_antelope
	localmake python_antelope
	localmake php_antelope

Several contributed programs do not build properly under the 64-bit
version of Antelope and are therefore not in the release.  This
includes isi2orb(1).

On macs, the new release is built on Snow Leopard.  In addition to
providing enhanced support for threading, Snow Leopard also provides a
very fast new threaded sort routine which is used by Antelope on the
mac version of the release.

We're recommending switching to cdorb2db instead of orb2db, which
should fix a lot of problems we've seen recording data from streams
where the timing is uncertain or packets are often out of order or
repeated.  However, you should note that cdorb2db truncates the
time tags, which leaves a potential error of up to 1/2 dt in the
timing. It should be possible to switch between orb2db and cdorb2db, as
they write to different waveform files by default.  If you use the -w 
option, though, you must be sure you have arranged things properly.

cdorb2db is a heavier load on the i/o system than orb2db, because
it writes every packet.  Because of this, it's possible you may
find cdorb2db can't keep up.  You should watch for this condition
using orblag(1) or tkorblag(1).  Orb readers like orb2db, cdorb2db
and orbdetect should have very small lag values.  If you see anything
other than zero, then over time this lag will probably grow until
the reader is at the end of the ring buffer, where it will not 
read every packet.  This will not give you good results.

We lately realized that disk fragmentation can be a performance
problem, particularly on Macintosh systems, but also to some degree on
Solaris (and probably linux).

In this release, cdorb2db attempts to sidestep the problem by creating
the waveform file for the entire day when data arrives for a new day. 
This seems to work well, dramatically improving the response time when
displaying waveforms in dbpick, for example.

We do not have an easy solution for orb2db (or any other program
files).  The fragmentation problem appears to arise because the
waveform files are continually growing in small steps, and there are
very many waveform files, so the underlying filesystem has a difficult
job to lay these out in an efficient manner.  However, fragmentation
can generally be corrected by copying the files after they're static. 
There is a new program, defragment(1), which does this fairly
efficiently.

Another problem which can be surprising on macintosh systems is due to
the Mach kernel heritage.  Certain system services, notably
gethostbyname, communicate to the kernel through a special port, the
"bootstrap port", which is inherited from the parent process.  The
problem arises when the parent process is an ssh from somewhere, where
a command is put into the background, and then the ssh process is
logged out.  At this point, the bootstrap port is closed, and the
background process no longer has access to various system services. 
For orb processes, which may use gethostbyname multiple times during
their lifetime, this can result in the process hanging, unable to
resolve a hostname to an ip address; orb connections then fail.

The basic rule to remember is not to start processes in the background
from any login where you may log out.  rtexec is an exception; it uses
the mac program /usr/libexec/StartupItemContext to restart itself in
the background with a bootstrap port which does not get closed when
the user logs out.  Similarly, cron jobs are started with such a
bootstrap port, and the automatic restart on reboot also starts rtexec
with the proper bootstrap port.

The www.brtt.com website FAQ has been changed to use MediaWiki, the
same software which drives Wikipedia.  This should make it easier for
any user to correct, complete, or add new content to the FAQ, or have
discussions about any problem of interest.  You must have an account
to edit the FAQ.  This is to avoid problems with malicious editing. 
You can request one by choosing the login button in the upper right
hand corner of the FAQ screen, and follow instructions.  Try it out at
http://www.brtt.com/wiki

We moved to perl 5.10 last year in the 4.11 release, but failed to
mention some of the important optional extensions which are available
in the version of perl:  You can read about them in more depth in "man
perldelta" or see the note near the end of this file on Perl 5.10

We began to use the C99 standard in a previous release.  Read the c99
rationale

    http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf

for a lot more detail, or for highlights see the note near the end
of this under "1999 C standard".

Please be advised that in this release we have deleted some programs
that have been marked as deprecated for that last several years. 
These dropped programs include orbmag, orbtrigger and dbml.

In this release are new filtering capabilities, both in wffilbrtt and
wffilave.  These are a generalized S-domain polynomial factors filter
(the SPF filter), a pivot integrator (the PINT filter) and a
generalized FIR-based resampling filter (the DECIMATE filter).  See
the wffilbrtt and wffilave man pages for definitions.  In this release
is a new utility library for reading and writing SAC files, busac.  In
this release is a new perl Module, Response, for dissecting and
manipulating standard Antelope response files.  In this release is a
new perl module, Sac, for reading, writing and manipulating SAC files
and their contents.

In this release is a new orbevproc perl module for computing Mwp
magnitude automatically.

In this release is an updated GSN processing template (under rtdemo)
that we encourage users to use in place of the previous GSN processing
templates.  This new template is configured in a manner that we
recommend for most network operators, including the use of cdorb2db
instead of orb2db.

We have included a very preliminary version of an update to the
dbevents mapping script.  This new version as it appears in this
release is named dbevents_new. 

library differences

libraries only in /opt/antelope/4.11
    libdcdf

new libraries only in /opt/antelope/5.0-64
    libpmel
    libdbmon
    liblocsat
    libdb2sql

examples
	    
    Added:
	    MwpA.3p
	    MwpA.pm
	    db2mac.xpl
	    dbassert.1
	    dbassert.c
	    dbblank2null.1
	    dbblank2null.xpl
	    simple_ringstat.xpl

Include file differences
  present in /opt/antelope/4.11/include, not in /opt/antelope/5.0-64/include:
    antelope_mex.h          myorbxlat.h             zlib.h                 
    mex_antelope_makerules  mypfxlat.h              zutil.h                
    mex_orb.h               zconf.h                

  present in /opt/antelope/5.0-64/include, not in /opt/antelope/4.11/include:
    SimpleWavelets.h      VectorStatistics.h    antelopemake-gcc-mix  
    pixaddress.h          db2sql.h              tt_locsat.h          
    dbmon.h               

Man page usage lines

64bit.1:
    64bit [-diInpvV] file ...
    64bit [-diILnpvV] file ...

amakelocal.1:
    amakelocal [-v] [-i] [-p pfname] [-s system] [MACRO [MACRO ...]]
    amakelocal [-v] [-i] [-c] [-p pfname] [-s system] [MACRO [MACRO ...]]

certify.1:
    certify [-c database] [-aACdDefiGIklmMnpPQqrRsuUvVZ] [-H dir] [-w msg] [-x path] [-X results] [testid ...]
    certify [-c db] [-aACdDefiGIklmMnpPQqrRsuUvVZ] [-H dir] [-w msg] [-x path] [-X results] [testid ...]

db2msd.1:
    db2msd [-t age] [-1nv] db
    db2msd [-t ndays] [-1nv] db

db2segy.1:
    db2segy db outfile  [ -pf pffile -v ]
    db2segy db outfile  [ -SU -ss subset -pf pffile -v ]

dbcp.1:
    dbcp [-a alt] [-difFlosv] source[.tbl] destination
    dbcp [-a alt] [-I table,...] [-difFlosv] source[.tbl] destination

dbe.1:
    dbe [-e] [-p pf] db[.tbl] [ db2[.tbl2]  ...]
    dbe [-e] [-p pf] db[.tbl] [ db2[.tbl2] ...] [-f field ...]

dbgraph.1:
    dbgraph [-p pf] [-h hue] [-S symbol] [-s saturation] [-z size] db[.tbl [ {yexpr|xexpr yexpr} ]]
    dbgraph [-a annotation,...] [-b batch] [-B log] [-p pf] [-CD] db[.tbl [ {yexpr|xexpr yexpr} ]]

dbloc_snapshot.1:
    dbloc_snapshot [-f output-file] [-v] database
    dbloc_snapshot [-d max-db-records] [-f output-file] [-l max-log-records] [-v] database

dbset.1:
    dbset [-clv] db[.tbl] fld old [new]
    dbset [-cClv] db[.tbl] fld old [new]

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

fix_miniseed.1:
    fix_miniseed [-iv] [-d db] [-{p|P} pf] miniseed|directory ...
    fix_miniseed [-fiv] [-d db] [-{p|P} pf] miniseed|directory ...

forbserver.1:
    forbserver [-acbfsUvwx] filename
    forbserver [-acbfsvwx] filename

mk_dbops.1:
    mk_dbops  {-I | -U | -R | -A } [-k] [-n] [-v] [-V vnet] [-m source_match] [-p pf] [-P prelimORB] [-S statusORB] [-w prelimwfDB] [-W wfDB] [-s siteDB] dbops snet sta [timestamp [comm_provider [comm_type]]]
    mk_dbops  {-I | -U | -R | -A } [-k] [-n] [-v] [-V vnet] [-m source_match] [-p pf] [-C cmdORB] [-P prelimORB] [-S statusORB] [-w prelimwfDB] [-W wfDB] [-s siteDB] dbops snet sta [timestamp [comm_provider [comm_type]]]

msdd.1:
    msdd [-bhovx] miniseed ...msdd [-hi] miniseedmsdd [-hi] 'command;command' miniseed ...
    msdd [-bdhovx] miniseed ...msdd [-hi] miniseedmsdd [-hi] 'command;command' miniseed ...

orb2disk.1:
    orb2disk [-b bury-interval] [-m match] [-r reject] [-n maxpkts] [-p period] [-s size] [-vv] orb directory [start-time [end]]
    orb2disk [-b bury-interval] [-m match] [-r reject] [-n maxpkts] [-N pktspersegment] [-p period] [-s size] [-vv] orb directory [start-time [end]]

orb2orb.1:
    orb2orb  [-dflUvx] [-c pktsuffix] [-C throttle] [-i burial-interval] [-m match] [-n npkts] [-p pf] [-r reject] [-R representation] [-s pktid] [-S statefile] [-T srcid-pf] [-u npkts] [-X xlat-pf] orbin orbout [start-time [period|end-time]]
    orb2orb  [-dfUvx] [-c pktsuffix] [-C throttle] [-D delay] [-i burial-interval] [-m match] [-n npkts] [-p pf] [-r reject] [-s pktid] [-S statefile] [-T srcid-pf] [-u npkts] [-X xlat-pf] orbin orbout [start-time [period|end-time]]

orbassoc.1:
    orbassoc [-start {pktid|time|OLDEST}] [-select expr] [-auth author] [-dbforeign dbname] [-target_orb2dbt torb2dbt] [-delay delay] [-pf pfname] [-trigger_start_only] [-v] orbin orbout ttgridf1 [ttgridf2 [...]]
    orbassoc [-start {pktid|time|OLDEST}] [-select expr] [-auth auth] [-dbforeign dbname] [-target_orb2dbt torb2dbt] [-delay delay_seconds] [-pf pfname] [-trigger_start_only] [-v|-vv|-vvv] [-leavetmps] orbin orbout ttgridf1 [ttgridf2 [...]]

orbdlstat2xml.1:
    orbdlstat2xml [-v] [-a after] orbname dir
    orbdlstat2xml [-v] [-a after] [-m match] orbname dir

orbserver.1:
    orbserver [-p port] [-P prefix] [-s size] [-kKrv] nameorbserver64 [-p port] [-P prefix] [-s size] [-kKrv] name
    orbserver [-p port] [-P prefix] [-s size] [-kKrv] pfnameorbserver64 [-p port] [-P prefix] [-s size] [-kKrv] pfname

q330_calibration.1:
    q330_calibration [-v] [-V] [-n] [-i] [-N] [-2] [-3] [-o duration_offset_fraction] [-p pf] [-m mail_to_operator] cmdorb db sta_regex [sta_regex1 [sta_regex2 [...]]]
    q330_calibration [-v] [-V] [-n] [-2] [-3] [-i] [-N [-d no_calib_days]] [-o duration_offset_fraction] [-t start_time] [-p pf] [-m mail_to_operator] cmdorb db sta_regex [sta_regex1 [sta_regex2 [...]]]

q330_location.1:
    q330_location [-v] [-m mail_to] [-p pf_sourcename] [-n net_code] [-s sta_regex] [-c chan_code] [-t max_offset_meters] orb db
    q330_location [-v] [-m mail_to] [-p pf_sourcename] [-n] [-f] [-s sta_regex] [-c chan_code] [-t max_offset_meters] status_orb [cmd_orb] db

seed2db.1:
    seed2db [-lsize logical_size] [-v[v[v]]] [-respdir respdir] [-stagedir stagedir] [-chansift pffile] [-tstart tstart] [-tend tend] [-nodata] [-nodataless] [-nofirerrs] seedfile [dbname]
    seed2db [-lsize logical_size] [-v[v[v]]] [-respdir respdir] [-stagedir stagedir] [-chansift pffile] [-tstart tstart] [-tend tend] [-nodata] [-nodataless] [-nofirerrs] [-strict_data_processing] seedfile [dbname]

trdisp.1:
    trdisp [-g geometry] [-r] [-s subset] [-w hours] database[.table] [start-time [range]]
    trdisp [-g geometry] [-hr] [-s subset] [-w hours] database[.table] [start-time [range]]

man pages differences
Removed:
    corefilesok.1 dbap.1        dbml.1        ipd2.1        
    matdoc.1      matdoc2dotm.1 orb2refdb.1   orbmag.1      
    orbtrigger.1  refd.1        zlib.3        

Added:
    BasicTimeSeries.3          GCLraytrace.3              
    Metadata.3                 MetadataError.3            
    MwpA.3p                    SeisppError.3              
    ThreeComponentSeismogram.3 TimeSeries.3               
    TopMute.3                  bin2sph.3                  
    bin2vec.3                  bplot_locate.3p            
    bulletin.pm.1              cmpfiles.3                 
    cpfile.3                   cramring.3                 
    db2mac.1                   db2sqlinsert.3             
    dbassert.1                 dbblank2null.1             
    dbcpfile.3                 dbgraph_batch.5            
    dbmon_close.3              dbmon_init.3               
    dbmon_status.3             dbmon_update.3             
    dbschema2sqlcreate.3       dbviews.5                  
    decode_quadrant.3          def2pm.1                   
    double_interval.3          encode_quadrant.3          
    eval_response_group.3      fill_ticks.3               
    find_ticks.3               gitstamp.1                 
    gxpipex.3                  interpolate_hash.3p        
    interpolator1d.3           is_executable_file.3       
    linearfitring.3            mapcenter.3                
    meanring.3                 my_ipv6s.3                 
    orbreapthr_set_verbose.3   perlpf.3p                  
    pfinterpolate.1            pix2sph.3                  
    pix2vec.3                  pixaddress.3               
    pktchannel2trace_destroy.3 printable_char.3           
    ptkobj_generate.1          show_stack_trace.3         
    signal_desc.3              simple_ringstat.1          
    sph2bin.3                  sph2pix.3                  
    tallyring.3                vec2bin.3                  
    vec2pix.3                  viewport_pixels2wcoords.3p 
    viewport_wcoords2pixels.3p windex.11558               

Added contrib:
    Basic_Time_Series.3   Gary L. Pavlis
    Datascope_Handle.3   Gary L. Pavlis
    GCLrays.3   Gary L. Pavlis
    Three_Component_Seismogram.3   Gary L. Pavlis
    Time_Series.3   Gary L. Pavlis
    Top_Mute.3   Gary L. Pavlis
    bulletin2orb.1   Jennifer Eakins
    cluster.1   Gary L. Pavlis
    cluster_cleanup.1   Gary L. Pavlis
    db2sql.1   Kent Lindquist
    db2sql.3   Kent Lindquist 
    dbfix_cals_segtype.1   Kent Lindquist
    dbmon.3   Dr. Kent Lindquist 
    dbpmel.1   Gary L. Pavlis
    dbresample.1   Gary L. Pavlis
    dmatrix.3   Robert Pavlis
    editgclgrid.1   Gary L. Pavlis]
    exportgrid.1   Gary L. Pavlis
    extract_gridline.3   Gary L. Pavlis
    gclfmath.1   Gary L. Pavlis
    gclgrid.3   Gary L. Pavlis and Chengliang Fan
    get_predicted_Parrivals.1   Jennifer Eakins
    ia2orb.1   Kent Lindquist
    iarequest.1   Kent Lindquist
    iatrigger.1   Kent Lindquist
    interpolate1d.3   Gary L. Pavlis
    makegclgrid.1   Gary L. Pavlis
    metadata.3   Gary L. Pavlis
    metadata_error.3   Gary L. Pavlis
    pathintegral.3   Gary L. Pavlis
    perldb2sql.3p   Kent Lindquist
    perldbmon.3p   Kent Lindquist
    pmel.3   Gary L. Pavlis
    pmelgrid.1   Gary L. Pavlis
    q330_baler.1   Frank Vernon
    q330_opt_pkt_mon.1   Frank Vernon
    resample.3   Gary L. Pavlis
    rtxcor.1   Gary L. Pavlis
    seispp_error.3   Gary L. Pavlis
    slowness_object.3   Gary L. Pavlis
    ustrans.3   Gary Pavlis

Parameter file differences

/opt/antelope/4.11/data/pf/db2sd.pf /opt/antelope/5.0-64/data/pf/db2sd.pf
    < mbar	1	mbar
    > mbar	1	Pa  

/opt/antelope/4.11/data/pf/db2segy.pf /opt/antelope/5.0-64/data/pf/db2segy.pf
    > #
    > # New features added in 2009
    > #
    > use_32bit_nsamp false
    > input_source_coordinates false
    > coordinate_scale_factor 3600
    > use_geo_coordinates true

/opt/antelope/4.11/data/pf/dbloc2.pf /opt/antelope/5.0-64/data/pf/dbloc2.pf
    > # Specify the table from which origin_info fields displayed in the origins panel
    > # are to be found, if other than the origin table.  Fields in netmag are assumed
    > # to refer to the magnitude field in the record where the orid and magtype matches 
    > origin_info_table &Arr{
    > smajax	origerr
    > sminax	origerr
    > strike	origerr
    > sdepth	origerr
    > stime	origerr
    > sdobs	origerr
    > conf	origerr
    > mw	netmag
    > MW	netmag
    > ml	netmag
    > mb	netmag
    > ms	netmag
    > }

    > # dbevproc and orbevproc can write arrival records corresponding
    > # to measurements for magnitudes; these "picks" cannot participate
    > # in a location, and just add confusion to the display.  Hence, 
    > # they should be ignored in dbloc_group and when a new magnitude arrival
    > # is added by dbevproc
    > # Beware: this table is referenced from dbloc_group.pf, but the 
    > # reference there is to dbloc2.pf; if you override the default
    > # parameter file, you might need to provide a special dbloc_group.pf
    > # file as well.  But this array should be pretty static.
    > phases_to_ignore &Arr{ 
    > -	# this is the null value for iphase
    > del	# del is filled in by dbpick when an arrival is deleted
    > }


/opt/antelope/4.11/data/pf/log2miniseed.pf /opt/antelope/5.0-64/data/pf/log2miniseed.pf
    < recsize		512
    > recsize		4096

/opt/antelope/4.11/data/pf/orb2dbt.pf /opt/antelope/5.0-64/data/pf/orb2dbt.pf
    > 	detev		no

/opt/antelope/4.11/data/pf/q3302orb.pf /opt/antelope/5.0-64/data/pf/q3302orb.pf
    lots of changes

/opt/antelope/4.11/data/pf/q330_calibration.pf /opt/antelope/5.0-64/data/pf/q330_calibration.pf
    <         duration       7200
    >         duration       7200    # duration <= 16380; q330 limitation

/opt/antelope/4.11/data/pf/seed2db.pf /opt/antelope/5.0-64/data/pf/seed2db.pf
    >     MM/HOUR	V	nm/sec		2.777e2

/opt/antelope/4.11/data/pf/smartpick.pf /opt/antelope/5.0-64/data/pf/smartpick.pf
    < dbpick_options
    > dbpick_options			-showassocs
    <    optionmenu np	 	- 	2,2	Next_phase P S  {Show next phase arrival with chosen phase code (np)}
    <    optionmenu pp	 	- 	2,3	Previous_phase P S  {Show previous phase arrival with chosen phase code (pp)}
    >    button     sas_on		-	2,2	Show Associations {color arrivals by assoc status (sas on)}
    >    button     sas_off		-	2,3	Hide Associations {don't color arrivals by assoc status (sas on)}
    >    optionmenu np	 	- 	3,0	Next_phase P S  {Show next phase arrival with chosen phase code (np)}
    >    optionmenu pp	 	- 	3,1	Previous_phase P S  {Show previous phase arrival with chosen phase code (pp)}

/opt/antelope/4.11/data/pf/sta_final_prep.pf /opt/antelope/5.0-64/data/pf/sta_final_prep.pf
    > balerprocbase		/anf/TA/baler/station_aof_dumps/processed	# absolute path name for processed station miniseed base name

/opt/antelope/4.11/data/pf/trdefaults.pf /opt/antelope/5.0-64/data/pf/trdefaults.pf
    > msd_tolerance		0.75
    > ignore_seed_code_errors no	# if yes, ignore problems with seed codes net/sta/chan/loc too long.
    > 				#     setting this to yes may cause problems in miniseed and seed generation

  present in /opt/antelope/4.11/data/pf, not in /opt/antelope/5.0-64/data/pf:
    msdd.pf       orb2refdb.pf  rt2orb.pf    

  present in /opt/antelope/5.0-64/data/pf, not in /opt/antelope/4.11/data/pf:
    HeaderMap.pf              graphing.pf              
    bulletin2orb.pf           ia2orb.pf                
    cluster.pf                iarequest.pf             
    cluster_cleanup.pf        iatrigger.pf             
    db2sql.pf                 makegclgrid.pf           
    dbgraph_gui.pf            metadata_defaults.pf     
    dbloc_group.pf            pmelgrid.pf              
    dbpmel.pf                 q330_opt_pkt_mon.pf      
    dbresample.pf             rtxcor.pf                
    editgclgrid.pf            seispp_attribute_maps.pf 

Schema file differences

/opt/antelope/4.11/data/schemas/Id1.0 /opt/antelope/5.0-64/data/schemas/Id1.0
    < 	Format ( "%10d" )
    > 	Format ( "%10ld" )
    and a bunch of similar changes, in this and following schemas to accomodate 64-bit

/opt/antelope/4.11/data/schemas/Status2.0 /opt/antelope/5.0-64/data/schemas/Status2.0
    < 	Format ( "%2d" )
    > 	Format ( "%2ld" )

/opt/antelope/4.11/data/schemas/build1.0 /opt/antelope/5.0-64/data/schemas/build1.0
    < 	Format ( "%5d" )
    > 	Format ( "%5ld" )

/opt/antelope/4.11/data/schemas/css2.8 /opt/antelope/5.0-64/data/schemas/css2.8
    < 	Format ( "%8d" )
    > 	Format ( "%8ld" )

/opt/antelope/4.11/data/schemas/css3.0 /opt/antelope/5.0-64/data/schemas/css3.0
    > 		42) changed primary keys of origin to include ndef and nass
    < 	Range ( "etype =~ /qb|eq|me|ex|o|l|r|t/" )
    > 	Range ( "etype =~ /qb|eq|me|ex|o|l|r|t|f/" )
    < 		event.
    > 		event.  Event with etype set to f were felt.
    < 	Range ( "keyvalue > 0" )
    > 	Range ( "keyvalue > 0 && keyvalue < 99998999" )

/opt/antelope/4.11/data/schemas/strawman1.0 /opt/antelope/5.0-64/data/schemas/strawman1.0
    < 	Format ( "%8d" )
    > 	Format ( "%8ld" )

/opt/antelope/4.11/data/schemas/SDAS1.0.ext/dlsensor /opt/antelope/5.0-64/data/schemas/SDAS1.0.ext/dlsensor
    > 	Alternate ( snmodel snident time::endtime ) 

  present in /opt/antelope/5.0-64/data/schemas/SDAS1.0.ext, not in /opt/antelope/4.11/data/schemas/SDAS1.0.ext:
    cluster                  gridscor                 q330_calibration_weblog 
    dlcmd_cal                gridstat                 rsyncbaler              
    gclfield                 hypocentroid             stabaler                
    gclgdisk                 pmelruns                 staq330                 

/opt/antelope/4.11/data/schemas/css3.0.ext/dlsensor /opt/antelope/5.0-64/data/schemas/css3.0.ext/dlsensor
    > 	Alternate ( snmodel snident time::endtime ) 

  present in /opt/antelope/5.0-64/data/schemas/css3.0.ext, not in /opt/antelope/4.11/data/schemas/css3.0.ext:
    cluster                  gridscor                 q330_calibration_weblog 
    dlcmd_cal                gridstat                 rsyncbaler              
    gclfield                 hypocentroid             stabaler                
    gclgdisk                 pmelruns                 staq330                 

/opt/antelope/4.11/data/schemas/rt1.0.ext/dlsensor /opt/antelope/5.0-64/data/schemas/rt1.0.ext/dlsensor
    > 	Alternate ( snmodel snident time::endtime ) 

  present in /opt/antelope/5.0-64/data/schemas/rt1.0.ext, not in /opt/antelope/4.11/data/schemas/rt1.0.ext:
    cluster                  gridscor                 q330_calibration_weblog 
    dlcmd_cal                gridstat                 rsyncbaler              
    gclfield                 hypocentroid             stabaler                
    gclgdisk                 pmelruns                 staq330                 

libdeviants differences
  Deleted
    my_ipaddress

  Added
    gxpipex          machine_info     my_ipv6s         show_fault       

libstock differences
  Deleted
    MD5Final             MD5Init              MD5Update            
    MDbegin              MDupdate             choose_deltime_scale 
    choose_epoch_scale   find_scalar_ticks    machine_info         

  Added
    Graph                Tickspec             bnspeek              
    bt_authenticate      bt_authenticated     bt_inet_family       
    bt_inet_ntop         bt_inet_pton         bt_lookup_port       
    bt_md5final          bt_md5init           bt_md5update         
    bt_mdbegin           bt_mdupdate          cmpfiles             
    cpfile               cramring             double_interval      
    fill_ticks           is_executable_file   legit_ipv6           
    linearfitring        meanring             printable_char       
    reaccept             reconnect            setup_fault_handlers 
    signal_desc          tallyring            xlatnum_str          


libcoords differences
  Added
    mapcenter

libresponse differences
  Added
    eval_response_group

libtr differences
  Deleted
    wf2disc wfnew   wfwrite 

  Added
    Ignore_seed_code_errors        check_MS_datablock             
    dbcpfile                       is_blank_mseed_header          
    is_mseed_header                msd_errors                     
    msd_find_data_record           msd_lookup_b1000               
    msd_next_data_record           msd_okheader                   
    msd_record_size                msd_seek_data_record_unaligned 
    msddesc                        msdrec_offset                  
    relfilepath                    trGuess_b1000_datatype         
    trMSD_TOLERANCE                trMaximum_plausible_data_value 
    trMinimum_plausible_data_value trfilter_pkt2                  
    trgetMIXED_UP_SEEDwf           trimplausible                  
    trimplausible_errors           unpack_next_blockette          

ah2db
    Add ndef and nass settings (to 0) for new origin rows.
    64 bit corrections

antelopemake
    try to fix "make static" and orbserver_static target
    remove gcc variants of antelopemake
    install some antelopemake fragments into $ANTELOPE/data/makes,
	so contrib directory can recreate antelopemake-gcc if necessary
    fix linking problems with Solaris Fortran programs: dbmag, edr2db, dblocsat2
    run exuberant ctags on perl/shell scripts also
    try to incorporate CXXFLAGS  into antelopemake
    try to move CFLAGS, CXXFLAGS and FFLAGS into antelopemake and getid exclusively
    ignore .dwarf files (-f option of dsymutil)
    add .dwarf files to list of files to remove for make clean
    add a few more files to remove to purge target
    add declarations which cause gcc to check printf arguments for elog routines
    add some info about subdirs and static target in antelope makefiles

comserv
    Try to make this compile in 64 bit

db2msd
    change -t argument in db2msd to days rather than seconds.
    also add output about interpretation of command line argument.

dbbuild
    copy sensormodel table rather than just linking to it
    avoid generating dlsensor if lead is not specified and an integer from 1-24
    correctly insert preamp response into instrument response file
    fill in pop-up menu for preamp responses
    Add bands for lower sample rates, "P", "T", and "Q".
    try to better accommodate the Q330 "environmental processor" by allowing a data logger to
	have a fixed set of non-configurable channels, which doesn't require an extra dummy sensor
	to trigger the generation of the state of health channels
    allow state of health channels to include a loc code like LKM_EP (where EP is the loc code),
    correctly generate the schanloc table.

dbcp
    add option to ignore some tables in dbcopy (like wfdisc, for instance)
    fix usage line to add -I option

dbdiff
    screen out more duplicate tests for external files
    exit from dbcmpwf with an error if one of the wfdisc tables doesn't exist or has no records

dbe
    fix bug exhibited when symbolic link pointing to table points to non-existent file
    eliminate use of uname in dbe
    add ability to specify display fields on command line for dbe startup
    take a wild guess at fields to plot when running dbgraph from dbe window
    add timestamp field to schema window in dbhelp
    add ability to see process of creating current view under Help menu

dbevents
    Add station color coding according to P and S defining/associated status.
    dbevents looks for magnitudes in the netmag table and only uses ml, mb and ms from the origin table if it cannot find them in the netmag table. 
    Add magnitude_display table in dbevents.pf that is used to specify which magnitudes to display.

dbevents_new
    major new all-perl version of dbevents 
    more capabilities and runs considerably faster.

dbfixchanids
    Change time output when there is no match to be human readable.

dbgraph
    improve record view
    some improvements in locating data points also
    rudimentary batch mode
    semi-functional map option for dbgraph
        on the viewport panel, set xmode to edp or merc to get a map,
    	put lon for x and lat for y
    	left-mouse drag selects a region for zooming in (if selection is large enough)
    	left-mouse zooms out
    	middle mouse allows panning/dragging the canvas to change view slightly

dbids
    adaptations for ipv6
    add example of problem output when ids are not in sync.
    make connection rejections verbose

dbloc2
    fix problems due to schema change for origin table
    copy the entire arrival table into the dbloc2 snapshot in the tmp directory,
	in hopes of providing all the necessary data for debugging.
    fix 64 bit problem
    ignore the values of mb, ms, and ml in the origin table, and insist
	on getting these values from netmag instead.
    ignore certain faux phases like ml generated by dbevproc/orbevproc

dblocsat2
    Add options to support automatic running from orbassoc.

dbpick
    Support for new magnitude arrival color coding.
    64-bit changes 
    Change printout for sas off command
    Add nass and ndef when adding new assocs

dbset
    improve behavior of dbset for invalid field values
    attempt to fix problem where dbset modified the lddate when the to expression was really an
	expression, and so dbputv was used instead of dbput.
    clarify that lddate is ignored in dbdiff
    rewrite dbset to allow confirm option -c to work on input view.

dbsnapshot
    clarify that dbsnapshot takes the last n records from the table, not the first n
    make default maximum 20,000 records instead of 1000 for a database table
    add pwd to dbsnapshot
    make snapshot log name dependent on database name

dbverify
    allow dbverify -N option to curtail list of duplicate records
    make dbversdwf mention the database name

dbwfexcerpt
    64 bit problem fixed

demos/bulletins/rtsys
    New rtdemo for collecting bulletininformation from
	a bulletin server at the ANF, which allows
	allows collection of various USGS, regional network,
	and ANF/UCSD bulletins (catalogs) from a central location
	with easy translation into a usable css3.0 database.
    Bulletins are collected via screen scrapes, ftp, etc. at
    the ANF and then made available as /pf/*/orb2dbt packets.
    Through the examples set out in this demo, remote Antelope
    users can collect these packets via orb2orb and then write
    out desired bulletins to disk on their local hosts.  This
    facilitates associations with external bulletins by
    analysts using dbloc2 and for automated real-time processing
    using the dborigin2orb program.  It should alleviate problems
    encountered by various groups who try to keep up with changing
    URLs and formats from the various regional nets and NEIC.

    GSN demo configuration changed to use cdorb2db and to
    compute new Mwp magnitude. Script added to automatically
    grab catalog from USGS/NEIC and associate with events.

edr2db
    Make sure ndef and nass are never NULL values.

elog
    add an error message when stuff is left on error log

examples/c/db
    add an example of dbex_evalstr, and a new program dbassert for certify tests
    add man page to example, install dbassert

examples/c/tr
    change verbosity in several example codes, particularly chkmsd
    check all variants of miniseed datatypes in chkmsd

examples/c/wffilave
    Add PINT filter for pivot integration to support Mwp
    64-bit changes

examples/orbevproc
    Addition of Geoscience Australia Mwp method.
    Add station_number_minimum, station_percentage_minimum, uncertainty_maximum screeners.
    Add -keeptmp option for orbevproc.
    Add integrated displacement trace output generation for debugging purposes.
    Changes to force origindone disposition even when events don't pass any of the preliminary screening tests, such as proper distance ranges.
    Fix problem where new rows are not initialized with proper NULL values.
    Add dbblank2null script for converting blank fields to NULL values.
    Make wfreap queue size unlimited to handle problem with blocked fifo_push when time to join thread.
    Use pktchannel2trace_destroy to destroy all trace resources when deleting an event.
    Use orbreapthr_set_verbose to cause reap thread status logs.
    Fix filter string bug found by Gert-Jan
    Add coding to destroy and re-create perl interpretor whenever perl processing queue is empty.
    Make default max distnacec 90 degrees for Msusneic.pm

examples/perl
    add utility for inspecting simple ring buffers
    some minor changes to simple_ringstat
    new program which replaces colons with periods in filenames in Datascope databases

fix_miniseed
    count correctly the number of files changed
    change fix_miniseed to allow replacing seed codes with invalid versions with -f option

ipvalidate
    adjust to differences in returns from getaddrinfo on mac/linux/solaris
    The canonical name doesn't seem to be returned on mac or linux.
    correct a mistake in ipvalidate, update test for different behavior of inet_ntop

k22orb
    Changes to make compile without warning on mac.
    Added POSIX-based termios handling of serial interface.
    Split out cfsetspeed call to cfsetispeed and cfsetospeed
    since Solaris does not support cfsetspeed
    Make so that serialbuf code works properly on linux.
    Fairly extensive mods to fix a dialout/dialin contention problem Giovanni uncovered.

ldlibs
    fix up parameter file so that ldlibs works on Snow Leopard

libPkt
    more checking when creating db packet
    add ability to unstuff floating point packet in perl
    remove zlib from Pkt link, use system libz instead
    Added BGENC (big generic compressed) packet with 1000000 max limit on nsamp and nsamp as a 32 bit int (for JH/APL).
    add first pass at a message packet

libassoc
    Fix bug relating to merging netmag rows properly.
    Make so that prefor for associated origins with the same number of ndef
    goes to the one with the highest nass instead of the lowest residual.
    Fix problem with archive_if_not_associated
    Make so that ndef and nass are never NULL in new origin rows.
    Fixed bug related to merging events with no associations but with netmag entries, such as produced by certain external bulletins.
    Fix bug that prevents existing event with no associations (e.g. external catalog event) from associating with new event with associations.
    Add more verbose printing option
   
libbrttpkt
    Add pthread_join when threads are killed to prevent zombies.
    Add notifies when threads start and exit.
    Add pktchannel2trace_destroy routine that will free a pktchannel2trace object and also destroy its associated trace database.
    Add verbosity controlled printout in orbreapthr to announce thread creation, deletion and joining status.

libbrttutil
    Add reading/writing bugrids from/to files. Fix bug in unstuff.
    Clean 64-bit compiles plus fix various lint problems.
    New tool for creating, reading, writing, transforming SAC file images to/from trace and origin rows. 

libdefunctpkt
    remove defunctpkt from core antelope

libdeviants
    update sysproc to work on Darwin, also eliminating the proc2pidstat call
    update the status routines -- ps2orb uses sysproc -- to use announce() instead of CVS/RCS revision codes.
    add man page for show_stack_trace, add to mac, sun, linux
    add prototypes for strlcat and strlcpy to deviants.h (on linux)

libds
    make dbsubset more verbose about failure when a field is invalid
    add method for finding and replacing field values which don't satisfy range conditions in dbset
    try to intercept some parsing problems in dbprocess; add dbunjoin
    remove optimization which uses previously calculated index if the leading keys are identical
	-- gives the wrong answer when the unique flag is used.
    clarify some of dbget/dbgetv better
    clarify return values for dbex_evalstr(3)
    add abspath to datascope calculator functions
    change the way dbselect(3) handles attempts to print fields which are not part of input view
    make dbnextid start to complain and/or die as an id approaches the 8 character maximum in css3.0
	This is a hack, and should be done more generally. On the other hand,
	overrunning the size of the field is very painful, and will likely damage
	the database.
    try to make the error message from dbget a bit more understandable, when it's passed a bad db pointer.

libforb
    fix leaks in forb routines during forbopen; this is probably what
	is going wrong on some marmots, but we have no data to confirm it
    try to flag problem like evidently Jamie has encountered on a marmot,
	where forb files have names which are not representative of the
	times of the internal packets.  I don't understand how this could
	happen, but this change would at least flag the problem.
    add option for verbosity during synchronous replay of packets while waiting for the next packet time

libgpl
    Fix bug relating to postscript plotting of station-windowed traces.
    Add capability to set color of magnitude related arrivals that are affiliated with the selected origin. Prioritize layering of arrival flag overlays.
    Back out some of the 64-bit changes to allow for user defined colors.
    Support for decimation generic filtering.
    64-bit changes

libol
    latest attempt to get gpl working properly w/64 bit
    This version corrects a number of places where va_arg asked for double, but should
    have asked for float.

libscv2
    add finit_db to scv routine so that seed_loc, etc, use the same database to look up seed codes

libstock
    fix bug in elog_init
    allow argument of 0 to snooze
    allow nano and pico seconds in strtdelta.
    make a special case for 0 in strtdelta, so it shows 0 seconds, not 0 picoseconds
    move some non-thread safe code out of elog:
        replace signal_bysig  and signal_byname with thread-safe signal_desc
    working version of legit_fd(3) which allows ipv6 addresses; ipvalidate(1) upgraded also
    first pass at general routine for authenticating socket connections through sgd(1)
    utilities for converting between printable and struct sockaddr versions of ip addresses
    add new function is_executable_file
    correct some leaks in pf routines
    correct error in chomp string routine
    be a little more restrictive about allowing datafile to return a file
	that is actually specified in the environment variable: require that it
	be an absolute path.
    fix some leaks and errors with pf routines and references
    remove some more debugging code and re-enable usermethod on the mac
    fix a bad test for open result in a number of locations (problem identified by Kent)
    add a capability of forcing a stack trace from elog
        The stack trace is forced by making the elog message
        start with the string '*stack*'.  Alternatively, the
        tag can start with '*stack*' to perhaps dynamically generate
        a stack trace at a particular complaint.
        You can try this with the elog command, eg "elog '*stack*'"
        or "setenv ELOG_TAG '*stack*@cd' ; elog"
        This might be most interesting in cases the code should
        never reach, so we get a little more information if we're are wrong.
    make the thread id %T in elog tag at least compile
	the idea is fundamentally wrong: thr_self doesn't return
	something like an integer, and trying to print it is the
	wrong thing to do.  But it's still useful on sun's, and perhaps
	something can be done to make it useful on macs.
    attempt to add some new simple ring routines:
	*) meanring to calculate mean and standard deviation
	*) linearfitring to calculate linear least squares fit line
	*) cramring to push only changes into ring.
    add new stock routine which compares two files
    add cpfile routine
    allow "5days" in str2epoch input
    improve the verbose output of wait_for_time to provide more information.
    specifically allow /dev/null in ELOG_DELIVER
    add double_interval(3) as another way of gauging the difference between two doubles which are very close;
	returns the number of distinct values between the two doubles.

libtcl
    use exit instead of "destroy ." to quit from wish app, to avoid core dump in dbloc_map on mac.

libtclbrtt
    wholesale replacement of cvs strings like Revision with git alternatives like announce()
    and null arguments to banner.

libtr
    fix some small problems in segtypes tables, make trdefaults version identical
    improve the scanning of files for miniseed headers, trying to avoid
        problems with endless loops due to unfortunate offsets to the next blockette
        in either bogus or corrupt seed data blocks
    Add trfilter_pkt2 - same as trfilter_pkt except with tstart arg for
	filters that need an absolute time as a parameter, such as the
	pivot integrator.
    add a little extra insurance while reading miniseed header
	against the possibility of finding all blanks
    fixed problems in umsd routines related to opaque blockettes
    return more errors in miniseed instead of silently ignoring them
    intercept a byte swap problem with miniseed records from the future
    changed error message to evade bus error in vsnprintf in elog
    try to eliminate bus error problems printing out int64_t mseedp, mseedn, etc, in miniseed routines
    fix initialization problem with has_b100, has_b1000, etc flags for miniseed records with bad standard seed headers
    use a better, more portable approach for printing out int64_t integers
    correct prototypes to change int to long in a number of man pages
    add 300 blockette to allowed blockette types in miniseed
    try to handle various problems in miniseed from older SEED volumes; in particular attempt to guess the dataformat
	depending on the network, using a table in trdefaults.pf, and guess the record size by pattern matching
	against the miniseed file at 512 byte block boundaries.
    recognize and handle some more ways miniseed data can be screwed up.
    Add a "mixed up miniseed" datatype MS for files where miniseed blocks are out of order or have varying record sizes.
    add msd_tolerance to trdefaults.pf, which relaxes the tick tolerance somewhat for miniseed records within a single wfdisc reference.
    correct dmsd to guess the b1000 blockette if there isn't one present
    fix db2sd to die if invalid seed codes are returned from the map routines
    add a new utility routine for copying database external files (particularly waveforms)
    attempt to allow ignoring seed code errors through trdefaults.pf
    attempt to eliminate situations where orb2db writes miniseed
	where the internal miniseed time tags fail the timing tolerance test when they're
	read back by trgetSEEDwf.
    much more strict checking of miniseed headers, requiring upper case letters, no underscores or question marks
    make the tolerance used for checking miniseed internal time tags a separate parameter in trdefaults.pf
    try to avoid problems in the transition between cdorb2db and orb2db by making the default waveform names different
	cdorb2db appends an = sign by default to the wfname, db2msd replaces this with +
    fix so that msd2wf doesn't quit on log miniseed blocks

libtt
    fix problem with ttcalc on 64 bit snow leopard
    minor cleanup of slowness man page
    try to eliminate some name conflict with slowness_object(3)

libtt_locsat
    This is a first attempt at a tt(3) interface for dblocsat travel time tables.

libttgrid
    Add capability to write out performance grids to a file for subsequent display. 
    Change ttgrid file by adding min and max regular grid coordinates and strike. 
    Add new screening parameters (dont_apply_weights_for_relocation, drop_original_if_relocation_fails, drop_relocation_depth).
    More verbose identification of threading-related errors.
    Check to make sure number_threads is set properly. 
    Add more identification when pmtcomp_processthreads fails. Fixup so compiles cleanly on 64-bit.
    Add in changes relating to plot grids
    Fix rules for making the utele grid generation programs.
    Open up matching origin thresholds a little.

libwffilbrtt
    Add flag to BW filter to control recursion past values preloading.
    Major changes to implement new S-domain polynomial factors (SPF) filter stage for doing instrument deconvolutions in a generalized way. 
    Add three more SPF factor definitions to round out all possible first and second order factor types.
    New decimation generic filter (DECIMATE).
    Up max stages to 100
libz
    stop using antelope version of libz, use system version instead

log2miniseed
    updated log2miniseed to provide a little better verbosity, and
    make the default record size 4096 instead of 512.

miniseed2days
    attempt to show what file contained the conflicting miniseed when miniseed2days
    complains about a block with a time before a previously encountered time

msdd
    improve the interactive mode by improving the record seeking behavior 
    better debugging with msdd -i due to offset command
    better tracking of sequence number and record number
    add hexdump and excerpt commands to interactive mode
    facilitate debugging large miniseed files
    show opaque blocks
    improve the hexdump by showing offset, and reading 0x hex numbers
    Allow specifying size of hexdumps
    be a bit more cautious trying to uncompress bad miniseed record
    fix a 32/64 bit problem
    add option to ignore miniseed errors on command line
    change display options a little to show when b1000 is guessed

orb2db
    add option to not keep any waveform files open for writing
	This could be better for the q330 status files, which probably get written
	once or twice a day.
    complain when flushing a channel for stagnant data, so that it shows up in log
    explain the behavior more clearly in the man page and in the parameter file

orb2dbt
    Add error printout when unstuffPkt returns an error.
    Add detev to nocheck table in default orb2dbt.pf
    Add -vvv option

orb2disk
    add warning about large deviations in incoming packet order

orb2ntp
    make moving clock backward message include how far back in orb2ntp

orb2orb
    attempt to eliminate the anomalous -f option for orb2orb, and just use standard forb(3) semantics
    add option to delay while copying packets from one orb to another
    This could be useful for providing an orb with delayed packets only.

orb2pf
    Fix memory leak.

orb2refdb
    fix blunder with open return code

orbassoc
    Economize on auth field modification.
    Add documentation for no_output parameter.
    Set up to properly merge events with no associations but with netmag entires, like produced by certain external bulletins.
    Add rundblocsat to interface with dblocsat2 to use for automatic relocation using dblocsat2
    Changes to support ability to output performance grids for display.
    64-bit changes.
    Document -leavetmps command line argument and gridfilename parameter for catching associator grid files.

orbserver
    fix for change to legit_fd arguments
    Add in some examples for rtexec usage.
    commit the hack to ignore a failure to figure out the user name, which caused problems in Pakistan (due to Mach bootstrap port)

orbstat
    make the names command in orbstat always clear the cache before each execution as requested

orbxchange
    fix a leak and an error in orbxchange
    fix 64 bit problems

pde2origin
    Make sure nass and ndef are not NULL.

perl Datascope
    fix some bad print formats
    add snooze to perldb
    add the new ring routines to the perl interface
    add mapcenter to perl interface

perl orb
    correct usage of orbresurrect 
    avoid problem with compiler options in perl on Darwin
    a variety of small, but important, changes for 64 bit
    use src_subcode in constructing srcname, previously ignored 

perlpm
    fix small bug recognizing end of array or list in pf file
    try to improve ptk fonts on macs
    only allow one alert window at a time
    intermediate changes to ptk and dbgraph
    try to eliminate error messages about hostid
    fix up various syntax and error handling problems
    install perlpf.3p man page with other man pages
    try to eliminate bad fonts in ptk applications
    eliminate complaint about O_RDONLY by replacing it with 0
    add some routines for interpolating values from a hash into character strings (like getid)

pktmon
    new version adds:
    * new announce line
    * stddev, linear fit
    * command function to run external commands
    * debug statement to print message at every evaluation of test
    * channel screening in addition to packet screening, so some channels don't have to be saved
    * new method of "decimating" the stored data which saves a new value only when it has changed
    * new tally method which counts the number of entries within a time window
    Some of the functions should probably be changed to return a value only if the requested
    time window is all represented.  Eg, avg(XYZ, 600) should perhaps never return a value
    unless there's at least 5 minutes of data in the ring.
    The stddev and average should probably be changed to weight the average and standard deviation
    by the time difference between samples, particularly if the data has been "decimated"
    But these changes will wait for later.
    change test for end-of-file on orbreap to continue to process through stash packets.

pkttypes
    improve the integration between libPkt/packets.pf and pkttypes(1)

ptkbplot
    try to improve some error messages from tk bplot library
    explicitly linking in the tk library seems to eliminate some
        dynamic loading link failure which
        prevented an actual error message from emerging
    made a message about illegal mode argument more explicit
    add viewport_pixels2wcoords, viewport_wcoords2pixels, and bplot_locate to man page header
    put image caching on a disable/enable flag.
    Rearrange caching logic and remove debug printout.
    Fix bug in bplot_locate where multiple canvases are used.

q3302orb
    Convert over to POSIX standard calls for termio control
    Increase some string buffer sizes to account for long /dev/tty names on mac.
    Update to using POSIX termios stuff.
    Split out cfsetspeed call to cfsetispeed and cfsetospeed since Solaris does not support cfsetspeed
    Add definitions for parsing QEP data packets.
    Add documentation for timeout_datathread_hang parameter.
    Add QEP data packet parsing.
    Fix potential unstable wait-standoff situation when using extensive data debugging (log messages causes write queue to fill which generates more log messgaes, etc.)
    Recognize and decode various new structures and requests to support environmental processor.
    More QEP coding - implement EPCONFIG commanding
    Make state and stash aware of EP channels. Make EP structures available for getconfig. Add Q330 "capability" bits to ident report in q330util.
    Implement ep channel -> pf status packet output. Update q3302orb man page and parameter file.
    Add EP channel processing for rates higher than 1 sps.
    More changes to support EP channels with samprate > 1 plus various bug fixes.
    Increase buffer size for reading token memory
    Make so 64-bit compiles don't complain about implicit 32 to 64 bit conversions.
    Breakout of registration when too many permission errors occur.
    Fix NULL ep channel data problem
    Fix datathread watchdog bug causing bogus restarts when registration fails.
    Fix various lint complaints
    Add loc code "EP" to Quanterr Environmental Processor channels
    Fix logic bug in the bit manipulations for EP configuration
    Add EP config change bit in status processing
    Change MTU to 760 to accomodate base 96 encoding.
    Add capability for obtaining Paroscientific channels for external humidity and temperature.
    Add data debug printout of serial interface data values from Paroscientific sensors.
    Add raw UDP packet caching for diagnostic purposes.
    Split out data port oriented watchdog from control port oriented watchdog monitoring.
    Add timeout_controlthread_hang parameter.
    Fix memory alignment problem seen only on SPARC systems for 64-bit builds.

qed2origin
    Make sure ndef and nass are not NULL.

reporting.5
    add another reference on reporting man page

rtdemo
    account for having more than 9 demos -- this is just a hack, but should work for a few years
    fix some fonts to be prettier

rtexec
    remove corefiles_ok program
    don't worry about differences in ANTELOPE when running rtexec -k
    rather than mangle old incident files in the logs directory,
    just remove the older ones, and leave the new ones alone.

rtincident
    include CrashReporter report (if we can find it) with rtincident

rtoutage
    attempt to fix problem with logic in rtoutage causing some stations
    to be marked down which actually had all their data.  Anton
    discovered this problem.

sac2db
    move sachd, db2sac, and sac2db to contrib

schemas
    Add ndef and nass as primary keys
    Make legit ranges of ndef and nass >= 0. Add sentence in
    nass description about how this should be equal to the
    number of assoc rows that join with a particular origin
    row.
    Added info about addition of ndef and nass
    to change list visible in dbhelp.
    Added "f" to valid range of etype so that
    indication of felt events could be tracked.
    try to eliminate %d instead of %ld in schemas for 64 bit

schemas/css3.0.ext
    address dlsensor table issue
    With dbbuild, records in tables are closed (endtime != null) when
    a new matching record is added which has a conflict.
    If a record is added to dlsensor due to one configuration, and then
    the datalogger changes, a new record is added to dlsensor, but the
    previous one is not closed, because it does not conflict with the
    new record: the primary key is different.
    To fix this, I added snmodel snident time::endtime as an alternate
    key for the dlsensor table.  This now causes a conflict, which closes
    the old record.
    This appears to work.
    I also added some more description of how the lead specs (from the
    axis statement) can be morphed into the chident field -- if they
    follow the naming convention lead==1-12.

seed2db
    change format for sensitivity error message from f to e
    to avoid printing out about 15 significant digits when the
    test is for a relative difference of < 1%.  This makes it
    easier for the certify test to deal with (because the
    answer is slightly different on different machines) and is
    a little easier to read, too.
    Use modified version of msd2wf which is a little more forgiving about
    apparent time ordering problems. A common situation when requesting
    SEED data from the DMC is for channels to be repeated. This change
    will process properly through these cases. This is done in this
    change by ignoring blockettes that are out of time order but continuing
    to process other blockettes without a fatal error. Probably will add a
    "strict" option in the future where blockettes out of time order will
    generate new wfdisc entries regardless of the number of wfdisc rows
    that end up getting generated.
    Add new -strict_data_processing option and document in man page.
    Add MM/HOUR conversion

tclds
    add TABLE_CREATION to dbe Help menu
    better tcl error routine with stack

tksend
    Make so tksend dies whenever the maximum message length is exceeded. Presently it just complains but continues to pack the message buffer past its allocated size.

tkshowmem
    add another man page

trdisp
    add command line flag to suppress complaints about reverse integration problems in miniseed

trexcerpt
    change verbosity for -vv and straight copies to announce success

trmapnames
    move trmapnames into utilities directory
    make the output of trmapnames a little more readable

trwfname
    fixed some minor errors
    
ttgrid
    Add description of pxstamin, ... in man page

uwd
    improve relpath by adding interactive mode, and fixing test of correctness

xdiff
    minor tweaks: ls /opt/antelope/testdata and data so that it's mounted before tests (on macs)
    complain if exception file can't be opened
    clean up hexdump output


Perl 5.10 

    This article has interesting detail about Perl 5.10:

	http://www.perlmonks.org/?node_id=654086

    * To get any of them, you have to have the statement:

	   use feature ":5.10" ;

    * The // operator:

	   $a // $b

       is the same as

	   $a ? $a : $b

    * new switch statement:

       given ($expr) {
	   when ( /re1/ ) { do one thing ; }
	   when ( /re2/ ) { do something else ; }
	   default        { otherwise do this ; }
       }

    * There are a bunch of regular expression enhancements,
       most of which I don't understand.  But it seems it
       might be possible to match patterns with embedded matching
       parens (or curly braces, etc), for instance.

    * The smart match operator is like == and eq and =~ all crammed
     together, with a few extra features added as well.  Smart match
     determines whether two objects match, regardless of what type of
     objects you throw at it.  So you can directly compare hashes and 
     lists with it. 

     It's used in particular in the new switch statement.  Here's an
     example from perlsyn(1):

	      given($foo) {
		  when (undef) { say '$foo is undefined'; }
		  when ("foo") { say '$foo is the string "foo"'; }
		  when ([1,3,5,7,9]) { say '$foo is an odd digit';
		      continue; # Fall through
		  }
		  when ($_ < 100) { say '$foo is numerically less than 100'; }
		  when (\&complicated_check) { say 'complicated_check($foo) is true'; }
		  default { die q(I don't know what to do with $foo); }
	      }

	  "given(EXPR)" will assign the value of EXPR to $_ within the lexical scope of the block, so it's similar to

		  do { my $_ = EXPR; ... }

	  except that the block is automatically broken out of by a successful "when" or an explicit "break".

	  Most of the power comes from implicit smart matching:

		  when($foo)

	  is exactly equivalent to

		  when($_ ~~ $foo)



    * You can write

	   my $_ ;

       in a subroutine now.

    * There are now "static" local variables, declared as state (instead of my) -
       they retain their value between subroutine calls.  The initialization is
       executed only the first call, eg:

	   sub sequence {
	       state $cnt = 1001 ;
	       return $cnt++ ;
	   }

    * Stacked file test; write

	   -e -x $filename

       instead of

	   -e $filename && -x _

    * Previous versions of Perl warned when you interpolate or concatenate
     a variable containing the undefined value.  That's handy, but 5.10
     goes further by telling you which variable contains the undefined
     value.


    We've put

       use feature ":5.10" ;
       use strict ;
       use warnings ;

   into the perl template, but not in the xpl and xppl templates.
   They're a good idea in every script, but are apt to break or cause a lot of warning
   messages in existing scripts.  Many of the Antelope scripts have had these added, and
   occasionally you may see a message like:

    Please bring it to our attention if you do.


1999 C Standard


    ** c++ comments:

    // this is a comment

    ** designated initializers:

       struct xyz { int a; int b; int c[99]; };
       struct xyz AnXyz = { .b = 99, .a = -99 };
       // member c is "zero'd" since it is not uttered in the init list

    ** variable declarations within for loop:

	   for (int i=0 ; i<3 ; i++ ) {
		   // this is the scope of i
	   }
	   // the loop variable i is not in scope here

    ** variables can also be declared anywhere before they're used, not just at the beginning of sections.

    ** The pseudo variable __func__, which can be printed out as the enclosing function.
	   There's also __FILE__, __DATE__ and __TIME__, (these may have been present before)
	   which may be a better way of embedding versions in
	   code.  With the move to git, this could be important.

    ** To ring the bell, printf("\a") ;

    ** variable argument list macros, eg;

       #define DEBUG_PRINTF(...)  fprintf(stdout, __VA_ARGS__ )

    ** it's no longer ok to implicitly declare functions or variables as int; it must be explicit.
	   eg,
		   main()
		   {

	   is wrong, it must be:

		   int
		   main()
		   {

    ** there's an inline keyword, which should cause a subroutine to be inserted whole
	   into whereever they're used, instead of causing a subroutine call.  Evidently,
	   such inline routines are specific to a source file, and must be declared static.

    ** There's a lot more effort to help mathematical programs:
	   There's a lot of talk about floating point and handling things like roundoff, the
	   net effect of which seems to be to move closer to fortran.

    ** There's a new _Complex and _Imaginary type.

       _Complex double cd = -99.99; // imaginary part is zero
       // either order ok
       double _Complex cda[] = {
	   cd, -cd, cd, 1.23 * __I__
       };
       double d = cda[1]; // imaginary part tossed

       _Imaginary double id = 99.99 * __I__;

    ** There are new generic math functions, accessed with 

    ** There's a new boolean type.
	       _Bool b = 1;

    ** The remove() function is like unlink, except it will rmdir an empty directory.
    ** now you can have 1023 cases in a switch statement (oh, boy!!)
    ** identifiers now have at least 31 case sensitive characters (C89 spec was 6!!)
    ** there are a bunch of new format specifiers
    ** there are a bunch of new strftime format specifiers
    ** You can use an otherwise blank line with a single # for 'spacing'.
    ** The minimum maximum line length is 4096 bytes.
    ** The maximum number of characters produced from a single format specifier is 4095 (instead of 509).