Aug 26 2024
- hstlib.c, hstlib.h: added routine GetUseStandardHistoryFiles()
- srvdbase.c: build id now 5774

Jul 21 2024
- tbufsrv.c, tbufsrv.h: allow setting/growing the capacity of the buffered properties table
  (was fixed at 512)

Jul 12 2024
- toolkit.c: add a LFMT() around the format in DataValueToString()
- clntools.c: some talarms tweaks.
- srvquery.c: try to get rid of a VxWorks warning.

Jul  9 2024
- syslib.c, almlib.c: some diagnostic tweaks + a big fix with a 'static' int in feclogWriteFile.

Jul  7 2024
- various modules: new AMSr5 alarm introduced. other tweaks.
- srvdbase.c: build id now 5773
- tinedefs.h: release 5.3.0 declared

Jul  3 2024
- client.c: fixed cleanup of access locks.
- other modules: ensure buffer space in a couple of routines. SMALL_TINE_LIB tweaking.
- srvdbase.c: build id now 5771

Jun 21 2024
- toolkit.c: replace non-ascii and non-umlaut chars with a '#' in routine ensureAsciiCharacters().
- iplib.c: typo in comment fixed
- srvdbase.c: build id now 5770

Jun 13 2024
- toolkit.c, toolkit.h: added routine GetNumberFromFormattedData().
- iplib.c: some SMALL_TINE_LIB & VXWORKS restructuring.
- srvdbase.c: build id now 5769

Jun  4 2024
- server.c: if requested property is a registered property as is, then ensure the registered case.
- srvdbase.c: build id now 5767

May 29 2024
- numerous routines: much re-shuffling of #ifndef SMALL_TINE_LIB sections.
- server.c: concmp() (contract compare) now makes case-insensitive compares of address names in order to ensure 
  the name-space collapse of effectively identical contracts.
- srvdbase.c: build id now 5766

May 23 2024
- Platform/NIOS/*, dblib.c, iplib.c, prolog.h, server.c, srvcore.h, srvdbase.c, srvip.h,
  syslib.c, ttycmd.c, ttycmd.h:
  remove macro NIOS and the corresponding "NIOS"-platform for building in an NIOS environment
  srvdbase.c: build id now 5766

May 21 2024
- Platform/VMS.AX/devsrv.c, Platform/VMS.AX/sineqm.c, Platform/VMS.VX/devsrv.c, Platform/VMS.VX/sineqm.c,
  Platform/VxWorks/devsrv.c, Platform/VxWorks/sineqm.c, Platform/DOS, client.c, clnip.c, dblib.c, dbtools.c,
  dbtools.h, hstlib.c, iplib.c, prolog.h, server.c, srvcore.h, srvdbase.c, srvip.c, srvip.h,
  srvquery.c, srvwizard.c, swaplib.c, syslib.c, tinetype.h, toolkit.c, ttycmd.c, ttycmd.h:
  remove macro DOS and the corresponding "DOS"-platform for building in an MS-DOS environment
  srvdbase.c: build id now 5765

May 21 2024
- toolkit.c: apply extra digits to CF_FLOAT output as well.
- srvdbase.c: build id now 5764

May 15 2024
- toolkit.c, toolkit.h, syslib.c : added routine SetDisplayExtraDigits() and env FEC_DISPLAY_EXTRA_DIGITS
- srvdbase.c: build id now 5763

Apr 24 2024
- toolkit.c: change logbook server name to Logbook.Proxy
- srvdbase.c: build id now 5762

Apr  4 2024
- clntools.c: added 'host' to tservers output in verbose mode.
- toolkit.c: fixed a copy/paste length problem in PrintToLogbook.
- srvdbase.c: build id now 5761

Apr  2 2024
- toolkit.c: fix a VxWorks initialization warning.
- srvdbase.c: build id now 5760

Mar 28 2024
- toolkit.c : added PrintToLogbook
- srvdbase.c: build id now 5759

Mar 14 2024
- pytine.cpp: fixed problem pushing structures (from dictionaries)
  pytine version now 1.2.2

Mar  7 2024
- srvdbase.c, server.c, srvcore.h: add checkFailoverStatus() to the server cycle tasks
- srvdbase.c: build id now 5758

Mar  4 2024
- hstlib.c, srvdbase.c: allow unsigned int system stamp
- srvdbase.c: build id now 5757

Feb 21 2024
- errlist.c: ensure code argument >= 0 in the 2str() routines.
- toolkit.c: fix a max/min swapper bug.
- srvdbase.c: build id now 5755

Feb 12 2024
- client.c: apply known format and size to dependent CF_DEFAULT links
- tinedefs.h: revision now 5.2.8

Feb  7 2024
- tinetype.h, client.c, almlib.c, srvquery.c, hstlib.c : tweaks to filter links.
  allow ORing and ANDing validity conditions.
- srvdbase.c: build id now 5754

Dec 11 2023
- iplib.c, hstlib.c: remove any white space (e.g. CR-LF) in an error message prior to logging
- srvdbase.c: build id now 5753

Nov 22 2023
- clntools.c: check for BOOLEAN in tput/tsend ...
- dblib.c: allow strtobool() to handle numbers input as strings
- srvdbase.c: build id now 5752

Nov  2 2023
- eventools.c: added TCP option to getArchivedData + automatically use TCP if payload > 64 KB.
- syslib.c, tinetype.h : added GetFormatSizeInBytesFromDataType()
- prolog.h: added an #ifndef UNUSED around #define UNUSED
- srvdbase.c: build id now 5751

Sep 19 2023
- tineRepeater.c: goto 'oneAtATime' for all 'device oriented' target servers.
- client.c, srvcore.h: add a 'freeMemory' parameter to flushGlobalsTable;
  include flushGlobalsTable() in CloseClientLinks().
- srvdbase.c: build id now 5750

Sep 13 2023
- toolkit.c: tweaked GetDevicePropertyInformation() so that it first tries with the structure tag.
- threader.h, tineRepeater.c: CR-LF business
- srvdbase.c: build id now 5749

Aug  9 2023
- server.c: trival change: replace a macro with standard routine in a couple of spots
- toolkit.c: in GetValuesArrayAsString() use type USPECTRUM instead of DSPECTRUM on the stack.
- srvdbase.c: build id now 5748

Aug  8 2023
- syslib.c: ensure a 0 terminated log file string in readFecLogFile()
- srvdbase.c: build id now 5747

Aug  3 2023
- server.c: a tiny diagnostic tweak (hardly worth the bother)
- srvdbase.c: build id now 5746

Jul 21 2023
- ttycmd.c: fixed VXWORK compile switch problem
- srvdbase.c: build id now 5745

Jul 20 2023
- server.c: add another sanity check in getConsumerRequest.
  Only allow a network client for the current protocol level (no legacy support).
  Add an unused (but it's available!) debugging routine 'dumpContractToScreen()' for
  use in hacking for problems.
- srvdbase.c: build id now 5744

Jul 11 2023
- pytine.cpp: added more optional arguments to register_server() to obviate the need to call
  register_fec().

Jul  6 2023
- toolkit.c: fixed a warning (and possible issue with string remapping).
- srvdbase.c: build id now 5743

Jun 29 2023
- srvquery.c: in local history query reassign the array index parameter for each pass in the do/while semaphore_busy!
- srvdbase.c: build id now 5742

Jun 28 2023
- server.c, syslib.c: allow for a longer (up to 512 bytes) input string in the commands.log
- hstlib.c, srvquery.c: more local history diagnostics in the msglog.
- srvdbase.c: build id now 5741

Jun  8 2023
- tinedefs.h: declare version declare 5.2.7
  on the occasion of licensing the TINE JAVA libraries under Apache 2.0 Open Source License.

Jun  8 2023
- server.c: protect against renegade contract requests with wild input data sizes
- srvdbase.c: build id now 5740

Jun  7 2023
- Apache 2.0 License
- toolkit.c: filter out file error in OpenSettingsFile() for the stock properties
- srvdbase.c: build id now 5739

Jun  5 2023
- syslib.c: bad idea to remove a 'static' in GetDataTimeString()!
- srvdbase.c: build id now 5738

Jun  1 2023
- repeater.c, tineRepeater.c: monitor starttime of target and log it when the repeater is not in sync.
  fix issue with repeating doocs servers configured in the GENS.
- server.c: log it if eqm sets dout->dArrayLength to a larger value.
- ttycmd.c: allow vxworks to suppess printf()s in dbglog()
- srvdbase.c: build id now 5737

May 24 2023
- toolkit.c: better error reporting when save-restore 'save' fails
- srvdbase.c: build id now 5736

May 10 2023
- tineRepeater.c, repeater.c: introduce option /sched=<property list> which will automatically
  use default mode = CM_DATACHANGE, attach a property notifier to the listener, and schedule
  those notifying properties that are in the given property list.
  app version now 2.1.0

May  4 2023
- client.c, server.c, srvquery.c, prolog.h: tweaks to get some struct array initialization to
  compile without warnings on various platforms
- srvdbase.c: build id now 5735

Apr 18 2023
- VxWorks tweaks
- srvdbase.c: build id now 5734

Apr 11 2023
- prolog.h: give #ifdef VXWORKS an 'alloca' cover routine.
- others : numerous VXWORKS tweaks
- srvdbase.c: build id now 5733

Mar 31 2023
- hstlib.c: another VxWorks tweak

Mar 30 2023
- syslib.c: better VxWorks macro switch
- srvdbase.c: build id now 5730

Mar 29 2023
- almlib.c: don't let the 'ALM_APPLYNAME' encoding escape!
  And fix a string formating problem getting the applied name correct.
- dblib.c: added a fix for Daniel Franke's windows compiler.
- toolkit.c: cast char to int (to avoid a VxWorks warning) in ensureAsciiCharacters().
- syslib.c, srvip.c, srvip.h: avoid some VxWorks warnings/problems.
- srvdbase.c: build id now 5730

Mar 28 2023
- clntools.c: fixed problem determining the input format in tsend

Mar 27 2023
- pytine.cpp: use an explicit byte array 'object' for the image frame field for calls to get images.
- almlib.c: incorporate 'gIgnoreCentralServices' in calls to remove CAS alarms and to get the region rules.
- srvdbase.c: build id now 5728

Mar  9 2023
- server.c: don't let an incoming contract give a polling interval > MAXALLOWED_POLLINTVL
- srvdbase.c: build id now 5727

Mar  8 2023
- ttycmd.c: fixed issue in InterpretCommand for registered users functions
- srvdbase.c: build id now 5726

Mar  6 2023
- syslib.c: add check on gSystemMutexSetInitialized in CloseSystemMutex().
- srvdbase.c: build id now 5725

Mar  2 2023
tcycler.c: add a check for cycleTerminated in the destructor.

Feb 28 2023
- client.c, srvquery.c, syslib.c, tinetype.h: add thread-safe GetDataTimeStringEx() and use it internally.
- srvdbase.c: build id now 5724

Feb 16 2023
- listener.c: catch .HST as a meta property as well.
- iplib.c: apply the env setting TINE_SEND_BUFFER_SIZE to _SystemAssignUdpSendBufferSpace() when warranted.
- srvdbase.c: added a strtrm() in RegisterDeviceName() and to AssigneDeviceListToProperty()
- swaplib.c: only check up to the strlen of a tag name for non-ascii chars.
- srvdbase.c: build id now 5723

Jan 30 2023
- swaplib.c: also apply the umlaut killer to tagged structures ...
  BUT don't touch the struct field parameter as it's likely on the data segment.
- toolkit.c: fix an off-by-one problem in ensureAsciiCharacters
- srvdbase.c: build id now 5722

Jan 26 2023
- hstlib.c : fix manifest problem concerning tolerances
- tinetype.h : fix a typo in documentation

Jan 25 2023
- srvip.c, srvip.h : tweak to get linux poll error diagnostic corrrect.
  treat DBG socket closed as 'Warning' and only report on 'real' error.
- server.c : fix issue with recent assertRedirectionValid tweak.
- srvdbase.c: build id now 5721

Jan 23 2023
- server.c (and others): refactor assertRedirectionValid() to include a 'tag' to indicate where this is taking place.
- srvip.h, iplib.c: finagle a POLLHUP into a more likely errno.
- srvip.c: yes: increment neterrcnt on a POLLHUP and feclog the debug session close.
- srvdbase.c: build id now 5720

Jan 21 2023
- srvip.c, iplib.c: more diagnostic tweaks (concerning socket errors)
- srvdbase.c: build id now 5718

Jan 20 2023
- clnip.c: also cleanup the error logging here (as in srvip.c)
- srvip.h: move macro pollerr2errno to srvip.h
- srvdbase.c: build id now 5717

Jan 19 2023
- srvip.c + others: refactor rprtSckErr() to take an errno argument (< 0 => use current)
  make rprtSckErr() use WSAGetLastError() rather than GetLastError().
  map some WSA codes into BSD codes in a couple of places.
- tindefs.c: declare 5.2.6
- srvdbase.c: build id now 5716

jan 17 2023
- client.c: always set tcpSck = 0 in checkConnections when base mode = CM_CANCEL
- srvdbase.c: build id now 5714

Jan 16 2023
- client.c: remove callback from a faulty link redirection after it has fired inside requestIsCoerced().
- srvdbase.c: build id now 5713

Jan 13 2023
- iplib.c: TCP send buffer queue depth in fact does need to be large; put the factor of 2 back in
- syslib.c, server.c: try to get rid of some Valgrind complaints
- srvdbase.c: build id now 5712

Jan  9 2023
- iplib.c: don't allow the TCP send buffer queue depth to exceed 8 (it was keying off of srvWorkArea and could otherwise be rather large)
- server.c: add some more initialization to try, try, try to avoid valgrind whining about uninitialized bytes.
- errlist.c: make cc2str return a pointer to a string buffer of length STATUS_SIZE
- srvdbase.c: build id now 5711

Dec 29 2022
- almlib.c, srvdbase.c: update 'dumpEnvironment' and a minor tweak.

Dec 28 2022
- almlib.c: add evn variable TINE_ALARM_SURVEY_INTERVAL for Mark
- srvdbase.c: build id now 5710

Dec 21 2022
- client.c: GetCompletionStatus() now returns "invalid link id" rather than NULL.
- errlist.c + others: introduce and make use of helper routine 'isTimeout(int code)'.
- srvdbase.c: build id now 5709

Dec 14 2022
- toolkit.c, toolkit.h: added routine ensureAsciiCharacters()
- almlib.c, srvdbase.c : make use of ensureAsciiCharacters() in several likely places.
- srvdbase.c: build id now 5708

Nov 25 2022
- client.c: fix a 'replace' bug which clobbered the microsecs part of the globals timestamp.
- srvdbase.c: build id now 5706

Nov 15 2022
- hstlib.c, hstlib.h : introduce 'gAllowOverloadedConcurrentLocalHistories'
- srvquery.c, server.c : fixed issue pertaining to rejection of monitoring .HIST properties.
- srvdbase.c: build id now 5705

Oct 20 2022
- server.c: don't check for early return with 'not_posted' in multi-threaded EQM calls.
  (problems with EQM using referenced output data object when contract is removed).
- srvdbase.c: build id now 5704

Oct 11 2022
- srvquery.c: do not allow monitoring of .HIST properties
- toolkit.c: fixed issue in GetValuesAsString : STRING to TEXT
- srvdbase.c: build id now 5703

Sep 12 2022
- swaplib.c: minor tweak concerning a structure 'sub tag'.
- srvdbase.c: build id now 5701

Jul 26 2022
- almlib.c: fixed warning
- srvdbase.c: added some diagnostic info in fec.log when save/restore is affected by property size & array type
- srvdbase.c: build id now 5700

Jul 25 2022
- srvdbase.c: in AssignDeviceListToProperty() reinvoke the RestorePropertyValues mechanism in order to
  reallocate the SR buffer space properly
- srvdbase.c: build id now 5699

Jul 22 2022
- srvdbase.c: allow an AT_CHANNEL flag for a scalar property in RegisterPropertyInformation to indicate
  that the number of devices associated with the property = property size (likely 1). So that the 'Restore'
  only loops over the single device (n.g. an AssignDeviceListToProperty() happend too late to do anything here).
- srvdbase.c: build id now 5698

Jun 21 2022
- server.c : new environment variable : FEC_MAXIMUM_NUM_CONTRACTS
- toolkit.c: fixed potential problem using SavePropertyValues as an API call.
- srvdbase.c: build id now 5697

May 30 2022
- syslib.c: add a removeBucketFromList(bckt) prior to each freeBucketThreadMemory() at bucket thread exit.
  This solves another avenue of cleanup when 'things go wrong' and is (should be?) safe against a double remove.
- srvdbase.c: build id now 5696

May 29 2022
- tinedefs.h, srvdbase.c: introduce and use CA_MT for flagging property as 'run in separate thread'.
  keep build id as we haven't yet deployed ...

May 27 2022
- server.c, srvdbase.c, srvcore.h: a tweak to 'isRegisteredMetaProperty' and make use of in decision to run call in separate thread.
- client.c, clnip.c, iplib.c, threader.h: fix some single-threaded tcp issues establishing links when multiple links are at play
  (especially when one of which is a globals link).
- srvdbase.c: build id now 5695

May 23 2022
- syslib.c : another pass thru the tcp bucket cleanup issues when things go wrong.
- unitclient.c: fixed some 'optimistic programming' issues in a couple of the tests.

May 20 2022
- toolkit.c: fixed problem with CF_STRING and GetValuesArrayAsString()
- iplib.c, syslib.c: fixed other tcp bucket cleanup issues when things go wrong.
- dbtools.c: make the name resolution with TINE_NETWORKADDRESS_RESOLUTION easier to work with.
  (i.e. don't look in the volatile cache, etc.)
- srvdbase.c: build id now 5694

May 19 2022
- syslib.c, iplib.c: fixed various cleanup problems (double freeing buffers, etc.)
- srvdbase.c: build id now 5693

May 18 2022
- several modules: fixed a chicken/egg problem with the refactoring from May 6.
  fixed closing a TCP idle socket problem introduced with the O(N^2) issue from last year.
  other fixes.
- srvdbase.c: build id now 5692

May 17 2022
- iplib.c, syslib.c: fixed concurrency problem with tcp send/recv thread parameters at initialization.
- srvdbase.c: build id now 5691

May  6 2022
- iplib.c, syslib.c, client.c, clnip.c, srvip.h : refactored some of the panic and cleanup
  logic concerning tcp sockets.
  new routine SetIdleConnectionDuration().
- srvdbase.c: build id now 5690

May  4 2022
- repeater.c: initialize the alarm ADS so that there's no junk on the stack.
- iplib.c: more diagnostics to the msglog.
- srvdbase.c: build id now 5689

Apr 26 2022
- syslib.c,tinetype.h: introduce exported function SystemReinit().
- srvdbase.c: build id now 5688

Apr 25 2022
- hstlib.c: trap TZ weirdness in reading data from Long-term storage.
- syslib.c: add a gNeedToStartSrvCycleThread=TRUE when serverCycleThread ends.
- srvdbase.c: build id now 5686

Apr 19 2022
- iplib.c, syslib.c, server.c, srvcore.h: to avoid/mitigate a (Stefan W.) blocking problem due the
  following: for non-VXWORKS don't acquire sndMutex for server responses; reduce number of attempts
  to 'send' to 5 instead of 100, but keep retry timout at 20 msec.
- srvdbase.c: build id now 5684

Apr 13 2022
- ttycmd.c: add feclog in signal handler.
- server.c : fixed feclog diagnostic regarding release mutex.
- srvdbase.c: build id now 5683

Apr  4 2022
- almlib.h, tinetype.h: some doxygen changes
- srvdbase.c: allow SetCallPropertyInSeparateThread() to pass specific flag to set
  CA_INDEPENDENT access.
- srvdbase.c: build id now 5682

Apr  1 2022
- listener.c, listener.h, repeater.c: forward the full status/error string for a listening link.
  set an alarm for (non-timeout) listening link errors. Clear in the background task.
- server.c, syslib.c, srvdbase.c, tinedefs.h: add CA_INDEPENDENT and logic to flag a registered
  property as allowing 'independent' WRITEs and thereby non-blocking equipment module access from
  other contracts.
- almlib.c: remove the NEWALARM bit from alarm when TERMINATE added due to change in severity
- srvdbase.c: build id now 5681

Mar 24 2022
- almlib.c: minor diagnostic output tweak.
- srvdbase.c: build id now 5679

Mar 19 2022
- almlib.c, almlib.h, srvquery.c, client.c, tinetype.h: refactored recent changes so that
  the 'alternate severity' is a general parameter in the FilterLink (then it can be used
  for e.g. 'alternate tolerance' in the case of a local history filter.
  Keep build id and version as the previous variant had not been released.

Mar 18 2022
- almlib.c, almlib.h, client.c, srvquery.c: add ability to provide an alternate severity for
  alarm filters in case the filter is not valid (alt sev < 0 => do not set alarm - as before);
  also fixed problem terminating an alarm when a filter changes validity state.
- tinedefs.h: declare version 5.2.5
- srvdbase.c: build id now 5678

Feb 12 2022
- trepeater.c: fixed issue concernng cached PROPERTIES path.
- clntools.c, alminfocheck.c: new command line utility alminfocheck.
- pytine.cpp: allow 'flags=CONNECT' in history call.

Feb  3 2022
- hstlib.c: incredibly, the windows getAvailableDiskSpaceInBlocks() was returning bytes and not blocks!
  added a 'divide by 1024' to the windows return value.
- srvdbase.c: build id now 5677

Jan 30 2022
- srvquery.c, srvdbase.c: added stock properties DEVGROUPS and DEVGROUP.MEMBERS;
  fixed counting problem with console command get devicegroups.
- srvdbase.c: build id now 5676
- tinedefs.h: version 5.2.4

Jan 20 2022
- dblib.c: fixed problem with long csv lines in getting db size (better fix).
- srvdbase.c: build id now 5675

Jan 19 2022
- swaplib.c, swaplib.h: added routine GetStructStatus()
- srvdbase.c: build id now 5673

Jan 18 2022
- server.c, almlib.h, hstlib.c: reset the 'hst' and 'alm' dump flags in FreeEQPModule().
- srvdbase.c: build id now 5672

Jan  9 2022
- hstlib.c, hstlib.h, srvquery.c : export FindAvailableHistoryIndex
- srvdbase.c: build id now 5671

Jan  5 2022
- iplib, syslib.c, clnip.c, server.c, client.c: fixed a couple of exotic deadlocks that could
  occur with TCP links with heavy traffic and link errors.
- srvdbase.c: build id now 5670

Dec  7 2021 (bonzai)
- client.c, srvdbase.c, errlist.c: some diagnostic improvements
- client.c: add the hLinkLstMutex in isGlobalsParameter() plus a retry in getting globals info.
- srvdbase.c: build id now 5668

Nov  2 2021
- srvip.h: typo
- hstlib.c, syslib.c: fixed mutex deadlock, respect CF_BOOLEAN in a couple of places.
- srvdbase.c: build id now 5667

Oct 29 2021
- prolog.h, syslib.c: added the MINGW compile switch checks from embl
- srvdbase.c: build id now 5666

Oct 19 2021
- almlib.h, almlib.c: fixed some collapsed alarms issues concerning 'reporting'
- srvdbase.c: build id now 5665

Sep 10 2021
- almlib.c: some more tweaks related to last fix,
  plus allow collapse window <= 0 signal no collapse window.
- srvdbase.c: build id now 5664

Sept 9 2021
- almlib.c: fixed (?) a possible race concerning a collapsed alarm termination being seen at the CAS.
  introduce env variable TINE_ALARM_COLLAPSE_WINDOW
- srvdbase.c: build id now 5663

July 4 2021
- clntools.c: add latest SrvQueryInfo struct to tservers verbose.
- swaplib.c: tiny improvement to findstruct concerning 0-length key string
- srvdbase.c: build id now 5662

July 1 2021
- iplib.c, client.c, syslib: some refactoring concerning the new tcp connection link list.
  removed all traces of the completely unnecessary 'not initialized' check in WaitFor and Release Mutex.
- srvdbase.c: build id now 5661

Jun 24 2021
- syslib.c: commented out check for gSystemMutexSetInitialized in function ReleaseSystemMutex
  trying to fix problem initializing cycler in buffered server shared library
- srvdbase.c: build id now 5659

Jun 18 2021
- srvip.h, clnip.c, client.c: some refactoring concerning idle tcp connections and eliminating an O(N^2) problem.
- srvdbase.c: build id now 5658

Jun 17 2021
- tcycler.c: init the system mutexes first!
- syslib.c, clnip.c: return not_initialized from WaitForMutex and ReleaseMutex when not initialized.
  found another spot to scan thru the client tcp link list rather than the connection table.
- srvdbase.c: build id now 5657

Jun 16 2021
- iplib.c, clnip.c, srvip.c, srvip.h: introduce a client-side link list representation of tcp connection links and use it.
- srvdbase.c: build id now 5655

Jun 15 2021
- clnip.c, iplib.c, srvip.h: some tweaks to ensure no extra counting of sockets in fds sets
  (original issue fixed back in Feb.)
- srvdbase.c: build id now 5654

Jun 12 2021
- client.c: fix problem in WaitForSyncLink when 'waiting' for an MCA single element link.
- iplib.c: a couple of retry tweaks concerning sendIPData.
- srvdbase.c: build id now 5653

May 19 2021
- iplib.c: diagnostic tweak
- syslib.c: in WaitForMutex make sure that the nano seconds are < 1E9 in pthread_mutex_timedlock.
- srvdbase.c: build id now 5651

May 12 2021
- srvip.c, iplib.c: improved (maybe) the logging diagnostics upon socket error.
- syslib.c: explicitly 0 out the 'revents' field prior to call to poll().
- srvdbase.c: build id now 5648

Apr  9 2021
- pytine.cpp: use a GetDeviceNumberEx() in order to respect property oriented pushes.

Apr  7 2021
- pytine.cpp: add 'access' to the attach() method and a 'callback' to set() (easy async. call)
  add a PyTine.log() method.

Mar 31 2021
- server.c: don't dump prp or dev manifests if GENS or ENS.
- syslib.c: ensure 100 lines mininum log depth if set via environment.
- srvdbase.c: build id now 5647

Mar 25 2021
- tbufsrv.c: allow scheduled flag < 0 to apply the device to the scheduling criteria
- tbufsrv.h: app version now 5.0.6

Mar 23 2021
- clntools.c: some tweaks to wdogcheck.
- dbtools.c: forward an 'ambiguous' return from the ENS to any caller (i.e. do NOT mask as non_existent)
- srvdbase.c: build id now 5646

Mar 19 2021
- clntools.c: add more info to wdogcheck.

Mar 18 2021
- clntools.c: add 'wdogcheck' to the tool kit.

Mar 17 2021
- hstlib.c: fix it so that both absolute and relative tolerances can be applied (via file) rather than
  either/or.
- srvdbase.c: build id now 5645

Mar 16 2021
- srvquery.c: fix problem with the 'at_limit' issue in getting LTS data.
- srvdbase.c: fix 'string address' of multicast-discovered ENS address (problem crept in via IPv6 routines).
- srvdbase.c: build id now 5644

Feb 15 2021
- syslib.c: release system mutex in SystemStop for the single-threaded guys
  (to avoid a possible deadlock, if SystemStop called from user code).
- iplib.c, clnip.c: fix a display issue and an unnecessary scan thru tcp daughter sockets
  in single threaded mode.
- srvdbase.c: build id now 5642

Feb 11 2021
- server.c: fixed problem with multiple tcp_access_required clients.
- srvdbase.c: build id now 5641

Feb  8 2021
- server.c, client.c, syslib.c: introduce tcp_access_required coercion when a
  property registers with CA_CONNECT.
- errlist.c, errors.h: introduce coercion status tcp_access_required.
- srvdbase.c: build id now 5640
- tinedefs.h: version 5.2.3 declared

Feb  3 2021
pytine.cpp: added 'start' parameter option to the history call.

Feb  1 2021
- bufsrv.c: fixed issues with GSPECTRUM
- bufsrv.h: app version 5.1.6

Jan 29 2021
- pytine.cpp: fixed issues with GSPECTRUM
  version now 1.1.9
- listner.c: fixed issues with that god-awful datatype CF_GSPECTRUM

Jan 27 2021
- srvdbase.c: don't send local repeater EXPORT (i.e. context = LOCALHOST) to ENS
- srvdbase.c: build id now 5639

Jan 26 2021
- pytine.cpp: add CF_SPECTRUM and CF_GSPECTRUM to the push-able data types for a server.
  version now 1.1.8

Jan 16 2021
- pytine.cpp: make use of system attributes tweaks (PyTine.list('attributes') + make use of known formats).
  version now 1.1.7
- srvdbase.c, srvcore.h: add 'gFecName', 'gSubSystem', 'gSystemContext' to the system attributes list;
  add call to get the system attributes list.
- client.c: don't set link error alarm for sync READ link errors.
- srvdbase.c: build id now 5638

Jan 14 2021
- srvdbase.c: added 'gPortOffset' the system attributes list
- srvdbase.c: build id now 5637

Jan 12 2021
- client.c: fixed problem when 'allowCommonLinks' is FALSE and a MCA single element link is triggered.
- srvdbase.c: build id now 5636

Jan 11 2021
- tglobals.c, clntools.c: tweak the 'globals' output to display in plain text any remote status errors.
- client.c: make use of CE_SENDCODE to flag globals status code as originating from remote source
  when using the callbacks via recvNetGlobal().
- srvdbase.c: build id now 5635

Jan  8 2021
- srvip.c, iplib.c : diagnostic and logging tweaks pursuant to Karol's problem.
- srvdbase.c: build id now 5634

Jan  7 2021
- srvip.c: extra diagnostic for Karol
- toolkit.c: some minor tweaking in some save/restore calls.
- srvdbase.c: build id now 5633

Dec 18 2020
- client.c: fix some case-sensitivity issues concerning globals.
- srvdbase.c: build id now 5632

Dec 14 2020
- project.def (windows): added a #define MCAST_THREAD_DELAY 1000 for legacy builds
- syslib.c : global/multicast thread delay now 10 ms instead of 1000 ms (via #define MCAST_THREAD_DELAY).
- srvdbase.c: build id now 5631

Dec 10 2020
- dblib.c, srvdbase.c: fixed problems reading region rules under certain conditions.
  do not break csv file reading on a 'column error' (introduced last year).
- srvdbase.c: build id now 5630

Dec  9 2020
- client.c, clnip.c, syslib.c: remove some more 'doocs event' code that missed the last cleanup pass.
  use 'sendto' to send a stop byte to the globals threads for cases where a POLLHUP doesn't seem to
  interrupt the thread.
- srvdbase.c: build id now 5629

Dec  8 2020
- several modules: remove any mention of 'doocs event' handling and tagging (was never used and only
  causing problems).
- toolkit.c: fix 'size' problem in SavePropertyValuesEx for non-CHANNEL type arrays saved to file.
- srvdbase.c: build id now 5628

Dec  1 2020
- server.c: put CF_STRING input in commands.log properly.
- dblib.c: log ENS address resolution only once.
- toolkit.c: let PutValuesFromAny() treat strong-type synonyms (e.g. CF_DBLDBL and CF_DBLTIME) as equivalent.
- srvdbase.c: build id now 5626

Nov 17 2020
- ttycmd.c: some bullet-proofing (due to an inexplicable runtime error) of the ttyoutput() routine.
- srvdbase.c: build id now 5625

Nov 12 2020
- numerous modules: fixed a slew of warnings from the new (extra pedantic) GCC compiler on ubuntu 20.
- srvdbase.c: build id now 5624

Nov 11 2020
- client.c: diagnostic output for number elements no longer treats sructs as bytes or strings as chars.
- srvdbase.c: build id now 5623

Nov 10 2020
- client.c: call clearFecLinkErrorAlarm() in the coercion branch once instead of always in the MCA callback.
- srvdbase.c: build id now 5622

Nov  9 2020
- tcycler.c : added LaunchRuntimeDebugWindow() (from tine32.c) for completeness (e.g. for .NET via mono).
- client.c: call clearFecLinkErrorAlarm() for each item in an MCA elements list when the callback is successful.
- srvdbase.c: build id now 5621

Nov  2 2020
- tbufsrv.c, tbufsrv.h: fixed problem assigning property information to a buffered property when registered
  via config file.
  app version now 5.1.5

Oct 30 2020
- tbufsrv.c, tbufsrv.h : finesse a CA_READ in the access check so as not to clobber a pure CA_WRITE request.
  app version now 5.1.4
- client.c: return remitted_data_lost instead of link_timeout where possible. (signal UDP flow control problem)
- srvdbase.c: build id now 5620

Oct 26 2020
- clntools.c, addtoarc.c : new command line tool (a la addtocas) which can
  add a record and keyword to a central archiver (without access lock!).

Oct 24 2020
- pytine.cpp : version now 1.1.6

Oct 23 2020
- tbufsrv.c, tbufsrv.h: replace the condition 'access' must be WRITE with
  registered input size must be > 0 and a property handler must be registered
  for buffered properties when the caller sends input.
  app version now 5.1.3
- pytine.cpp: fix problems accepting CF_STRING input at the server (see also tbufsrv.c)

Oct 12 2020
- srvcore.h, client.c: add a boundToId field in mcaLinkItem in case of MCA
  assignment via a pre-dependency. Plus some more diagnistics in msglog().
- srvdbase.c: build id now 5619

Oct  4 2020
- dblib.c: GetHostNameFromAddress() returns 'localhost' if address matches 'myip'.
- srvip.h: documentation for GetHostNameFromAddress() and GetInetAddress()
- srvdbase.c: build id now 5618

Oct  3 2020
- pytine.cpp: use new method GetHostNameFromAddress() to set 'caller_host' in property handler.
- dblib.c, srvip.h: added method GetHostNameFromAddress()
- srvdbase.c: build id now 5617

Oct  2 2020
- pytine.cpp: workaround using PyObject_Call() in python 3.8.
- clnip.c: add link list mutex around tcp idle connections operations.
- srvdbase.c: build id now 5616

Sep 25 2020
- pytine.cpp: added 'caller_address' to property handler 'inpt' dictionary
  'add_history_record' from Jan with fixes.
  version now 1.1.5
- iplib.c, srvip.h: added exported routine GetInetAddress()
- srvdbase.c: build id now 5615

Sep 18 2020
- hstlib.c: make use of findAvailableHistoryIndex() within AppendHistoryInformation when the given index < 0
- client.c: don't close filter links on error
- srvdbase.c: build id now 5614

Sep 16 2020
- server.c: ensure that a network client uses only 1 tine protocol level
- srvdbase.c: build id now 5612

Sep  5 2020
- toolkit.c: fixed a tm_yday -> tm_year problem in parsing routine

Sep  3 2020
- pytine.cpp: added methods allowed_users() and allowed_networks().
- errors.h: some documentation
- srvdbase.c, tinetype.h: added exported routine GetRegisteredNetworks().
- srvip.c: suppress output if gSufferInSilence = TRUE.
  if no users.csv or ipnets.csv found then reset prefered directory to contain EQM subdirectory
- srvdbase.c: build id now 5611 (for good measure)

Sep  2 2020
- pytine.cpp: if no registered death handler from python then don't 'die another day'
- srvdbase.c: call freeErrorTable() in freeServerMemory.
  build id as before as we haven't released yet.

Sep  1 2020
- pytine.cpp: method register_error_code() + remove result check on death hander call.
- errlist.c + others: new routines RegisterErrorCode(), etc. for registering errors.
- srvquery.c: stock property SRVERRORTEXT to retrieve registered error information.
- srvdbase.c: build id now 5610

Aug 28 2020
- pytine.cpp: add error code constants and an 'errorlist' function call.
- tbufsrv.c, tbufsrv.h: allow input data to be casted into registered data type (if number input).
- syslib.c, tinedefs.h: exported some string helper routines.
- srvdbase.c: build id now 5609

Aug 25 2020
- server.c: fix swapping issue on big endian platforms (related to misplaced BFMT()).
  fix problem swapping input data for CF_GSPECTRUM
- hstlib.c: fix problem pointing to the correct field index in long term local history.
- srvdbase.c: build id now 5608

Aug 24 2020
- hstlib.c: fixed bug reading fields from MCA structs from a local history
- syslib.c : fix SystemFreeResources() so that it doesn't crash if resources already freed.
  Add a 'break' on the abandon wait in WaitForSystemMutex.
  return a stack variable pointer to last property list query rather than the static variable.
- srvdbase.c: build id now 5605

Aug 23 2020
- syslib.c, threader.h: extra logging and retries in the UNIX variant of WaitForMutex (pthread_mutex_lock)
  when timeout = FOREVER.
- srvdbase.c: build id now 5602

Aug 21 2020
- several routines: add a check for a 'die' function (death handler) on most hard 'exit' scenarios.
- add routine SetDieAnotherDay() so that a death handler can revoke the 'die on' condition.
- add routine SetSufferInSilence() to suppress console output for some 'die on' conditions.
- bufsrv.c: add SetExitOnInitFailure() (default = FALSE) and make use of it on the sole hard exit.
- pytine.cpp: make use of the above and add new method 'register_death_handler'.
- srvdbase.c: build id now 5601

Aug 11 2020
- srvquery.c, swaplib.c, srvcore.h: introduce DeviceInfoStruct and add overload STRUCT (tag = DEVQSr5) to
  stock property DEVICES.
- tinedefs.h: declare version 5.2.2
- srvdbase.c: build id now 5600

Aug 10 2020
- swaplib.c, client.c, server.c : some refactoring + fix issue with GSPECTRUM and byte swapping
- srvdbase.c: build id now 5599

Aug  3 2020
- srvdase.c, client.c, srvcore.h: some refactoring.
- syslib.c: introduce helper routine isQueuableFormat().
- allow CF_IMAGE and CF_GSPECTRUM as input data types. Suppress queues for these types.
- srvdbase.c: build id now 5598

Jul 30 2020
- srvdbase.c: don't put empty device names in device manifest.
- srvdbase.c: build id now 5596

Jul 29 2020
- tinedefs.c, syslib.c: EXPORT new funtion GetArrayRowLengthFromString()
- srvdbase.c: build id now 5595

Jul 28 2020
- taddtocas.c, clntools.c: add an addtocas command line tool.
- srvdbase.c: add mutex (use the mfmutex) to protect GetPropertyListStructEx.
- errlist.c: typo
- srvdbase.c: build id now 5594

Jul 15 2020
- hstlib.c: got the MCA members with a doocs server to work
- srvdbase.c: build id now 5592

Jul  8 2020
- hstlib.c: some log file entries for MCA members + use explicit configured history record lengths.
- srvdbase.c: build id now 5591

Jun 30 2020
- tinetype.h, hstlib.c, syslib.c, toolkit.c: refactor GSPECTRUM -> DGSPECTRUM for the doocs guys.
- srvdbase.c: build id now 5590

Jun 24 2020
- numerous routines: added devices and property manifests. Put all manifests in a 'cache' subdirectory
  check devices manifest for MCA integrity at local history record initialization (optionally via API
  call SetAutoRemoveUnsynchronizedHistories(TRUE) or env TINE_HISTORY_AUTOREMOVE_UNSYNCHRONIZED).
  rename alarm watch manifest to almwatchmf.csv (was almwatmf.csv).
- srvdbase.c: build id now 5589
- tinedefs.h: version 5.2.1

Jun 19 2020
- pytine.cpp: some more names tweaking (output dictionaries this time : use 'event' rather than 'trigger'
  there as well).

Jun 18 2020
- pytine.cpp: some refactoring of names ('trigger' -> 'event') and split the former 'name'
  parameter in triggerEvent into 'context' and 'event'.

Jun 16 2020
- pytine.cpp: added dictionary return objects to the new event routines.
- toolkit.h: fixed dox typo.

Jun 10 2020
- syslib.c: wrapped 'format' arguments with LFMT in several format routines.
- srvdbase.c: build id now 5588

Jun  9 2020
- eventtools.c: some fixes in SendComment.

Jun  8 2020
- repeater.c: some startup debug tweaks

Jun  5 2020
- hstlib.c: remove confusing log output
- srvdbase.c: build id now 5587

Jun  1 2020
- almlib.c: fixed typo in big-endian builds.
- srvdbase.c: build id now 5586

May 29 2020
- tbufsrv.c, tbufsrv.h: fixed some registration issues.

May 28 2020
- almlib.c, almlib.h, swaplib.c, swaplib.h: introduce struct AWSr5 for use in ALMWATCHTBL stock property.
- srvdbase.c: build id now 5585

May 22 2020
- almlib.c, almlib.h, dblib.c, dbtools.h: add 'alarm code/tag' fields to alarm watch table to allow
  differentiation between watched properties.
- srvdbase.c: build id now 5584

May  7 2020
- server.c: return not_posted on multi-threaded contract calls which do not complete within time given.
- srvdbase.c: build id now 5583

May  6 2020
- numerous modules: introduce 'SetMarshallBooleanAsByte()' and associated changes
- srvdbase.c: build id now 5582
- tinedefs.h: declare 5.2.0

Apr 23 2020
- pytine.cpp: fixed issue acquiring SPECTRUM archive snapshot (1.0.6)

Apr  3 2020
- almlib.c: fixed copy/paste issue with clearing 'low_main_memory' alarm.
- srvdbase.c: build id now 5581

Mar 31 2020
- srvdbase.c: fixed VS_LEGACY_BUILD issue for the XP build.

Mar 27 2020
= almlib.c, almlib.h: new automatic alarm for low_main_memory + SetAvailableMemoryThreshold()
- syslib.c: new env variables FEC_MINIMUM_FREE_MAINBLOCKS, FEC_MINIMUM_FREE_DISKBLOCKS
- errlist.c, errors.h: new error code low_main_memory
- tinedefs.h: declare 5.1.3
- srvdbase.c: build id now 5580

Mar  3 2020
- hstlib.c: fixed problem recognizing an 'at_limit' in LTS calls with no long depth.
- srvdbase.c: build id now 5579

Jan 28 2020
- hstlib.c: fixed problem (?) acquiring a 'members' list from doocs MCA properties.
- syslib.c: fixed problem with the new SystemGetMemory() routine and legacy (XP) windows builds.
- srvdbase.c: build id now 5578

Jan 24 2020
- ttycmd.c: added a 'get memory' console command.
- server.c, srvcore.h: macro 'exitThread' renamed to 'StopThread'
- syslib.c: fix memory leak on multi-threaded linux builds by making the background thread 'DETACHED'.
- srvdbase.c: build id now 5577

Jan 21 2020
- a number of memory and cleanup tweaks.
- srvdbase.c: build id now 5575

Jan 14 2020
- server.c: fixed some issues concerning CE_SENDDATA and multiple clients
- srvdbase.c: build id now 5573

Jan 13 2020
- client.c: some extra protection against incorrect status messages/data lengths
- srvdbase.c: build id now 5573

Jan 10 2020
- tbufsrv.c: fix problem with TEXT format and timestamps and allocation

Jan  6 2020
- python.cpp: some tweaks regarding exceptions thrown.

Dec 27 2019
- client.c, toolkit.c, syslib.c : fixed some more 'SPECTRUM' related swapping issues.
- srvdbase.c: build id now 5572

Dec 23 2019
- swaplib.c, server.c: fix other swapping issues with CF_ASPECTRUM
- syslib.c: fixed another GSPECTRUM issue.
- srvdbase.c: build id now 5571

Dec 21 2019
- swaplib.c: fix regisration of GSpectrum vs. Spectrum header structures
- srvdbase.c: build id now 5569

Dec 20 2019
- pytine.cpp: an important memset() !

Dec 19 2019
- pytine.cpp: Ah those umlauts!

Dec 18 2019
- pytine.cpp: fixed some server-side bugs concerning non-MCA input size, added PYTINE_VERSION
- almlib.c, almlib.h: introduce Get/SetAllowOfflineAlarms()
- srvdbase.c: build id now 5569

Dec 16 2019
- syslib.c: keep Solaris from tying to compile checkMutexState()
- pytine.cpp: another fix to the problem interpretting NAMExxI data types.

Dec 13 2019
- hstlib.c: fix an alignment problem on Solaris (?)
- srvdbase.c: build id now 5568

Dec 11 2019
- srvquery.c: fixed copy-paste format error in DEVONLINE
- srvdbase.c: make sure WRITE-ONLY properties specify output type = CF_NULL in registration.
- srvdbase.c: build id now 5567

Dec 10 2019
- client.c: don't back off protocol level for canceled links.
- srvdbase.c: build id now 5566

Dec  9 2019
- pytine.cpp: added support for UINT16, UINT32, uINT64
- syslib.c, srvcore.h, threader.h: introduce routine 'checkMutexState()' for use in single-threaded libraries.
  also: allow build specific #define WaitForSystemMutex etc. in project.def.
- srvdbase.c: build id now 5565

Dec  2 2019
- several modules: introduce and use csvGetLine(), which wraps fgets and guarantees that a line has been read in.
- srvdbase.c: build id now 5564

Nov 29 2019
- dblib.: even more better fix to the long csv entries problem.
- server.c: added the build id to the fec.log startup output
- srvdbase.c: build id now 5563

Nov 28 2019
- pytine.cpp: fixed problem interpretting NAMExxI data types.
- dblib.c: more better fix to long csv entries problem
- srvdbase.c: build id now 5562

Nov 27 2019
- toolkit.c: add exported routine GetDataAsString()
- srvdbase.c, dblib.c: fixed problem with csv entries with multiple embedded quotes (still a to-do !)
- srvdbase.c: build id now 5561

Nov 13 2019
- toolkit.c: allow a 2-digit year in data string parsing
- srvdbase.c: build id now 5560

Nov 11 2019
- pytine.cpp: more structs and bytes: use 'list' of bytes instead of a 'bytes' or 'bytearray' object.

Nov  6 2019
- client.c: don't back off protocol level following 'illegal_protocol' if FEC entry has already backed off.
- toolkit.c: extra empty string check in acquireAndRegisterStruct()
- srvdbase.c: build id now 5559

Nov  5 2019
- tbufsrv.c, tbufsrv.h: add app version info (start off with 5.0.0)
- pytine.cpp: various tweaks to get structure_to_bytes and bytes_to_structure to behave better.
- srvquery.c: allow DEVLOCATION to be WRITE only
- toolkit.c: fixed a doocs 'get channel names' issue
- srvdbase.c: build id now 5558

Nov  1 2019
- syslib.c: fixed warning

Oct 29 2019
- clntools.c: make use of stringToDataValue() in parseInputDataString()
- pytine.cpp : first round of untagged structure features
- syslib.c, tinedefs.h: intoduce GetNumberSegments(format) (as in java).
- srvdbase.c: build id now 5557

Oct 23 2019
- several routines: add new data formet CF_GSPECTRUM and associated header structures, etc. for compliance with
  the doocs GSPECTRUM (just waiting for an HSPECTRUM and then an ISPECTRUM ...)
- tinedefs.h: version 5.1.2 declared (due to new data type)
- srvdbase.c: build id now 5556

Oct  8 2019
- hstlib.c: fixed (i.e. aligned with central archiver) the response to a trend request for IMAGE data.
- srvdbase.c: build id now 5555

Oct  2 2019
- client.c: add link status to connection stats
- server.c, srvquery.c, tinetype.h: add stock property 'PROPERTY.STATS' and field numCalls to property struct.
- srvdbase.c: build id now 5554

Sep 30 2019
- srvquery.c: don't search for .bak files in SRVLOGFILE if not a '.log' file
- srvdbase.c: build id now 5553

Sep 25 2019
- srvdbase.c: fixed problem with rowsize and double array registration which crept in with build id 5547
- srvdbase.c: build id now 5552

Sep 17 2019
- toolkit.c: fixed save-and-restore problem with CF_TEXT items when there's a size mismatch
- srvdbase.c: build id now 5551

Sep 16 2019
- several modules: add new routines RemoveDevice() and RemoveProperty() + associated logic.
- server.c better and proper sanity check than the one included in build id 5548
- srvdbase.c: build id now 5550
- tinedef.h: declare 5.1.1

Sep  4 2019
- srvcore.h, client.c, server.c: various UINT16s to UINT32s in the conTbl (avoids wrapping the numblks for ultra large payloads).
- clientc.: trap polling intervals > 65000.
- srvdbase.c: build id now 5549

Sep  2 2019
- servwer.c: extra sanity check concerning the incoming sub header
- srvdbase.c: build id now 5548

Aug 27 2019
- srvdbase.c, tinetype.h: use unsigned short (instead of short) for row size information and catch
  an overflow.
- srvdbase.c: build id now 5547

Aug 22 2019
- srvip.c: diagnostic tweaks for socket port in use.
- srvdbase.c: build id now 5546

Aug 21 2019
- client.c: ensure queue depth always remains 0 if it is 0 and SetLinkQueueDepth() is called.
- srvip.c: tweaked the diagnostic death message a bit.

Aug 20 2019
- syslib.c: some socket routines: added several checks on errno == EINTR and 'continue' instead of bail out.
- client.c: always supress a link queue if a tagged struct is not internally aligned.
- srvdbase.c: build id now 5545

Aug 19 2019
- syslib.c, srvip.c: ensure that the dieFunction is called only once.

Aug 16 2019
- srvcore.h, srvquery.c, srvip.c, syslib.c: introduce and make use of SetDieFunction() which can be supplied by
  the caller to register a dispatch function which will be called prior to a server exit when address in use, etc.
  occurs.
- srvdbase.c: build id now 5544

Aug 15 2019
- swaplib.h: make the ISWAP, etc. macros use a redundant assignment so as to avoid a warning.
- hstlib.c, hstlib.h: fix an off by 1 problem in int openMostRecentLTS(). update doxygen description
  for GetLastStoredData()
- srvdbase.c: build id now 5543

Jul 24 2019
- files: almlib.c, hstlib.c, server.c, srvcore.h, srvdbase.c, srvip.c, srvquery.c, swaplib.c, swaplib.h, syslib.c, tinedefs.h, tinetype.h, toolkit.c, ttycmd.c, ttycmd.h
  refactoring of global vars names: gNrStockProperties, gStockProperty, gRequireAcknowledgments, gStartupDebug
  macro definitions for global vars names compatibility: RequireAcknowledgments, StartupDebug
  functions and global vars exported now: gNrStockProperties, gStockProperty, gRequireAcknowledgments, gStartupDebug,
    FindStruct(), IsVariableLengthFormat(), IsTaggableFormat(), IsVariableLengthFormat(), ttyquit()
- srvdbase.c: build id now 5542

Jul 19 2019
- tinedefs.h, syslib.c: IsTaggableFormat() is exported now (used in UnitClient)
- toolkit.h, toolkit.c: new exported function SetValuesAsStringSeparator() to access variable (used in UnitClient)
- srvdbase.c: build id now 5541

Jul 13 2019
- client.c: remove check and dismiss on blksin > 0 in preSubRequest() (not necessary and can cause problems)
- srvdbase.c: build id now 5540

Jun 28 2019
- srvdbase.c: (from 5531) the maximum from NUM_DEVICES should also check the alternative NUM_MODULES header.
- srvdbase.c: build id now 5539

Jun 19 2019
- srvdbase.c: diagnsotic tweak: add to feclog when a property query function is registered.
- srvdbase.c: build id now 5538

Jun 17 2019
- srvdbase.c: fix diagnostic information when equipment module names collide.
- srvdbase.c: build id now 5537

Jun 11 2019
- tinedefs.h: officially declare release 5.1.0 (same build id as Jun 4).

Jun  4 2019
- almlib.c: fixed problem (?) establishing the correct device number in an alarm watch with property-oriented multi-channel calls.
- srvdbase.c: build id now 5536

May 31 2019
- dbtools.c: diagnostic spelling error
- client.c, server.c: tweaks concerning reconnecting (to extremely large payload contracts).
- srvdbase.c: build id now 5535

May 28 2019
- pytine.cpp: fixed problem using the correct access in getting correct property info.

May 26 2019
- hstlib.c: fixed problem with history snapshot specifying a system stamp target (was jumping out at the initial read).
- srvdbase.c: build id now 5534

May  8 2019
- pytine.cpp: some problems with CF_STRING fixed.

May  2 2019
- hstlib.c: fixed bug discovering whether 'saved' files exist or not.

Apr 29 2019
- hstlib.c, hstlib.h: make note of whether there are long-term 'saved' histories, and allow
  writing to them from the current short-term histories via SaveShortTermData()
- srvquery.c: allow .HIST to call SaveShortTermData() via a WRITE call with range parameters.
- srvdbase.c: build id now 5533

Apr 25 2019
- tputhistory.c : new command line helper.
- toolkit.c, toolkit.h: added helper routine PutArchivedData
- srvdbase.c: build id now 5532

Apr 24 2019
- bufsrv.c: fixed (?) problem with property id when registering .SCHED alias property when not already registered
- srvdbase.c: allow exports.csv registration to supply the maximum NUM_DEVICES in any line.
- srvdbase.c: build id now 5531

Apr 18 2019
- bufsrv.c: added check on whether a buffered handler is available or not.

Apr 17 2019
- server.c: add another isNewStarttime check for isContractValid (further tweaks to handling missed updates)
- srvdbase.c: fixed memory sanitizer issue in GetClientInformation.
- srvdbase.c: build id now 5530

Apr  5 2019
- server.c: reinstitute logic from the last commit with further checks to ensure that only UDP clients with 'new'
  link times and EVENT or DATACHANGE mode are affected.
- srvdbase.c: build id now 5529

Apr  4 2019
- server.c: allow a client's renewal threshold setting to bypass reacting to preceived missed updates at the server.
- srvdbase.c: build id now 5528

Mar 29 2019
- client.c: tweak one of the previous fixes so that ENS queries, etc. still work
- srvdbase.c: build id now 5527

Mar 28 2019
- client.c: Marina's fixes for concurrent 'CA_NOCALLBACKS' + CM_EVENT links.
- srvdbase.c: build id now 5526

Mar 21 2019
- repeater.c: a bit more logging at initialization.
- client.c, server.c: make use of strntrm() concerning client calls with white-space at the end of device or property names
- srvdbase.c: build id now 5525

Mar 11 2019
- merged branch timereq_refactoring into trunk
- srvdbase.c: build id now 5525

Feb 20 2019
- srvcore.h, client.c: refactoring fieldnames in ConTblEntry - timeLastSync, timeMsecLastSync

Feb 11 2019
- syslib.c: fixed a minor memory leak concerning a broken TCP connection.
- srvdbase.c: build id now 5524

Feb  8 2019
- client.c: (related to fix of Dec. 7): fixed another issue with SYNC_NOTIFY and TCP connection management.
- srvdbase.c: build id now 5523

Jan 24 2019
- client.c: the saga of Jan 16 continues: must allow for 'commands' to receive payload as well.
- srvdbase.c: build id now 5522

Jan 18 2019
- toolkit.c: fixed a null pointer issue with CF_STRING data within GetValuesArrayAsString()
- tbufsrv.c: reintroduced changes made last June (never committed then?).

Jan 17 2019
- client.c: getting everyone (including ENS calls) happy concerning the vladimir camera server problem ...
- srvdbase.c: build id now 5521

Jan 16 2019
- client.c: fixed a potential problem when more blocks come in than were originally allocated.
- srvdbase.c: build id now 5520

Dec 13 2019
- client.c: fixed a (maybe 2) possible deadlock(s) by using the correct mutex in NotifyClient when working thru
  the queued callbacks.
- srvdbase.c: build id now 5519

Dec  7 2018
- client.c: make sure that SYNCNOTIFY does not disrupt TCP connection managment!
- srvdbase.c: build id now 5518

Nov 16 2018
- repeater.c: use undecorated status code in local history calls.

Nov 14 2018
- tinetype.h, srvquery.c, srvdbase.c: allow a match to #ANY device in a redirection comparison check
  (and make use of this in the archiver)
- srvdbase.c: build id now 5517

Nov 13 2018
- tbufsrv.c : tweaks concerning applying the pushedCompletionCode.

Nov  7 2018
- dbtools.c: fixed a display problem with the ENS link key.
- client.c: don't send a CM_CANCEL at cleanup time if the link in question is on a CM_REGISTER place holder!
- srvdbase.c: build id now 5516

Nov  6 2018
- clnip.c: diagnostic tweak to keep multiple identical log entries from piling up.
- srvdbase.c: build id now 5514

Nov  2 2018
- client.c, srvcore.h: always assign the relink info inside getConTblEntry().
- toolkit.h: added informative comments to the code
- srvdbase.c: build id now 5513

Oct  5 2018
- srvcore.h: remove some extraneous lines
- srvip.c: fix problem collected TCP bytes (work area size vs. bucket length)
- server.c: fix problem when incoming request header is inconsistent
- srvdbase.c: build id now 5512

Sep 24 2018
- iplib.c, dblib.c: fixed some initialization issues concerning ipv6 discovery and setting the ENS address
- srvdbase.c: build id now 5511

Sep 18 2018
- errlst.c: remove high bits from status code in cc2str.
- client.c: add env TINE_DEBUG to allow start up debugging
- srvdbase.c: build id now 5510

Sep 15 2018
- client.c: fix the revision id at 99<<16 + 99 for legacy requests (to avoid the 4.0.11 trap)
- server.c: just allow any post Release 3 client to play the MCA game
- srvdbase.c: build id now 5509

Sep 14 2018
- server.c: fix MCA logic check vs. version ID
- srvdbase.c: build id now 5508

Sep 11 2018
- client.c: tweaked the legacy routine GetRPCLastError() to make use of the input
  completion code if systematic.

Sep  6 2018
- toolkit.c: fixed some issues with SaveAndRestore when called from API directly
  with CF_STRUCT properties.
- srvdbase.c: fixed registration bug (missing OS and description)
- srvdbase.c: build id now 5507

Sep  5 2018
- several routines: fixed various warnings concerning sprintf and snprintf.
- srvquery.c: fixed problem with stock property CLIENTS.
- srvdbase.c: build id now 5506

Sep  3 2018
- several routines: various byte swapping fixes and VxWorks fixes.
- srvdbase.c: build id now 5505

Sep  2 2018
- several routines: minor refactoring to remove global variable 'fecprot' (wasn't thread-safe anyway).
- client.c: copy the link key into the ENS entry.

Sep  1 2018
- prolog.h, swaplib.h, swaplib.c, hstlib.c, client.c, server.c : some refactoring concerning
  swapping macros
- almlib.c: fixed bit assignment for applying server name.
- srvdbase.c: build id now 5504

Aug 31 2018
- srvcore.h, syslib.c, srvquery.c: added overload INT32 to stock property SRVLOGFILE to give file length.
  also set the data time stamp to the modified time for any SRVLOGFILE call.
- hstlib.c, hstlib.c: offer GetLastStoredDataEx() which also returns the data timestamp
- srvquery.c: fixed problem in reading DEVMASK.
- srvdbase.c: build id now 5503

Aug 30 2018
- srvcore.h, syslib.c, srvquery.c: added overload NAME64I to stock property SRVLOGFILES.
  don't add a terminating 0 to text from SRVLOGFILE.
- hstlib.c: add _findclose() in a few spots.
- srvdbase.c: build id now 5502

Aug 29 2018
- srvcore.h: add S_ALLWRITE #define for UNIX file permissions.
- dbtools.c, srvdbase.c: add a chmod(S_ALLWRITE) to cache and manifest files.
  use GetSystemVersionString() in the FecInfo structure.
- srvdbase.c: build id now 5501

Aug 27 2018
- errors.h: rename enum Errors to enum TErrorList.
- shmalloc: fix some 32-bit compile warnings.

Aug 24 2018
protocol.h: fix some swapping issues with the new 'rational' #definitions of SSWAP, ISWAP, LSWAP and PeekWord, PeekDWord.
client.c: fix a issue receiving (packed) NETWORK subscriptions.
tinedefs.h: rename some of the enums (a la S.Weisse's suggestions).

Aug 19 2018
- client.c: initialize the 'usertype' to "R5CLIENT".

Aug 17 2018
- server.c: fixed bug in calculating 'extended string space' (must be a signed int)

Aug 15 2018
- officially maintain a separate change log for Release 5
  tine version is now 5.0.0, build id is now 5500
- pytine.cpp: make use of SetUserType()

Aug 14 2018
- tbufsrv.c: fixed various warnings

Aug 12 2018
- tinedefs.h: added some macro #defines for use in the buffered services layer.
- listener.c: fixed an allocation problem with CF_STRING
- tbufsrv.c: fixed various issues with CF_STRING properties
- pytine.cpp: fixed various CF_STRING issues.

Aug 10 2018
- tinetype.h, srvcore.h, client.c: added Set/GetUserType() so that library wrappers can use this
  both in Release 4 and Release 5.
- clntools.c: several diagnostic improvements.
- tineRepeater.c: allow the idle time to be set in the tine Repeater
  (and set the user type to "REPEATER").
- srvdbase.c: build id now 5407

Aug  7 2018
- toolkit.c: fix parsing issue with get Struct as string
- srvdbase.c: build id now 5406

Jul 31 2018
- toolkit.c: only get a 'tag' list if there is at least 1 of them.
- srvdbase.c: added a strtrm() around the export name in _registerEquipmentModule().
- srvdbase.c: build id now 5405

Jul 24 2018
- client.c: fixed notification problem which can appear in multi-threaded stress tests
- srvdbase.c: build id now 5404

Jul 21 2018
- syslib.c: fixed 'wait for mutex' problem in sendStreamThreadTask().
- srvdbase.c: build id now 5403

Jul 19 2018
- almlib.c: allow SetDeviceAlarm() to take the server name as the device name.
- hstlib.c: fix a roll-over problem when a history record is 'down' for long, long time.
- srvdbase.c: build id now 5402

Jun  1 2018
- tbufsrv.c: introduce device specific data and time stamps for those AT_SPECTRUM properties.

May 23 2018
- srvcore.h, client.c: put prototypes for isTraceLink() and traceLinkOutput() in srvcore.h.
  minor tweak in isTraceLink().
- srvdbase.c: build id now 5398

May 20 2018
- toolkit.c: diagnostic tweak.
- client.c: fix problem with error string introduced last time.
- iplib.c: change 'error_level' to WARN when 'can't get send mutex' happens.
- dbtools.c: don't put FECSINK in the local cache.
- srvdbase.c: build id now 5397

Apr 26 2018
- srvquery.c, server.c: allow access_denied to return more informative error string.
- client.c: tweak GetLastError() to retrieve error string from access_denied.
- srvdbase.c: build id now 5396

Apr 23 2018
- client.c: ensure that the lastStatusString is filled in for a globals link.
- srvdbase.c: build id now 5395

Apr 20 2018
- almlib.c: a few tweaks concerning collapsed alarm termination
- srvdbase.c: build id now 5394

Apr 12 2018
- client.c: don't wait for 1st update for non-GLOBALS-server globals
- srvdbase.c: build id now 5393

Apr 11 2018
- server.c: additional (and probably unnecessary) protection against a 0 timestamp for
  a wildcard call.
- srvdbase.c: build id now 5392

Apr  9 2018
- tinetype.h, client.c: add SetConnectionTableMinimumCapacity() API call and
  TINE_CONNECTION_TABLE_MIN_CAPACITY env variable.
- srvdbase.c: build id now 5391

Apr  7 2018
- prolog.h: add WIN32 legacy #defines for isinf() and isnan()
- hstlib.c: trap bad timestamp data with insinf() and isnan()
- srvdbase.c: build id now 5390

Apr  4 2018
- client.c: create allocated memory for a link canceled with dependencies.
  trap the 'maxPeriod < 1' condition for globals link in the proper place.
  some extra mutex protection in the 'get connection table' calls.
- srvdbase.c: build id now 5389

Apr  3 2018
- toolkit.c, toolkit.h: added methods GetValuesAsUnsignedLong, GetValuesAsUnsignedDLong.
- hstlib.c: catch specific format 'CF_INT64' inside getFormattedHistoryDataPoint().
- srvdbase.c: build id now 5388

Mar 13 2018
- client.c, tinetype.h: SetConnectionTableCapacity() now returns a completion code and returns
  already_assigned if called after the connection table has an entry.
- srvdbase.c: build id now 5387

Mar 12 2018
- server.c: some more feclog diagnostics when things don't work.
- client.c: fixed a memory leak problem in GetEqpDeviceNames when no device list is assigned.
- srvdbase.c: build id now 5386

Mar  9 2018
- hstlib.c: only insert a transition when the previous timestamp is older than the current timestamp.
  when reading local histories, overwrite the data for identical timestamps.
- srvdbase.c: build id now 5384

Mar  8 2018
- srvdbase.c: export the routine stristr() in windows.
  make sure the redirection list is freed prior to a second call to RedirectDeviceName().
- srvdbase.c: build id now 5383

Mar  7 2018
- client.c: minor diagnostic tweak: skip mode = CM_SINGLE in GetConnectionTable().
- srvdbase.c: build id now 5382

Feb  2 2018
- dblib.c: fixed problem reading IPv4 address from cshosts.csv
- srvip.c, iplib.c, prolog.h : only make use of setsockopt and IPV6_V6ONLY when family = AF_INET6
- srvdbase.c: fixed diagnostic strength length problem
- srvdbase.c: build id now 5381

Jan 30 2018
- dblib.c: allow an IPV4_ADDR column in cshosts.csv; fix problem with ipv4tov6().

Jan 29 2018
- numerous modules: another round of IPv6 tweaks (MAC/Linux/Solaris)
- client.c: remove (multi-threaded) check on isInsideCallback at the end of waitForSyncLink
  (not necessary and can lead to a race condition in Acop.NET).
- srvdbase.c: build id now 5380

Jan 22 2018
- numerous modules: another round of IPv6 tweaks
- srvdbase.c: build id now 5379

Jan 17 2018
- numerous modules: various IPv6 fixes and tweaks
- srvdbase.c: build id now 5378
- tinedefs.h: declare version 4.6.3

Jan  6 2018
- almlib.c: allow alarm terminations to immediately disappear when alarms are collapsed!
- srvdbase.c: build id now 5377

Jan  2 2018
- syslib.c: also set 'EquipmentModulesInitialized' to FALSE inside of _reinit().
- srvdbase.c: build id now 5376

Dec  9 2017
- syslib.c: fixed a findnext problem.
- srvdbase.c: build id now 5375

Dec  8 2017
- toolkit.c: ensure that utilities that declare datatype NAME32 and NAME64 as input
  point to such an object.
- srvdbase.c: build id now 5374

Dec  7 2017
- client.c: check nConnectionTableEntries == 0 and NameServerLoaded to trap
  a '_SystemReset' problem in the CAS, etc. when the DBM sends a restart command.
  The 'ENS address at position 0' was overwriting the initial link address!
- srvdbase.c: build id now 5373

Dec  3 2017
- hstlib.c, dblib.c, srvcore.h: move history files from former default location to
  new default location if warranted.
- srvdbase.c: build id now 5372

Dec  1 2017
- hstlib.c: need to set the current fec home directory to '.' if automatic HISTORY_HOME
  is used.
- almlib.c: various tweaks to get the collapsed alarms to terminate properly and to
  'touch' the alarm set if the collapse threshold is crossed on the way back down.

Nov 30 2017
- hstlib.c: Default HISTORY_HOME is now 'under' the FEC_HOME directory
  Introduce openMostRecentLTS() and use it in getLastLTSData() -> attempt to cover
  any time span between server stop and server start.
  Support more data types in a call to getLastLTSData().
- almlib.c: add ellipsis in the alarm tag for a Link Error alarm when the link address
  exceeds the allowed space.
  Make sure the collapsed alarm termination is seen by the CAS!
- toolkit.c: fix problem acquiring device names for a property if a doocs server is targeted.
- srvdbase.c: build id now 5371

Nov 27 2017
- tinetype.h, srvquery.c, srvdbase.c: getCurrentFailoverState() -> GetCurrentFailoverState()

Nov 23 2017
- srvcore.h, tinetype.h, dbtools.h, server.c, srvquery.c: new 'failover' routines and
  stock property.
- srvdbase.c: build id now 5369

Nov  6 2017
- syslib.c, threader.h : added hGeneralMutex (as yet unused).
- client.c: don't allow a link queue for CF_STRING contracts !
- srvdbase.c: build id now 5368

Oct 23 2017
- client.c: fixed subtle problem changing a single element MCA link to another
  element.
- srvdbase.c: build id now 5367

Oct 16 2017
- syslib.c, client.c : fixed cleanup problem.
- dblib.c : initialized property id to -1 when reading fec.xml
- server.c: trap 'impossible' condition in removePhantomClientFromContracts.
- srvdbase.c, srvcore.h: added new routine ApplyStoredPropertyValues() for use
  in the buffered server (to avoid a chicken and egg problem)
- tbufsrv.c, tbufsrv.h: added some helper routines.
  Make use of ApplyStoredPropertyValues() when a handler is attached.
  check consistency of AT_CHANNEL and AT_SPECTRUM
- srvdbase.c: build id now 5366

Oct  6 2017
- srvdbase.c: added extra mutex protection in RemoveEquipmentModule() as both
  FreeEQPModules() and freeServerMemory() call this.
- srvdbase.c: build id now 5364

Sep 20 2017
- tcycler.c: removed some '//' comments that crept in.
- several routines: all VxWorks applying some compile switches
- srvdbase.c: build id now 5363

Sep 19 2017
- dbtools.h: ensure that VxWorks doesn't see various routines which write to the address cache.

Sep 18 2017
- client.c: add (a la Stefan) mutex protection in copyDpdData.
- numerous modules: address some code analysis warnings.
- srvdbase.c: build id now 5362
- tinedefs.h: declare 4.6.2

Sep 12 2017
- syslib.c, hstlib.c, tine32.c, server.c, threader.h: ensure that windows thread handles are
  explicitly 'closed' when the library unloads.
- srvdbase.c: build id now 5359

Sep 11 2017
- eventtools.c: fixed a warning.
- hstlib.c: protect Mark from asking for 100 years of local history.
- toolkit.c: fixed some anomalies in Put/GetValuesAsAny().
- srvdbase.c: build id now 5358

Sep  8 2017
- srvdbase.c: add a 'makeDirectoryPath' to writeFollowers
- srvdbase.c: build id now 5357

Sep  4 2017
- swaplib.c, swaplib.h: introduce specific routine GetStructFormat() which fills in a
  NAME64DBLDBL array (for use in .NET).
- srvdbase.c: build id now 5356

Aug 30 2017
- toolkit.c: fixed parsing problem with GetSystemDevices() recently introduced to try to
  do something reasonable with doocs channel names.
- srvdbase.c: build id now 5355

Aug 28 2017
- dblib.c, client.c: allow csvAssignValue() to parse a 'blank separated' array of strings.
- srvdbase.c: build id now 5354

Aug 18 2017
- clntools.c: fixed problem with thistory introduced when 'blob' became dynamic (July 18 2016).
- client.c, tinetype.h: added helper routine AssignImageFrameBuffer() for use in .NET
- srvdbase.c: build id now 5353

Aug 10 2017
- toolkit.c: minor tweak to get property device list from a doocs server.
- srvdbase.c: build id now 5352

Aug  7 2017
- client.c, ttycmd.c : introduce ResetSuspendCallbacks(). Add reference counting to
  Set/GetSuspendCallbacks() directly and use inside of ExecLinkEx().

Aug  4 2017
- ttycmd.c, syslib.c, client.c: tweaks and diagnostics concerning _gSuspendCallbacks.
- srvdbase.c: build id now 5351

Aug  1 2017
- syslib.c: fixed some possible warnings
- srvdbase.c: build id now 5350

Jul 22 2017
- client.c: fixed problem with wildcard calls and CA_NOCALLBACKS.
- srvdbase.c: build id now 5349

Jul 18 2017
- srvquery.c: fix a null pointer problem in one of the query routines.
- srvdbase.c: build id now 5348

Jul 11 2017
- client.c: don't close filter links on link_timeout.
  fixed stray warning that VS all of a sudden started complaining about.
- srvdbase.c: build id now 5347

Jul  7 2017
- hstlib.c: fix problem retrieving snapshot from short term history
- srvdbase.c: build id now 5346

Jul  6 2017
- client.c: access lock tweak (reset status to not_ready prior to a sync set).

Jul  5 2017
- syslib.c, threader.h, client.c: use hLinkCbMutex instead of hLinkLstMutex in callback checker.
- srvcore.h, client.c: _setAccessLock() to use sync call with CA_NOCALLBACKs instead of async call.
- srvdbase.c: build id now 5345

Jul  4 2017
- hstlib.c, hstlib.h: added a 'transition' local history archive when the tolerance is
  exceeded. (mimics behavior of central archive).
- srvdbase.c: build id now 5344

Jul  3 2017
- client.c: added CA_NOCALLBACKS in a couple of synchronous calls (see Jun 11 entry).
  diagnostic tweak regarding trace link.
- srvdbase.c: build id now 5343

Jun 19 2017
- pytine.cpp: added property and device list arguments to pytine_register_device
  pytine_register_property.

Jun 14 2017
- srvquery.c: expand IsStaticProperty() to include some stock properties
- server.c: make use of IsStaticProperty() for stock properties in doContract().
- srvdbase.c: build id now 5342

Jun 13 2017
- srvquery.c, srvcore.h: TINE_EXPORT IsStockProperty()

Jun 12 2017
- syslib.c, tinedefs.h: TINE_EXPORT GetFieldInFormat().

Jun 11 2017
- toolkit.c: apply the CA_NOCALLBACKS flag to all ExecLink calls in toolkit.
  (relevant to Acop widgets in .NET).
- srvdbase.c: build id now 5341

June 8 2017
- srvquery.c: add stock property "SRVREEXPORT".
- client.c: add 'any error' from ExecLink to the msg log.
- srvdbase.c: failover slaves now signal the master to re-export modules if it
  appears to have been simply unresponsive (based on the server start time).
- srvdbase.c: build id now 5340

June 2 2017
- dbtools.c: allow NULL input addr pointers in GetServerAddr()
- toolkit.c: include the 'MEMBERS' shuffle for doocs targets in GetSystemDevices().
- srvdbase.c: build id now 5339

May 31 2017
- client.c, dbtools.c: trap on negative fecIdx. Fix single-threaded mutex lockout
  involving flushing the redirection table.
- syslib.c: keep feclogWriteFile() from writing into 'fec.log' if we're not a server.
  (problem introduced with feclogEx()).
- srvdbase.c: build id now 5338

May 16 2017
- server.c, srvcore.h: removed some stray references to the (now defunct) EqmCall thread.
- globals.h: fixed documentation
- client.c: tweaks to notification tolerance (allow multiple calls to same link without a
  memory leak!).  Make use of DTF_NONE.

May 15 2017
- client.c: fixed problem when identical links create a dependents lists but later discover
  that they are the same MCA dependents.
  add routine SetNotificationToleranceEx().
  add new notification tolerance logic to check for out_of_tolerance.
- prolog.h: cleaned up defunct routine.
- errors.h, errlst.c: add 'out_of_tolerance'
  added #define BASE_CC() for convenience
- srvcore.h: expand 'DataToleranceFactor' to include 'offset', 'length' and 'flags' and add
  some DataToleranceFactor flag #definitions.
- srvdbase.c: build id now 5337

May 10 2017
- hstlib.c: fix problem retrieving CF_IMAGE from the local history subsystem
  (crept in when STRUCTs and compound data types were added).
- srvdbase.c: build id now 5336

May  9 2017
- srvdbase.c: relax the error category for GetFecName() entries.
- srvdbase.c: build id now 5335

May  4 2017
- repeater.c: trap 'illegal_device' with device query precedence to accomdate Karol's handler.
- client.c: check address re-acquisition also for asynchronous SINGLE calls.
- dbtools.c, dbtools.h: export MakeDirectoryPath()
- srvdbase.c: build id now 5334

Apr 27 2017
- server.c: only add to followers if contract to a registered (and not stock) property
- srvdbase.c: build id now 5333

Apr 26 2017
- pytine.cpp: fix problem with structure input.
  fixed problem where CA_WRITE was hard-wired as the access in getting the property information in a 'call'
  ('input' does NOT imply access = WRITE!).
  fixed some archaic (from EMBL?) adjustment of the array length from a python object if the data type is a string type.
- srvquery.c: fix some stock property registration issues concerning properties with input
- srvdbase.c: build id now 5332

Apr 25 2017
- almlib.c: do not write meaningless empty alarm manifest files.
- srvdbase.c: build id now 5331

Apr 24 2017
- server.c, iplib.c: apply CloseHandle() to detached windows threads.
- srvdbase.c: build id now 5330

Apr 23 2017
- srvdbase.c: fixed (yet another) problem with adding 'followers' (realloc() problem).
  zero out the realloced followers space.
- srvdbase.c: build id now 5329

Apr  4 2017
- srvip.c, client.c srvip.h: add 'gSndIpBroadcastsOnly' flag and associated logic:
  routine SetSendGlobalsAsBroadcastOnly() + env TINE_GLOBALS_BROADCAST_ONLY.
  This should help when servers - e.g. Magnet server - wish to call SendNetGlobal()
  but make use of a broadcast rather than the default multicast.
- hstlib.c: improved diagnostics when things (Mark's problem) go wrong.
- srvdbase.c: include new env variable in the 'dump'.
- srvdbase.c: build id now 5328

Apr  3 2017
- hstlib.c, hstlib.h: added Get/SetHistoryLateAddtionWindow() and TINE_HISTORY_LATE_ADDITION_WINDOW env.
- client.c: protect feccmp() and eqmcmp() against possible NULL entries.
- srvdbase.c: build id now 5327

Mar 31 2017
- client.c: relax feclog error entry for missing globals if the 'globals' value
  is NOT coming from a system known GLOBALS server.
- srvdbase.c: build id now 5326

Mar 23 2017
- srvcore.h, srvdbase.c: added variable 'gIgnoreFollowers' for convenience.

Mar 22 2017
- srvquery.c, server.c, srvcore.h: fix name-length problem in addFollowers().
  don't add followers for the ENS or GENS.
- srvdbase.c: build id now 5325

Mar 21 2017
- clntools.c: respect property query precedence in tdevlist.
- syslib.c: make all posix mutexes recursive! (fixes a problem introduced
  recently, where an address reacquisition removes any redirection information).
- srvdbase.c: build id now 5324

Mar 20 2017
- srvdbase.c: ensure the correct file delimiter in the followers.csv file.
- srvdbase.c: build id now 5323

Mar 16 2017
- srvquery.c: added a removal feature to stock property 'FOLLOWERS'.

Mar 15 2017
- srvquery.c, ttycmd.c: added 'followers' as stock property and as cmd line
  property.
- swaplib.c: fixed registration problem of AWSr4
- srvcore.h, server.c: add 'follwers' list to zeroth order
- srvdbase.c: build id now 5322

Mar 10 2017
- dbtools.c, toolkit.c, dbtools.h: added feature to write and read acquired tagged
  structure info to/from the address cache directory.
- srvdbase.c: build id now 5320

Feb  9 2017
- client.c, dbtools.c, dbtools.h: fixed problem re-directing following a flushCache.
- srvdbase.c: build id now 5319

Feb  7 2017
- several routines: fix some warnings ...
- client.c: protect the wc callback against a flushCache.
- srvdbase.c: build id now 5318

Feb  6 2017
- client.c, dbtools.c, dbtools.h: tweaks and refactoring to be able to reacquire
  and apply redirection information from the GENS.
- toolkit.c: fixed string termination problem in getValidCsvString().
- srvdbase.c: build id now 5317

Feb  2 2017
- dbtools.c: fix problem getting the command line on a MAC.
- srvcore.h, client.c: convert the redirection table from a linked list to a hash table
- srvdbase.c: modify 'lookupPropertyName()' to check for stock property structure fields.
- srvdbase.c: build id now 5316

Jan 31 2017
- python.cpp: added a check on tuples for 'set' calls.
- client.c: more msglog()s if a redirection fails
- syslib.c: spit msglog to console also if errorlog and status != 0
- clnip.c: fix diagnostic
- srvdbase.c: build id now 5314

Jan 28 2017
- srvquery.c: ensure a 'gDieOnAddrInUse' message comes from the ENS
- srvdbase.c: build id now 5313

Jan 27 2017
- server.c: tweaked the recent 'single-delivery' fix.
- srvdbase.c: build id now 5312

Jan 26 2017
- tinetype.h, srvcore.h, server.c, client.c: added Get/SetPropertySubscriptionRenewalLength() for applying a
  'one-size-fits-all' renewal length to contracts of a specific property.
  added Get/SetSubscriptionRenewalThreshold() to apply a link specific renewal threshold.
- server.c: ensure that 'single-delivery' contract coercion codes are not bundled in the same return packet.
- toolkit.c: fix several issues concerning save-and-restore with format CF_STRING.
- srvdbase.c: build id now 5310

Jan 23 2017
- client.c: added S.Weisse trap conditions on TCP sockets in checkClientNotification().
- ttycmd.c: added 'skipcanceled' and 'splitlines' to the help list.
- srvdbase.c: build id now 5308

Jan 20 2017
- client.c: diagnostic tweak concerning connection list output
- dbtools.c, almlib.c, client.c: back off on error level concerning CAS and CYCLER access from servers.
- srvdbase.c: build id now 5307

Jan 18 2017
- client.c: fix a couple of spots where CM_DATACHANGE and CM_EVENT were used incorrectly,
  added better mutex handling in processing incoming data (S. Weisse)
- syslib.c: removed extraneous (?) removal of the CM_SYNCNOTIFY bit if TCP socket error.
- srvdbase.c: build id now 5306

Jan 17 2017
- client.c, ttycmd.c: diagnostic tweaks
  added console parameter 'splitlines'.
  added console parameter 'skipcanceled'.
- srvdbase.c: build id now 5305

Jan 15 2017
- errlst.c, errors.h: new error 'name_not_found'
- hstlib.c: trap error on call to getAvailableDiskSpaceInBlocks()
- client.c: log globals timeout prior to mcast group shuffle
- srvdbase.c: build id now 5304

Jan 13 2017 (a friday)
- dblib.c: catch fgets() stopping on EOF as well (many  .csv files don't end on a new line)
- srvdbase.c: build id now 5303
- tbufsrv.c: fix (?) longstanding problem buffering individual channel input values

Jan 12 2017
- toolkit.c: fixed warning.

Jan 10 2017
- toolkit.c, toolkit.h: introduce routine AssignDataToDTYPE() for use in .NET
- dblib.c: make use of CSV_MAXLINE_LENGTH in getDatabaseSize() and add some checking
  and a warning if a csv file line it too long.
- srvdbase.c: build id now 5302

Jan  9 2017
- srvip.c: added soclose() to unix pipe in CloseIpcPipe.
- syslib.c: minor tweak
- srvdbase.c: build id now 5301

Jan  8 2017
- iplib.c: trap errno = 0 from 'poll()' call and supply message "timeout or hangup".
  sanity check on nTcpsck >= 0 (S.Weisse).
- srvip.c: calls to AssignConnectionSocket() should check >= 0 for success as this
  call now returns a table entry rather than a socket (S.Weisse).
- client.c: don't assign callback reference until other conTbl fields have been assigned.
- syslib.c: fix problem with releasing mutex in putStreamParams.
- srvdbase.c: build id now 5300

Jan  6 2017
- client.c, server.c: add some diagnostic and a trap for a contract to a local server
  attempting to request a payload larger than the shared memory buffer when shared
  memory jumbos are in effect!
- srvdbase.c: build id now 5299

Jan  4 2017
- srvdbase.c, tinetype.h, srvquery.c, server.c, srvcore.h: add numCalls field to the
  ExportListStruct and replace 'reserved' in Activity structure and add a counter
  in doContract (why didn't we think of this years ago!).
- clnip.c: add newline at end to avoid a warning on cross-compiler.
- srvdbase.c: build id now 5298

Jan  3 2017
- toolkit.c: remove copy and paste error.

Jan  2 2017
- prolog.h: remove redundant switch #define MAX_FDSETS
- srvquery.c: fixed several 'small problems' with new HISTORY.CMT(S) stock properties.
- toolkit.c: added some helper routines for getting/setting annotations
- srvdbase.c: build id now 5297

Dec 30 2016
- several routines: make use of new '_sendToDbg' variable to steer feclog/msglog messages
  to the console or not. (instead of modifying/restoring the tineDebug state).
- iplib.c: flag canFreeOnError if bucket cannot be found.
- syslib.c: additional mutex protection when traversing the connection table following a
  TCP socket error. variable initialization.
- srvip.c, client.c: move check on gCatchConsoleBreak to initClient() from initIp().
- client.c: remove callback reference in CloseLink() no matter what.  Also: early exit if
  the contract mode is already CM_CANCEL.
- srvdbase.c: build id now 5296

Dec 28 2016
- srvquery.c: tweak the stock registration for ALARMS to provide the optional input information.

Dec 27 2016
- client.c, dbtools.c, srvip.h: Allow filter links to ignore 'illegal_property' concerning the decision
  to close the link (fixes a startup problem when the target link is the server itself).
  Add #define ADDRFLAG_LOCAL_HOST and ADDRFLAG_LOCAL_PROCESS for use with 'addrFlags' in the local FecAddrStruct
  table.
- srvquery.c: allow HISTORY.CMTS to take 'no input' (then range = last 24 hours)
- srvdbase.c: build id now 5295

Dec 23 2016
- srvip.c, client.c: explicitly free in the cleanup routines any attachfec pipe that might be open.
- srvdbase.c: build id now 5294

Dec 20 2016
- client.c: make SetConnectionTableCapacity() 'dynamic' (with realloc)
- listener.c, listener.h, tbufsrv.c: add freeMexListenerTable() and a __destructor__
  for the UNIX world.
- srvcore.h, server.c: fix some problems recognizing jumbo MMF transfers.
- swaplib.h, srvdbase.c: ensure the system struct pointers are reset to NULL
  in freeServerMemory().
- toolkit.c: fixed variable assignment problem.

Dec 19 2016
- tcycler.c: various tweaks to get the cleanup to return all memory to the heap
- various modules: many tweaks to get valgrind to return all memory to heap.
- tinedefs.h: declare release 4.6.0
- srvdbase.c: build id now 5293

Dec 17 2016
- tcycler.c: move CloseSystemMutexSet()
- syslib.c, iplib.c, srvip.c, clnip.c: refactoring to solve various cleanup issues concerning
  TCP threads.

Dec 15 2016
- iplib.c, syslib.c, server.c, srvip.c, srvcore.h, srvip.h: some necessary refactoring
  to solve a 'free TCP resources on error' problem.
- srvquery.c: fixed format warning.
- almlib.c: some tweaks trying to insure a collapsed alarm is removed.
- srvip.c, syslib.c, server.c: some TCP tweaks concerning bucket removal.

Dec 14 2016
- dbtools.h, dblib.c, srvquery.c: added stock properties HISTORY.CMT and HISTORY.CMTS
- almlib.c, almlib.h: ??
- hstlib.c: introduce isNonCompoundFormat() to bypass CF_DBLTIME and CF_NAME64TIME in the
  test for field indices, etc.
- syslib.c, iplib.c: some improvements with handling lost TCP connections
- srvdbase.c: build id now 5292

Dec  7 2016
- tora! tora! tora!
- client.c: fixed warning
- syslib.c, srvcore.h: added routine GetMessageList() for use in the 'spider'.
- srvdbase.c: build id now 5291

Dec  2 2016
- client.c, srvcore.h: added routine GetConnectionList() for use in the 'spider'.
- syslib.c: make sure the msg table is cleared at initialization time.
- srvdbase.c: build id now 5290

Dec  1 2016
- clntools.c: fixed a couple of problems with accessing large amounts of data.

Nov 29 2016
- syslib.c, tinetype.h: added routine GetTimeStampFromString() for time string
  conversion (to replace similar routine in clntools.c)
- client.c, server.c: fixed a couple of problems with jumbo shm grams.
  fixed problem (S.Weisse) copying dependent IMAGE data.
- srvdbase.c: build id now 5289

Nov 25 2016
- srvquery.c: fix the trap .NAM.NAM fix!
- srvdbase.c: build id now 5288

Nov 24 2016
- server.c: fixed problem swapping bytes for an outgoing MDA on big endian machines.
- srvdbase.c: added the shm info to 'get settings'
- pytine.cpp: added check on STREAM in synchronous calls.
- srvdbase.c: build id now 5287

Nov 23 2016
- shmalloc.c: diagnostic tweak.
- srvdbase.c: trap calls to ".NAM.NAM" properties and do NOT treat them as
  meta properties !
- iplib.c: fixed winsock diagnostic
- syslib.c, iplib.c: keep non-server from writing to fec.log, messages.log.
- srvdbase.c: build id now 5285

Nov 22 2016
- shmalloc.c, shmalloc.h: add MMF jumbo logic
- server.c, srvcore.h: generalize the 'iststream' to 'isjumbo' logic.
- hstlib.c: fixed problem recognizing if a long-term history is being kept.
- srvdbase.c: build id now 5285

Nov 16 2016
- server.c, srvip.c, srvcore.h : introduce 'disallowSingleDelivery' (i.e express delivery)
  and set to TRUE if an incoming TCP stream exceeds the initial chunk boundary
  (otherwise a concurrency over the server work area ensues by the delivery and the request interpretation.
   note: this is rare but can happen e.g. with the FEC Remote panel in TCP mode)
- clntools.c: fixed output len problem in tsendrecv.
- errors.h, tinetype.h: move prototype
- srvdbase.c: fixed memory cleanup when a property list is used for multiple devices.
- srvdbase.c: build id now 5284

Nov 15 2016
- client.c: never suppress a startup notifcation
  (address the EMBL 'kill and restart a client in EVENT mode' issue).
- srvdbase.c: build id now 5283

Nov 14 2016
- syslib.c: wrap 'fmt' with LFMT() in various format getter routines.
- srvquery.c, server.c, toolkit.c: properly assign a structure's tag to the input
  and output data types if applicable, when queried for information.
- srvdbase.c: build id now 5282

Nov 11 2016
- hstlib.c: fixed some problems retrieving a snapshot of a complex data type field.
- srvdbase.c: build id now 5280

Nov  9 2016
- "Independence Day" in the US
- srvquery.c, hstlib.c, hstlib.h: handle new stock property 'HSTFILTERS'.
- toolkit.c: fix alignment problem on Solaris build.
- srvdbase.c: build id now 5280

Nov   6 2016
- almlib.c: fixed errors on a non-INTEL build.
- client.c: fixed a solaris warning.

Nov   3 2016
- almlib.c, almlib.h, tinetype.h, srvquery.c: added alm filter query stock property
- iplib.c: fixed output diagnostic on windows 32-bit
- srvdbase.c: improved diagnostic
- ttycmd.c: added 'errorlvl'
- srvdbase.c: build id now 5279

Oct  17 2016
- client.c: fixed output for tracelink.
- srvdbase.c: build id now 5278

Oct  14 2016
- prolog.h: #define _vsnprintf vsnprint (a la snprintf) for windows.
- toolkit.c, syslib.c: condense code a bit using above #define.
- client.c: fix a potential null pointer problem when illegal_protocol kicks in.
- srvdbase.c: build id now 5277

Oct  12 2016
- syslib.c: added routines feclogEx(), etc. to include log 'levels' and add an errors.log
- numerous routines: use feclogEx() in place of feclog() in many locations.
- srvdbase.c: build id now 5276

Sep  29 2016
- client.c: fix a couple status flag problems concerning CC_SHOWALL and CE_RENEGOTIATE
- srvdbase.c: build id now 5275

Sep  26 2016
- iplib.c, syslib.c : fixed a seg fault when cleaning up TCP buckets under certain
  circumstances.
- many routines: re#define SystemFree(p) to 'if (p != NULL) free(p), p = NULL'
  and refactor various locations accordingly.  Thus a 'SystemFree' is guaranteed to
  check vs. NULL and to assign to NULL post-free.
- srvdbase.c: build id now 5274

Sep  21 2016
- dbtools.c, dbtools.h, client.c: introduce and use new routine resetOutputBlocks() which
  comes into play when a local (MMF or PIPE) link goes down and comes back as a UDP loopback
  (then the data MTUs are different and a large payload can cause problems when the 'numblks'
   is suddenly larger).
- srvdbase.c: build id now 5272

Sep  19 2016
- srvquery.c: remove CA_CHANNEL from stock property 'PROPS'
- almlib.c: don't remove the almNEW bit unless the datachange window has expired.
- clnip.c: remove irrelevant code when #define UNIX and no #define NO_TINE_PIPE
- srvdbase.c: build id now 5271
- pytine34.cpp: fixed null pointer problem in clearAlarm()

Sep  13 2016
- almlib.h: trivial doxygen tweak

Sep  12 2016
- tinetype.h: trivial doxygen tweak

Sep   9 2016
- server.c: a work-around for Karol's crazy illegal_property problem (where the 'last prp list'
  stored as a static variable became null inexplicibly).
- syslib.c: more diagnostic tweaks and some string length checks for the message table.
- srvdbase.c: build id now 5270

Sep   8 2016
- dblib.c, iplib.c: backtrack on some of the added 'strtrm()'s in the last update
  (memmove() really freaks out if a passed string is some const on the data segment).
- srvdbase.c: build id now 5268

Sep   7 2016
- iplib.c, srvdbase.c, srvcore.h: trap 'bad name' characters in registration calls.
- srvdbase.c: build id now 5267

Sep   6 2016
- several routines: add routine dumpMsgTableToFile() and call it automatically when
  shutting down.  Also allow 'dump messages' from the console to do the same.
  Change 'time_t' timestamp to 'double'. This nominally breaks an API call that noneone (?)
  was using.
- srvdbase.c: build id now 5266

Aug  31 2016
- numerous routines: remove global buffer gClientAddressBuffer and replace with local string buffers
  to ensure thread safety in diagnostic info.
- srvdbase.c: added env variable: FEC_LAZY_SCHEDULING
- server.c, srvip.c: if 'gServerIdle' is TRUE: still allow check on console commands.
- srvdbase.c: build id now 5265

Aug  30 2016
- almlib.c: better method for clearing watch table alarms applied to invalid_data as well.

Aug  29 2016
- group2csv.c: rename local 'makeDirectoryPath' to 'mkDirPath' to avoid header conflict.

Aug  28 2016
- srvdbase.c: build id now 5264

Aug  27 2016
- almlib.c: remembered to actually call the new routine checkFileErrorAlarms()
  regarding the automatic file_error alarms.

Aug  26 2016
- almlib.c: fix problem finding an alarm specific alarm filter.
  respect property handlers in alarm watch calls.
- client.c, syslib.c, hstlib.c, almlib.c, almlib.h: apply automatic
  'file_error' alarms under certain circumstances.
- hstlib.c: respect property handlers in local history calls.
- syslib.c, dbtools.c (and others): keep track of and clear 'file_error' alarms when warranted.
- srvdbase.c: build id now 5263
- tbufsrv.c: improved logging diagnostic

Aug  24 2016
- prolog.h, syslib.c: add a 'const' to the stricmp() and strnicmp() for the unix world.
- almlib.c: better method for clearing watch table alarms
- almlib.c: fixed recently introduced problems writing alarm manifests (link list instead of table).
- srvcore.h, toolkit.c, srvdbase.c: check for and handle overloads in acquiring
  property list structures.
- srvdbase.c: build id now 5262

Aug  23 2016
- almlib.c, almlib.h: clear the immeadiate partner in a watch table alarm if the value slides
  from 'warning' to 'real'.
- srvdbase.c: make stristr() return the spot in the passed string where the 2nd string was found.
- srvdbase.c: build id now 5261

Aug  22 2016
- almlib.h, almlib.c, srvquery.c, ttycmd.c: add option to print the 'update' message to
  the std output in the alm manifest dump calls.
- hstlib.c, hstlib.h: add option to print the 'update' message to std out in the
  history manifest dump calls.
- srvdbase.c: build id now 5260

Aug  15 2016
- almlib.c, almlib.h: added alarm-specific filters.
- srvdbase.c: build id now 5259

Aug  12 2016
- client.c: fixed problem with getFilterLinkFromParsableString().

Aug  11 2016
- server.c: fixed problem in property wildcard call with mixed handlers.
- srvdbase.c, tinetype.h: various tweaks and refactoring. Added some
  extended routines.

Aug  10 2016
- server.c, srvcore.h, tinetype.h: refactor some of the property handler changes.
  TODO: API call to register property handler with a reference.
- srvdbase.c: build id now 5258

Aug   9 2016
- almlib.c, almlib.h: first steps in added an alarm-specific filter.
- hstlib.c, srvquery.c: fixed problem with local hist calls of MCA elements which crept in
  with refactoring of getLTS and getSTS calls on June 12.
- srvdbase.c: build id now 5257

Aug   6 2016
- iplib.c: trivial change in freeing up a windows error buffer.

Aug   5 2016
- tinedefs.h, threader.h, syslib.c, client.c : add CA_NOCALLBACKS flag to
  suppress callbacks within a call to ExecLink(). Added mutex hAttrMutex to support
  this.
- server.c: fix (?) possible problem re-calling a SINGLE contract following a RETRY
  when the last results should have been returned.
- almlib.c: write manifest files after 1 minute.
- srvdbase.c: build id now 5256

Aug   3 2016
- clnip.c: comment tweak
- tine32.c: use SystemCycler(foregroundTTY) in srvTmrTask() as in UNIX builds.
- srvdbase.c: build id now 5255

Aug   2 2016
- tbufsrv.c: fixed problem with 'scheduled property synonyms'.
  add mechanism to retrieve a spectrum array segment at an 'offset' index.

Aug   1 2016
- almlib.c, almlib.h, ttycmd.c: add alarm manifests for definitions and watch table.
- iplib.c, srvip.c, srvip.h: fixed a (long-standing?) warning on windows.
- srvdbase.c: build id now 5254

July 29 2016
- syslib.c, srvquery.c, tinetype.h: introduce 'gDieOnFecIsAlias' and Set/Get routines.
  (default = FALSE).
- server.c: trap problem renegotiating contract back to the normal contract length if
  the returned data size returns to 'normal'.
- client.c: better check on a 'FEC match' in looking for existing link (trap exotic
  alias condition).
- almlib.c: remove the almDATACHANGE bit if a heartbeat or oscillation update comes.
- srvdbase.c: build id now 5253

JUly 25 2016
- prolog.h: introduce a #if !defined(UNIX) && !defined(HAVE_GETTIMEOFDAY) around
  the prototype for gettimeofday in order to work around the (incredibly stupid)
  #define timezone in python 3.5 !

July 22 2016
- almlib.c: set the alarm tag to the alarm text (1st 32 chars) if it is empty.
- srvdbase.c: build id now 5252

July 19 2016
- repeater.c: addressed problem with the repeater targets the GENS and there are
  MCA properties.

July 18 2016
- clntools.c: fixed printf() problem. added assertBlobSize() in strategic spots.
- pytine34.cpp: fixed problem with pushing arrays and strings.

JUly 17 2016
- iplib.c, srvdbase.c: log WSAStartup() and WSACleanup().

July 15 2016
- tcycler.c: make direct use of 'foregroundTTY' in SystemCycle() call.
- server.c, srvcore.h: introduce 'isinside' field to replace the desired role of
  'isbusy' inside of the ExportListStruct (isbusy now refers to WRITE contracts).
- other routines: some refactoring. Add routines Get/SetInterpretConsoleCommands()
  and env variable TINE_CONSOLE. Make 'WSAinitialized' global and reset it to -1
  when WSACleanup is called.
- srvdbase.c: build id now 5251
- tbufsrv.c: make use of GetInterpretConsoleCommands() and call SystemInit() with the
  results.

Jun  23 2016
- tcycler.c: introduce gIsClosingDynamic flag to force pass through the bottom half of
  killCycleTimer() so the the globals thread has a chance to stop.

Jun  22 2016
- toolkit.c: fixed the length problem in the annotation string in _sndEvntTrgr() even better.
- srvdbase.c: build id now 5250

Jun  17 2016
- toolkit.c: fixed a length problem in the annotation string in _sndEvntTrgr()
- srvdbase.c: build id now 5249

Jun  16 2016
- toolkit.c: add a 'retry' in GetSystemPropertyInformation() for meta-property look-alikes.
- srvdbase.c: allow column header 'USERNAME' as an alias for 'USERS' in getadmins().
- srvdbase.c: build id now 5248
- tinedefs.h: declare 4.5.10

Jun  15 2016
- pytine34.cpp: move the 'BYTES' option from 'mode' to the (output) 'format' option

Jun  14 2016
- hstlib.h, hstlib.c, srvquery.c: fixed some problems retrieving complex data types from the
  local history subsystem.
- iplib.c: keep freeBuckList() from spinning if the OS removes all the threads prior to
  its being called.
- ttycmd.h, ttycmd.c: trap the 32-char function name printout in ttyhelp.  Modify documentation.
  A number of windows pipe tweaks to keep the pipe listener from constantly resetting
- client.c, tinetype.h: introduce routine ReassignLinkData()
- clnip.c, srvip.c: refactor the check for a windows pipe and explicitly include in clnip.c
  when not running as a server (to get the debug pipe).
- srvdbase.c: build id now 5247

Jun  13 2016
- pytine34.cpp: add a 'BYTES' mode option to specify that data should be returned as
  a byte array.

Jun  12 2016
- srvquery.c, hstlib.c, hstlib.h: introduce 'fieldindex' in local history calls.
  Much refactoring concerning history readouts as the number of arguments passed in the
  calls was becoming ridiculously large.
- srvdbase.c: build id now 5246

Jun  10 2016
- ttycmd.c, ttycmd.h: add sig_break() for catching SIGINT and SIGTERM (optionally)
  add tty some 'set' commands to commands.log
- iplib.c: log DBG attach/detach in commands.log
- syslib.c, dbtools.c, tinetype.h: add gCatchConsoleBreak (default = FALSE) and Get/Set
  routines for catching ctrl-C etc. and closing gracefully.
- srvdbase.c: build id now 5245

Jun   8 2016
- client.c: assign the link timereqMSEC in prepSubRequest.
  a couple link queue tweaks: wait a bit longer to get the link queue mutex in doProcessData();
  queue length can equal queue depth (if queue then current data set is entry #1)
- srvdbase.c: build id now 5244

Jun   7 2016
- toolkit.c: fixed string termination problem in GetValuesArrayAsString() if type = CF_TEXT.
- srvdbase.c: build id now 5242

Jun   6 2016
- python34.cpp: fixed (?) issue with pytine_pushdata().
- tcycler.c: change SystemCycle(FALSE) to SystemCycle(TRUE).

Jun   3 2016
- dblib.c: workaround a microsoft assertion problem in isspace().
- srvdbase.c: fixed problem processing region rule information (due to bug in CAS response)
- tinedefs.h, syslib.c: added routine getFieldInFormat() for later use in local history and central archive
  readout of complex data types.
- srvdbase.c: build id now 5241

May  30 2016
- syslib.c: add and use resetSystemCycleThread() for multi-threaded builds when
  SystemReset() is called, so that isAllowedSystemCycle() can 're-initialize'.
- toolkit.h: fixed some documentation
- tcycler.c: reset cycleTerminated to FALSE when the thread finishes.
- srvdbase.c: build id now 5239
- tbufsrv.c: added some more loggin info.

May  27 2016
- tbufsrv.c: tweak to make tcycler.c behave as much like windows as possible.
  (relevance to LabView on RT Linux).

May  26 2016
- prolog.h: make default INCLUDE_IN_LOGFILE = TRUE for VXWORKS.
- ttycmd.c: also turn off errorDebug if 'debug' set to 0
  set foregrountTTY to FALSE on read error.
- srvip.c: SIGIGN on SIGTTIN and SIGTTOU
- clnip.c: set the sys stamp and usr stamp for 'globals' variables as well !
- server.c: make 'foregroundTTY' a global variable for all platforms and juggle it if
  StartupDebug = TRUE.
- srvdbase.c: build id now 5238

May  24 2016
- prolog.h, srvcore.h, iplib.c, server.c: use global variable gIsCyclePollingMode instead of macros
- srvdbase.c: build id now 5236

May  23 2016
- server.c: don't write to commands.log for VXWORKS etc.
- srvdbase.c: build id now 5235

May  20 2016
- client.c: add linkTbl mutex protection inside checkConnections() (and hope there's no deadlock)
  in order to protect against double SystemCycle() loops or otherwise closing a link on an
  independent thread.
- srvdbase.c: build id now 5234

May  18 2016
- numerous modules: avoid a potential deadlock when debugging is ON and there are send socket errors
  also in this regard: treat 'printf' as a 'send' (as it is on VxWorks).
- srvdbase.c: build id now 5233

May  13 2016
- tcycler.c: fixed a (LabView related) cleanup problem where the mutex set was being prematurely removed
- tbufsrv.c: spit out the process id in calls to AttachServer()
- client.c, tinetype.h: introduce Set/GetSuspendCallbacks() (to handle the L.Froehlich use-case)
- srvdbase.c: build id now 5232

May  11 2016
- server.c: fixed diagnostic when CF_STRING comes in on a command and tries to get written in commands.log
- srvdbase.c: build id now 5231

May  5 2016
- ttycmd.c, client.c, dbtools.h: added a 'flush address' and 'flush cache' to the console
  commands.
  Fixed the (rather annoying) strlen() needs to be cast to 'int' warning
- client.c: fixed a problem with tracelink + CM_CANCEL
- srvdbase.c: build id now 5230

May  4 2016
- client.c: fixed timereq = 0 in _attachLink so as to avoid long wait in establishing TCP connection
- client.c, server.c: attempt to notice a TCP close on a secondary client early.
- more tweaks
- client.c, iplib.c: trap repetitive CM_CANCELs for a TCP link.
- client.c: respect the bound and mca links in getLinkIdFromCallbackId()
- srvdbase.c: build id now 5229

May  3 2016
- server.c, toolkit.c, toolkit.h: improved 'putCommandsInCmdLog'. Make GetValuesAsString()
  wrap GetValuesArrayAsString() with additional 'separator' input.
  fix cycle deadband to the minPollRate instead of the maxPollRate !
  Add sanity check on MinPollRate < 10 in init routine.
- prolog.h: fix #define of INCLUDE_IN_LOGFILE (VXWORKS, NIOS = FALSE, everyone else TRUE)
- tinetype.h: add prototype for new routines Set/GetPutCommandsInCmdlog()
- srvdbase.c: build id now 5226

May  2 2016
- server.c, toolkit.c: added a 'putCommandsInCmdLog' switch and a bit of logic.
- make sure the 'deadband' is marked as fixed when the min poll interval sets it.
- srvdbase.c: build id now 5225

Apr 28 2016
- iplib.c: minor diagnostic tweak to reduce unnecessary info in fec.log (as 'cannot select' is prone to happen)
- srvdbase.c: build id now 5224

Apr 26 2016
- srvdbase.c, iplib.c, srvip.h: add routine sckadrcmp() to replace a memcmp() on
  a comparison of SCKADR objects used in access lock comparison.
 (there can be junk in the non-relevant bytes).
- srvdbase.c: build id now 5223

Apr 22 2016
- many routines: refactored the rprtSckErr() routine.
- srvip.c, iplib.c: fixed problems recognizing and reacting to a socket hangup.
- srvdbase.c: build id now 5223

Apr 21 2016
- syslib.c, client.c, tinedefs.h: protect 'getLinkIdFromCallbackId()' from false positive
  due to non-active link transports.
- srvip.c, clnip.c, iplib.c, srvip.h, syslib.c: refactoring around the poll() behavior.
  (the move from select() to poll() is still having ramifications).
- srvdbase.c: build id now 5222

Apr 20 2016
- srvip.c, srvip.h: check 'error conditions' in the fd set returned from poll() at
  strategic places.  Note: poll() does not return -1 on e.g. socket error.
- srvip.c, clnip.c: fix offset problem with both client and server sockets in same set
  (single threaded builds).
- srvdbase.c: build id now 5220

Apr 19 2016
- syslib.c, tinedefs.h: added helper function 'getPrimaryFormat()'.
- srvdbase.c: fixed initialization warning.
- srvdbase.c: build id now 5219

Apr 18 2016
- hstlib.c: check CE_SENDDATA for TDS acquisitions of elevated types.
- many routines: add elevated MCA logic for certain overloaded types.
- syslib.c, tinedefs.h: added routine 'getPrimaryFormat()' as a helper.
- srvdbase.c: build id now 5218

Apr 12 2016
- toolkit.c: fix 'case issue' with save/restore files.
- srvdbase.c: build id now 5217

Apr 11 2016
- server.c, srvdbase.c, toolkit.c: treat MACOS as per non-INTEL concerning 'tmpWorkArea'
  (MAC doesn't like in-situ memcpy()).
- srvdbase.c: build id now 5216

Apr  8 2016
- client.c: start con lst traversal at 1 in removing 'relinked links' (the ENS entry won't
  be doing this).  Is this really necessary?
- server.c, srvdbase.c: add mutex protection to avoid concurrency in SystemFreeResources()
  and FreeEQPModules() that can happen if SystemStop is called explicitly.
- srvip.c: in case of 'serious socket errors' add a millisleep(10) before continuing.
- srvdbase.c: build id now 5215

Apr  7 2016
- many modules: sprinkled 'errorDebug' in various significant spots.
- syslib.c, tinetype.h: introduce a 'SetStandAlone()' as possible alternative to
  env variable (discouraged, but useful for debugging).
- iplib.c: tweak some diagnostic output in rprtSckErr.
- srvdbase.c: build id now 5214

Apr  5 2016
- many files: replace soperror with rprtSckErr. Introduce variable errorDebug.
- srvdbase.c: fixed problem with unassigned variable in region rules acquisition.
- dbtool.c: use proper length in string compare of loopback address.

Apr  4 2016
- almlib.c, ttycmd.c, srvquery.c: add a 'flushAlarms' utility (stock and console properties)
  to remove all alarms.
- srvdbase.c: improve alarm regions acquisition from CAS (avoid redundant calls to same
  context for multiple equipment modules)
- other modules: return more memory when calling freeSystemResources(). Note: this really
  has little effect other than making valgrind a bit happier.
- tinedefs.h: declare 4.5.9

Apr  1 2016
- almlib.c: Fixed bug assigning alarm data values for collapsed alarm.
  Put a 1 hour limit on the alarm termination window.
- syslib.c: fixed problem with UNIX branch in scanFecLogfiles.
  added check on 'is temporary file'
- srvip.c, tinetype.h: added FEC_DIE_SOCKETERROR and associated getter/setter to
  turn off the 'exit(1)' on serious socket errors.
- srvdbase.c: removed warning
- srvdbase.c: build id now 5213

Mar 31 2016
- syslib.c: fixed bug with yesterday's region rules tweaks.
- server.c, srvdbase.c, srvcore.h: ensure CAS probe of region rules.

Mar 30 2016
- tcycler.c, tine32.c : check for serverExitCondition dependency of cycleTerminated.
- tinetype.h: tweak #definition of ccerr : add a () around the 'error' code
- client.c, server.c: check gClientIsClosing when establishing a connection socket.
- srvcore.h: add a prototype.
- iplib.c: in 'freeBucketList': reassign the bcktList linked list pointer with each pass.
  due to the recent 'release/get' tcp bucket table mutex inside the free loop this can
  be important!
- several routines: make the region rules eqm-specific.
- srvdbase.c: in fec file scanning: make the file name buffer 64 bytes long and zero it out.
- srvdbase.c: build id now 5212

Mar 17 2016
- hstlib.c: fixed problem with getting the hst index from MEMBERS.
  use DTYPEZERO(din) in historyCycler to avoid problem with doocs servers.
- threader.h: remove prototype for ThreadExit()
- srvdbase.c: build id now 5211

Mar 16 2016
- syslib.c: fixed problem with SystemStop()
- syslib.c, threader.h: make ThreadExit() static.
- dbtools.c: don't try to resolve addresses if we're midway into shutting down.
- srvdbase.c: fixed problem if a NULL description is passed to RegisterPropertyInformation
  added tcpConTblSize to the system 'attributes'
- tcycler.c: prevent the 'labview call' to 'stop' the system cycler if we haven't started it.
- srvdbase.c: build id now 5209

Mar 15 2016
- dbtools.c: fixed (?) exotic situation when ToggleNameServer is called while shutting down.
- srvdbase.c: build id now 5207

Mar 14 2016
- syslib.c, srvdbase.c: use an 'isRunningAsServer' branch inside of SystemStop.
- bufsrv.c, bufsrv.h: added 'pushedCompletionCode' + SetBufferedPropertyStatus() and
  initialize status = 'not_initialized' (set to success on every 'push')

Mar 13 2016
- hstlib.c, hstlib.h: added first round of 'members' index x-reference
- client.c, clnip.c: protect against long 'spinning' timeout in TCP connection establishment
  fix problem resetting link counters for SetSystemSubscriptionRenewalLength() (link list and not
  array list)
- srvdbase.c: build id now 5206

Mar 11 2016
- tbufsrv.c: zero out a CF_TEXT array before doing a strncpy.

Mar  8 2016
- syslib.c, tinetype.h: new routine SetFecLogPath() + API break due to case change
  GetFeclogPath() -> GetFecLogPath() (this probably has no users other than someone at EMBL
  who will surely scream bloody murder).
- srvdbase.c: build id now 5205
- repeater.c: fixed some string length output in sprintf.

Feb 23 2016
- srvdbase.c: add Get/SetSystemAttribute() as a general routine for many global variables for
  use in python, etc.
- srvdbase.c: build id now 5204
- pytine34.cpp: incorporate the above in set_attribute(), get_attribute()

Feb 21 2016
- server.c, syslib.c: trap call to SystemStop while server is still initializaing.
- srvdbase.c: build id now 5203

Feb 19 2016
- tine32.c: don't call SystemStop().

Feb 16 2016
- client.c: fixed problem assigning link group members piecemeal.
- srvdbase.c: build id now 5202
- pytine34.cpp: fixed problem with syncgroup

Feb 12 2016
- client.c: more trace link
- iplib.c: attempt to fix a potential deadlock during shutdown
- srvdbase.c: build id now 5201

Feb 10 2016
- shmalloc.c, dbtools.c: tweak to get shared memory communication on windows working
  again (just look for the windows class with 'fecname').
- tine32.c: fixed some warnings in VS 2015
- client.c, tine32.c, srvcore.h: added routine CloseClientLinks() to send out the
  CM_CANCEL requests (and nothing else) for use in SystemKillCycleTimer() on windows.

Feb  9 2016
- syslib.c: use 'poll' to check the 'recv'-ability of globals and multicast sockets on
  windows as in unix.
- iplib.c, client.c: some tweaking to get the TCP recv thread to gracefully close.
- shmalloc.c, tine32.c: improve cleanup routines (with work-arounds) for 'clean' exits in
  MatLab.
- srvdbase.c: build id now 5200

Feb  3 2016
- srvquery.c: make sure the timestamp and systamp are set in query calls (bug introduced Jan 12).
- toolkit.c: make sure the output *num and *pqs are set in GetSystemPropertyInformation() when a
  stock property is passed.
- srvcore.h, tinetype.h: updated some dox.
- srvdbase.c: build id now 5199

Feb  2 2016
- client.c, srvdbase.c, srvcore.h: refactoring concerning the relink table reference in the
  connection table.
  Introduce and use macro 'isValidConTblEntry()'
  use snprintf (with FULL_NAME_SIZE) in makeLinkKey.  This covers the nutty case where somebody
  has max lengths for all elements of the hierarchy (then the '/' and '[' would have caused an overwrite).
- srvdbase.c: build id now 5198

Feb  1 2016
- ttycmd.c,.h, srvcore.h, client.c, dbtools.c: first round of 'trace link' logic.

Jan 30 2016
- client.c: fixed problem accounting for 'link error problems' (e.g. link_exists) in
  wild-card members.
  Fixed problem with output dump of wilcard members.

Jan 29 2016
- clnip.c: in initIPClient() call setupUDPSocket with mcastInit = TRUE.
- srvdbase.c: build id now 5197

Jan 21 2016
- srvdbase.c: fixed lethal bug in GetCaller() (came about due to recent refactoring)
- srvdbase.c: build id now 5196

Jan 19 2016
- server.c: only touch a contract's lasttime if it is expired (i.e. not simply a RETRY)
  flag contract 'isValid' if counter < CTR_RENEWAL also for CM_EVENT contracts
  (note the anti-polar requirements for Marina and Stefan here).
  Fixed recent bug in returning the num points in local history call.
- client.c: apply CM_RETRY to persistent link re-submissions AND remove the CM_RETRY
  following a 'send'.
- srvdbase.c: build id now 5195

Jan 18 2016
- srvquery.c, almlib.c: replace references to STKEQM with real EqmName as per the new
  eqm threading model.
- server.c: make use of the 'callPending' flag, both in wrapping an eqm Call and in
  Getcaller().
- srvdbase.c: build id now 5194

Jan 14 2016
- syslib.c: minor refactoring of previous fix.
- cmdcln.c: removed some unused variables

Jan 13 2015
- server.c: extra check on null pointers (altho it can't happen) in SendMessageToCaller.
- syslib.c: fixed an 'off-by-one' problem (ancient problem!) in reading the fec log.
- srvdbase.c: build id now 5193

Jan 12 2016
- many modules: revamp EQM thread calling model.  No longer user single resident thread to
  handle 'separate thread' calls.  Instead: just launch and let exit.
  Note: GetCaller() (and others) should also now work properly as the the self thread is
  matched to the contract thread id in order to get the appropriate client list.
- server.c: fixed memory free problem when 'express delivery' kicks in.
- srvquery.c: refactoring to accomodate bookkeeping necessary for matching threads.
- srvdbase.c: build id now 5192

Jan  6 2016
- tinedefs.h: declare release 4.5.8 so as to keep pace with the java release
  (server side separate thread possibility for contracts)
- srvdbase.c: build id now 5191

Jan  4 2016
- client.c: remove 'learning mechanism' for the watchdog polling interval (stick to 1000 msec).
- srvdbase.c: build id now 5190

Dec 22 2015
- server.c, srvcore.h, tinetype.h, tinedefs.h: cleaned up some exports in the headers and fixed problem
  with the DTYPEZERO() macro when #define TINE_DECORATED_CONSTANTS is in play.
- hstlib.c: dump the endianness in the history manifest.
- dblib.c, srvquery.c: handle CF_BOOLEAN as 'text' input and output in csv files (i.e. 'TRUE' or 'FALSE').
  (otherwise: transported a la CF_INT32 in a DTYPE struct).
- srvdbase.c: build id now 5189

Dec 20 2015
- tinetype.h, srvdbase.c: introduce SetAutoAdjustWorkAreaSize() (and use it to set to FALSE in the ENS)

Dec 18 2015
- server.c: fix warning regarding the usage of getMetaFormatAndSize().
- client.c: fix a possible concurrency problem with the 'error string' diagnostic in GetRPCLastError().

Dec 15 2015
- client.c: some new warning from VS 2015 repaired.
- server.c: make use of getMetaFormatAndSize() from toolkit.c inside GetDefaultFormatAndSize().
- srvdbase.c: build id now 5188

Dec 15 2015
- repeater.c, tineRepeater.c, repeater.h: add an 'ignoreListeningErrors' option so that
  an error via 'history.csv' doesn't kill the listener.

Dec 14 2015
- srvip.c, srvip.h: added helper API routine PollExternalDescriptor() for registered
  external socket descriptors with the tine system cycler.
- srvdbase.c: build id now 5187

Dec 11 2015
- various routines: some tweaks to get visual studio 2015 to compile and build without warnings.
- clntools.c: fixed problem with tmonitor which crept in yesterday

Dec 10 2015
- pytine34.cpp: set the py object to 'None' if the output size is 0
- clntools.c: revamp the 'tget' logic and buffering system to handle more formats and data sizes.

Dec  9 2015
- hstlib.c: fixed problem assigning record pointers for CF_HISTORY call spanning more than a month.
- srvdbase.c: build id now 5186

Dec  8 2015
- server.c, srvcore.h: check on redirected property inside GetDefaultFormatAndSize()
- srvdbase.c: build id now 5185
- pytine34.cpp: better diagnostics for IMAGE data when something goes wrong.

Nov 30 2015
- client.c, dbtools.h: remove context decoration in a check for a globals value
  (e.g. CycleNumber).
- srvdbase.c: build id now 5184

Nov 28 2015
- dbtools.c, srvdbase.c, dbtools.h: protect against a recursive deadlock if
  FindNameServerOnNetwork() is called explicitly.
- srvdbase.c: build id now 5183

Nov 26 2015
- srvip.c, srvip.h, iplib.c: take steps to ensure that there's no SIGPIPE signal during
  a TCP transmission.
- srvdbase.c: build id now 5181

Nov 20 2015
- client.c: minor diagnostic tweaks + also include a quick test if srv = SRVGLOBALS in
  'isGlobalsParameter' (i.e. the stock property query as well).

Nov 14 2015
- clntools.c: fixed problem getting IMAGE types.
- server.c, srvdbase.c: attempt to make API registration work when SystemInit() is called
  prematurely.
- srvdbase.c: build id now 5180

Nov  9 2015
- tbufsrv.c: some simple refactoring to shorten some variable names.

Nov  8 2015
- syslib.c: make parsing to get double array row length case-insensitive.

Nov  7 2015
- server.c: add (and tweak) removePhantomClientFromContracts() to removeClientTableEntry()
  so that there can be absolutely no defunct reference in the contract table
- tbufsrv.c: fixed problem memcopying the correct number of bytes for CF_IMAGE

Nov  6 2015
- tbufsrv.c, tbufsrv.h: a bit of refactoring to handle all formats with headers.
  explicitly handle CF_IMAGE type.
- clnip.c: only log socket read errors the first time (check for bad sockets on windows).
- syslib.c: fixed some problems with getting the correct 'array type' from the format string.
- srvdbase.c: build id now 5180

Nov  5 2015
- iplib.c, srvip.c: improved diagnostic when socket initialization fails.
- client.c: don't NotifyClient within prepSubRequest if TCP connection fails.
- srvdbase.c: build id now 5179

Nov   4 2015
- srvdbase.c, server.c, srvip.c, hstlib.c, syslib.c, toolkit.c: fix a couple of
  'path length' inconsistencies concerning recent improvement.
- almlib.c: added exported routine GetAlarmDefinition()
- prolog.h: added convenience macro definition for windows: strcasestr -> stristr
- pytine34.cpp: added setalarm/clearalarm

Nov   2 2015
- dblib.c, toolkit.c, dbtools.c, syslib.c, tinetype.h: systematically fix 'path length' for
  various directories to be 128 chars.
- client.c: test the 'PROPERTIES' access inside 'assertTriggerKeyExists()'.
- hstlib.c: minor diagnostic tweak.
- srvdbase.c: build id now 5178

Oct  15 2015
- clntools.c, tputget.c, tsendrecv.c: fixed display problem related to the desired
  versus discovered data length.

Oct  09 2015
- srvquery.c: fixed a couple of issues concerning stock property DEVDESCRIPTION
- srvdbase.c: build id now 5177

Oct  07 2015
- pytine34.cpp: put the IMAGE additions in the official version.

Oct  06 2015
- client.c: fixed problem passing callback reference in wilcard links
- srvdbase.c: build id now 5176

Oct  05 2015
- clien.c: added logic to trap CF_DEFAULT for wildcard calls at the client side.

Oct  04 2015
- client.c, toolkit.c: fixed some warnings.

Oct  03 2015
- various routines: revamp the client-side 'wildcard' acquisition: use a hash table
  instead of a simple table.
  Flag 'GENS' access so that GENS members are accessed rather than ALL devices.
  Add 'get wildcards' to the console commands.
  Some cleanup and consolidation concerning the canonical link 'key'.
- tinedefs.h: declare version 4.5.7
- srvdbase.c: build id now 5174

Sep  22 2015
- srvdbase.c, ttycmd.c, srvcore.h: added a 'get devicegroups' console command
  and related function for dumping this info to the screen.
- srvdbase.c: build id now 5174

Sep  21 2015
- srvquery.c: make sure 'messages' are also display at the console.
- srvdbase.c: build id now 5173

Sep  17 2015
- tinedefs.h: added addition image format definitions from S.Weisse.
- srvdbase.c: build id now 5172

Sep  15 2015
- tcycler.c: fixed problem closing down when the 'constructor' did not start
  the cycler, but the 'destructor' needs to clean up.

Sep  14 2015
- iplib.c, srvip.h: insert an 'errcnt' in the TCPBCKT structure. Improve the
  'select()ing' in TCP send operations.
  fix 'isInvalidSocket' for the new posix 'poll' logic + give error message
- srvdbase.c: build id now 5171
- pytine34.cpp: fixed problem returning the link id in the attach method.

Sep  10 2015
- pytine34.cpp: fixed problem with user callback id in callback.

Sep   2 2015
- srvdbase.c: added env variable TINE_SEND_BUFFER_SIZE and include in initSockBufferSizeFromEnv()
- srvip.c, iplib.c: make sure initSockBufferSizeFromEnv() is called early enough in server
  initialization to have an effect on the udp server socket.
  fixed copy/paste error in sendIpGlobal() with POLLIN -> POLLOUT
- srvdbase.c: build id now 5171

Sep   1 2015
- tbufsrv.c, tbufsrv.h: introduce pushBufferedDataEx() in order to be able to pass the
  data timestamp, system stamp, and user stamp.
- pytine34.cpp: make use of pushBufferedDataEx() and expand the input tuple/keyword for
  pushdata()
- srvip.c: fixed a warning
- prolog.h: #define NEED_POLL for VXWORKS (and others)

Aug  31 2015
- iplib.c, srvip.c, syslib.c, ttycmd.c: use sndMutex to protect all socket sending operations.
- server.c: fix a long-standing problem with contract synchronization (probably stopped working
  when all time stamps were msecs).
- pytine34.cpp: some null-pointer checking + remove the legacy routines for once and for all.

Aug  28 2015
- server.c, dbtools.c:  trap 'standalone' regarding time synchronization, cycle triggers, and
  other central services.
- clnip.c, iplib.c, srvip.c, syslib.c, srvip.h: move from select() to poll() and use a poll()
  wrapper for the OSes that need it.

Aug  26 2015
- client.c, srvcore.h: fixed problem applying a notification tolerance for
  MCA elements and other dependent links.
- srvdbase.c: build id now 5169
- tinedefs.h: version 4.5.6 declared

Aug  25 2015
- pytine34.cpp: fixed problem getting property information (missing 'BEGIN_THREADS').
  added NotificationTolerance.
- tbufsrv.c: allow empty device name (defaults to device #0).
- iplib.c: begin prototype for poll() (surrounded by #ifdef NEED_POLLFD)

Aug  24 2015
- toolkit.c: take a better cut at handling CF_STRING within PutValuesAsAny().
- srvdbase.c: build id now 5168
- pytine34.cpp: add some exceptions.

Aug  21 2015
- dblib.c, dbtools.h: introduce routine: IgnoreFecXmlDatabase().
- tbufsrv.c: use the new IgnoreFecXmlDatabase() routine (AttachServer() with arguments
  must use the .csv db set).
- listener.c: fixed warning.

Aug  20 2015
- srvquery.c, srvcore.h: trap a NULL-pointer eqm fcn in cases where initialization has not yet assigned
  it and e.g. save/restore kicks in.
- syslib.c: fixed problem 'resetting' mutexes on UNIX builds.
- toolkit.c: fixed offset problem dealing with MCA element of CF_STRINGs in PutValuesFromAny().
- srvdbase.c: build id now 5167
- pytine34.cpp: fixed server initialization problem (when attaching using .csv db files)
  set connection table capacity to 5000.

Aug  19 2015
- pytine34.cpp: fixed parsing bug concerning 'subsystem' in the register_server() method.

Aug  18 2015
- srvdbase.c, srvcore.h: add routine ResolveSystemAlias().
- srvdbase.c: build id now 5166

Aug  14 2015
- pytine34.cpp: add 'subsystem' to the register_server() method.

Aug  13 2015
- pytine34.cpp: fixed bug concerning strings returning fewer characters than asked for.
- toolkit.c: make GetTargetPropertyInformation() use GetSystemPropertyInformation().
- hstlib.c: fixed problem assigning an index from a device name for non-MCA histories
- srvdbase.c: build id now 516

July 25 2015
- server.c,syslib.c, hstlib.c, almlib.c, srvcore.h: introduce gServerCycleState variable and definitions
  and routine GetServerCycleState().
- srvdbase.c: build id now 5164

July 20 2015
- srvquery.c, srvip.h: new stock property SRVSCKERR (delivers 3 error counters)
- toolkit.c: make GetSystemPropertyInformation() use the already know information if a stock property is accessed.
- hstlib.c: fixed yet another 64-bit long term storage problem (after debugging).
- srvdbase.c: build id now 5163

July 15 2015
- hstlib.c: more 'int' vs. 'long' fixes, this time in locating records.
- srvdbase.c: build id now 5162

July  7 2015
- hstlib.c: removed the debugging baggage from July 3.
- client.c: fixed a notification problem with synchronous calls reusing a redirected link
- srvdbase.c: build id now 5161

July  3 2015
- hstlib.c, almlib.c, almlib.h, hstlib.h: fix some diagnostics and checking routines concerning
  disk space on 64-bit machines.
- hstlib.c: fixed one problem removing the correct files for long term files < 1 month when the
  month rolls over.
- srvdbase.c: build id now 5160

Jun  29 2015
- dbtools.c, dbtools.h: added new routine GetServerHostAddress().
- srvdbase.c: build id now 5159

Jun  25 2015
- tbufsrv.c: fixed problem flagging a 'callback' style handler as not busy.
- srvip.c: if no NET_ALLOWED in fec.xml ensure that you don't land in a 'no one is allowed' trap
- server.c, syslib.c, threader.h: introduce hSndMutex to protect possible concurrency in sendToPeer (VxWorks problem?)
- srvdbase.c: build id now 5158

Jun  24  2015
- syslib.c: add an #ifndef NO_THREAD_NAMES for compilers that can't.
- srvdbase.c: build id now 5157

JUn  22  2015
- pytine34.cpp: various bug fixes

Jun  17  2015
- client.c: check relinked structure field links when deciding on 'allowed common links'.
- srvdbase.c: build id now 5156

Jun  15  2015
- srvip.c:  return sck = 0 (and not -1) from setupTcpServerSocket() when an error occurs.
- srvdbase.c: build id now 5155

Jun   9  2015
- hstlib.c: make all the 'seeks' use 'long' variables (to combat the 2GB limit)
- srvdbase.c: build id now 5154

Jun   8  2015
- hstlib.c: fixed (?) a problem removing old files when depth in days is used and the month rolls over.
- client.c: explicitly set the link callback reference to NULL on entry re-use (this should have no effect).
- listener.c: return a timeout error on listener startup (i.e. no grace timeouts in this case)
- tbufsrv.c, tbufsrv.h: add RegisterServerCallbackEx() and an extended callback handler
  (taking a user-reference).
- srvdbase.c: build id now 5153

Jun   2  2015
- tbufsrv.c, tbufsrv.h: added RegisterServerCallbackEx() and logid so as to be able to pass
  a reference in a registered buffered property handler.

May  27  2015
- ttycmd.c: fixed the knucklehead bug about catching 'get time' independently of 'get timesync'
- srvdbase.c, hstlib.c: fixed warnings.
- srvdbase.c: build id now 5151

May  21  2015
- ttycmd.c: added 'get/set timesync' to turn off/on time synchronization.
  use strcmp() instead of strstr() for console 'get time'
  (and lop off the '\n' at the right spot)
- srvdbase.c: build id now 5150

May  19  2015
- listener.c: add CF_MDA to the listener.

May  18  2015
- syslib.c, tinetype.h: export routine AcquireAndAssignBitmap().
- srvdbase.c: build id now 5149

May  13  2015
- ttycmd.c, ttycmd.h: added exported routine SystemInterpretConsoleCommand()
- client.c: add 'is mca parent' to get connection() diagnostics
  don't suppress notification for MCA parent links
- srvdbase.c: build id now 5148

May  12  2015
- syslib.c: added a strupr inside GetTransferMode().

May   8  2015
- client.c: if a cycle trigger callback is registered and there is no cycler, fire the callback once with
  an error code.
- ttycmd.c: added some commands to the 'help' dump.
- srvdbase.c: build id now 5147

Apr  28  2015
- hstlib.c: fixed some issues with local histories LTS + depth in days + non-standard files
- srvip.c: simple refactoring + got rid of some unused global variables.
- srvdbase.c: build id now 5146
- tinedefs.h: declare release 4.5.5

Apr  25  2015
- server.c, syslib.c: 'time probe' tweaks.

Apr  24  2015
- ttycmd.c, server.c, client.c, syslib.c, tinetype.h: added 'time probe' and a set/get
  in the console commands.

Apr  23  2015
- server.c: fixed problem assembling 'gated' output
- hstlib.c: fixed problem with long term history in fewer days than 1 month.
- srvdbase.c: build id now 5145

Apr  17  2015
- server.c, syslib.c: fix minor warning on Solaris.

Apr  16  2015
- hstlib.c: fixed -Wall warning.

Apr  15  2015
- server.c: added environment variable 'TINE_USE_CYCLE_TRIGGER' to allow this setting via
  environment.
- hstlib.c, srvdbase.c, errors.h: return (at_limit|CE_SENDDATA) if the range of an NPOINTS
  call is outside the short-term depth and therre is no long term history.
- ttycmd.c, srvdbase.c: added console command to dump the relevant environment variable
  settings.
- srvdbase.c: build id now 5144

Apr  13  2015
- syslib.c: further tweaks concerning thread names on linux (check clib version).

Apr  10  2015
- hstlib.c: return 'already_assigned' in addHistoryItem if record exists.
- client.c: added some diagnostics.
- srvdbase.c: build id now 5143

Apr   8  2015
- prolog.h, server.c: fix name collision with 'root'.
- shmalloc.c, syslib.c, tine32.c, tcycler.c, threader.h: assign thread names to threads.
- srvquery.c: recognize ".ARCH@", etc. as meta properties.
- srvdbase.c: build id now 5142

Mar  19  2015
- client.c,syslib.c,threader.h: introduce hXferMutex (transfer mutex) to
  correctly handle the simultaneous receiving and re-subscribing to a contract
  issue dealt with in build id 5135 (Feb. 3).
  Allow 'useGlobalSYnchronization' to be set TRUE/FALSE 'after the fact'.
- dblib.c, dbtools.c: allow a local cache update to fix the FECNAME >16 char
  problem if it is encountered.
- srvquery.c: make DEVDESCRIPTION a multi-channel array property
- ttycmd.c: add 'get/set triggercycle' to turn on/off cycle number monitoring.
- srvdbase.c: build id now 5141

Mar  16  2015
- syslib.c: fixed copy-paste bug for FREE_BSD (MACOS) build.
- client.c: removed attempt at fixing a re-subscribe problem (how big a problem was this?) where
  'processData' was waiting forever for 'sendRequest' to finish (same thread caused deadlock) if
  same contract was both receiving and sending a request at the same time.
  Introduced in build id 5135, Feb. 3.
- srvdbase.c: build id now 5140

Mar  13  2015
- client.c: avoid a 'needsToNotify=FALSE' trap if a link queue exists.
- srvdbase.c: build id now 5139

Mar  12  2015
- server.c, srvcore.h: added Get/SetUseCycleTrigger() as an official means for turning 'off' the
Cycle Number acquisition.

Mar   8  2015
- dblib.c, srvdbase.c: some tweaks concerning csv Reading and memory.
- srvdbase.c: build id now 5138

Mar   6  2015
- server.c: protect doContract against crazy people dorking the dFormat and dTag fields in the 'dout' passed.
- repeater.c: apply the CA_MUTABLE flag inside the rpt eqm call!
- toolkit.c: introduced (non-documented variable _useCsvStringLiteral for use in 'tget' and 'tmonitor'
  so that certain variable dumps are not automatically surrounded by quotes.
- tget.c, tmonitor.c: more options tweaks.

Mar   5  2015
- clntools.c + related modules: improve output for exotic data types for certain calls.
- client.c: fix problem with globals acquisition + CF_DEFAULT + very large data buffer.

Mar   3  2015
- dblib.c, srvdbase.c: some better diagnostics when reading a csv file goes wrong.
- dbtools.c: fix address length problem in assigning GENS addresses.
  found and fixed the infamous >16 char fec name in cache file problem.
- errors.h, errlist.c: use 'header_not_found' in place of file_not_open.
- prolog.h, srvcore.h: some #NEED_xxxx defines to get past Daniel Franke's compiler.
- srvdbase.c: build id now 5137

Feb   7  2015
-srvip.h, syslib.c, iplib.c: more tweaking restructuring concerning STREAM mode.

Feb   6  2015
- srvdbase.c: fixed problem with save/restore of structure arrays.
- threader.h, syslib.c, srvip.h, client.c: refactoring concerning allowing transport mode STREAM
  to handle simultaneous monitoring clients synchronously.
- tinedefs.h: version now 4.5.4
- listener.c: tweaked the recognition of GLOBALS and best-guess formats.

Feb   4  2015
- client.c: tweaked the heartbeat check in checkConnections.

Feb   3  2015
- prolog.h: add an #if defined(NEED_TRUNC) in #definition of trunc for WIN32 (VS 2013 and beyond)
- almlib.c: minor tweaks concerning returning from _setAlarm().
- other modules: bug fixes concerning exotic use cases involving 1) TCP transfer on busy network
  and high transfer rates/large payloads 2) non-graceful client/server stops 3) multicast renewals
- srvdbase.c: build id now 5135

Jan  23  2015
- clnip.c, srvip.c, srvip.h: protect against the rare case when a server-side incoming TCP stream has 1 byte.
  keep build id and version (as we haven't officially released and deployed yet).

Jan  22  2015
- clnip.c, iplib.c: fixed a problem with the address family length for 'connect' calls for MAC.
  Also fixed a diagnostic for sendIP() failures.
- srvdbase.c: build id now 5134
- tinedefs.h: version now 4.5.3

Jan  21  2015
- srvdbase.c, srvcore.h: added specialty routine resetPropertyDeviceList().
  tweaked AssignDeviceListToProperty().
- tput.c, clntools.c: allow 'tput' (i.e. 'tsend') to send 'no data' (just a WRITE command on the property)

Jan  20  2015
- iplib.c, srvdbase.c: fixed a problem with the attachfec debug socket and VxWorks (or any other multithreaded server
  which has gRunTransportInSeparateThread = FALSE).
- srvdbase.c: build id now 5134

Jan  15  2015
-  iplib.c: diagnostic fix.  A legacy multicast group was displaying '239' in a 'get globals' dump.

Jan  12  2015
- dblib.c: in getColumnStr() cast char to BYTE prior to int cast, isspace() can sometimes go non-linear
  if the int input is < 0.

Jan   7  2015
- tcycler.c, tine32.c, syslib.c, threader.h, srvcore.h: added routine TineLoadedDynamically() and logic.
- srvdbase.c: build id now 5133

Jan   3  2015
- client.c: diagnostic tweak in dumpGlobals().

Jan   2  2015
- client.c, clnip.c, dbtools.c: add logic to re-assign a multicast group (client-side) for server
  specific multicasts, if the group changes (either thru an address change or rules change).

Dec  30  2014
- various modules: introduce new multicast scheme with option to use legacy or modern rules (server-side)
  and to distinguish legacy/modern rules for the mutlicast group on a host (client-side).
  Stick with 4.5.2 and build id 5132 as the code set from 19.12 has not yet been released.

Dec  21  2014
- dbtools.c, toolkit.c, srvdbase.c, syslib.c: introduce and use hSrvTblMutex for traversing the SrvTbl and FecTbl
  address lists.
- swaplib.c: make sure in GetStructFromTagEx() that 'key' begins with '/' if calling findstructEx().
- listener.c: fixed a potential deadlock problem (i.e. looked out problem).

Dec  19  2014
- dbtools.c, toolkit.c, srvdbase.c, syslib.c, server.c: introduce and use hEnsMutex and hTxMutex for explicit ENS calls
  and explicit 'trivial' synchronous calls.  This is perhaps necessary and might solve the mysterious MAC/OS XCOMM problem.
- tinedefs.h: version now 4.5.2
- srvdbase.c: build id now 5132

Dec  17  2014
- server.c: set ServerInitialized = FALSE in CloseServers() (as we now return early from SystemInit()
  if ServerInitialized == TRUE.
- srvdbase.c: build id now 5131

Dec  15  2014
- prolog.h: fix NEED_STRTOLL for VXWORKS (unless #define HAVE_STRTOLL)
- srvdbase.c: build id now 5130

Dec  11  2014
- ttycmd.c: fixed 'no new line' warning

Dec  10  2014
- srvip.c, srvip.h: fix problem with ACLs and 0.0.0.0.
- iplib.c, syslib.c, srvip.h: introduce some hand-shaking in freeing a TCP bucket while its thread might
  still be active.
- dbtools.c: #if !defined(VXWORKS) && !defined(NO_TINE_PIPE) around the check on myip in locate fec address.
- srvdbase.c: build id now 5129

Dec   8  2014
- server.c: bad idea with moving the SystemRunning flag. Introduced EquipmentModulesInitialized flag
  to take its place!
- dbtools.c: #ifndef VXWORKS around the check on myip in locate fec address.
- srvdbase.c: build id now 5127

Dec   5  2014
- server.c, toolkit.c, client.c: better handling of BITFIELD mappings and BITFIELD8
- srvdbase.c: build id now 5126

Nov  27  2014
- srvdbase.c, srvquery.c, tinetype.h:  add exported routine GetSystemVersionString().
- server.c: SystemRunning = TRUE at very end of 'LastMinuteInitialization'.
- srvdbase.c: build id now 5125

Nov  26  2014
- dbtools.c: put in a bit of mutex protection in GetAddressFromNameServer() in case 2 threads try to
  write to the same address area (they would never overwrite the memory, but MAC seems to have a problem).
- srvdbase.c: build id now 5124

Nov  25  2014
- fixed warnings.

Nov  24  2014
- tinedefs.h: change typedef of HWND for the non-windows guys to reflect what windows uses.
- srvdbase.c: build id now 5123

Nov  18  2014
- iplib.c: check on FD_SETSIZE in 'isInvalidSocket'.
- syslib.c: SystemInit() to return 0 immediately if already initialzed
- srvdbase.c:RegisterFecInformation to return 0 immediately if already registered with same name.
- srvdbase.c: build id now 5122

Nov  12  2014
- syslib.c, dblib.c, almlib.c, dbtools.h: added new alarm settings to XML config.
- client.c: tweaks to cycler trigger logic to reduce number of 'doomed attempts'.
  Trap non-existent globals early (e.g. looking for CYCLER on 'my context').
- server.c: utilize freeFecListMemory() if an xml config is used.

Nov  11  2014
- server.c: fixed exotic problem with fast scheduling + server restart + reconnecting clients
- client.c: callback with 'address_unknown' if a timeout occurs and fec name = FECSINK
- almlib.c, almlib.h, srvquery.c, srvdbase.c, syslib.c, ttycmd.c: allow dynamic setting via
  stock properties (ALMCOLLAPSE, ALMOSCILLATION) or command line for the alarm collapse window
  and alarm oscillation window.  Also: command line property for 'alarmsettings'.  And allow
  runtime setting of various alarm server variable thru 'almsettings.csv'.
- tinedefs.h: version 4.5.1
- srvdbase.c: build id now 5121

Oct  24  2014
- toolkit.c, srvdbase.c: fixed some issues with save/restore and CF_STRUCT used with a direct API call.
- syslib.c: fixed problem with relative vs. absolute time in mutex timed lock in unix.
- srvdbase.c: build id now 5120

Oct  18  2014
- clnip.c, client.c: trap single byte transfer for CM_CONNECT.
- client.c, ttycmd, srvip.h: add 'bad packets' diagnostics.
- srvdbase.c: build id now 5119

Oct   6  2014
- iplib.c, clnip.c, syslib.c: more diagnostics tweaks.

Oct   5  2014
- swaplib.c: ensure struct field is null terminated in STRUCTFORMAT query
- srvip.c, client.c, clnip.c: some diagnostics improvements when a connection goes down.
- srvdbase.c: build id now 5117

Oct   2  2014
- listener.c, listener.h: added a 'timeout counter' leniency for reporting timeouts (> 2)
  try to insure that sys stamp and usr stamp are set for the initial alsn call.

Sep  25  2014
- client.c: double check the proposed blacklist FecTbl entry before using it in NotityClient.
- srvdbase.c: build id now 5116

Sep  23  2014
- toolkit.c, toolkit.h: added 'options' parameter to SentEventTriggerEx (API BREAK!) so
  as to be able to provide EVNT_TRIGGER_USE_USERSTAMP.
- iplib.c: fixed a problem with getmyipaddr() (use the defacto gAfInet rather than AF_UNSPEC).
- srvdbase.c: build id now 5115

Sep  22  2014
- iplib.c, srvip.h: introduce exported routine GetMyIpAddress().
- srvdbase.c: build id now 5114

Sep  19  2014
- toolkit.c: fixed problem converting int64 to int32.
- server.c, srvdbase.c, almlib.c, almlib.h: backoff on contacting CAS on startup.
- client.c globals.c, globals.h: follow thru on assigning the system and user stamps from globals
- globals.c, tinetype.h: new API calls to get the system/user stamps from a pure globals link.
- listener.c: assign the system and user stamps in alsnExecLink() calls.
- srvdbase.c: build id now 5113

Sep  11  2014
- tinedefs.h: fixed a stray #define SINT64 problem (surfaced in VxWorks build)
- iplib.c: fixed another VxWorks prototyping problem.
- ttycmd.c, ttycmd.h, tine32.c, syslib.c: fixed problem freeing register user commands during a
  'SRVRESET' (i.e. reinit()).
  In the 'quit' command: set the 'isTerminating' flag prior to ExitEQPModules.
- server.c: fix a problem re-acquiring the stock property mutex set during a reinit().
- srvdbase.c: build id now 5112

Sep   9  2014
- server.c, syslib.c: allow _SystemReinit() to call a registered cleanup routine and to
  wait a registered 'idleTImeInSeconds' before re-initializing.
  also allow 'SRVRESET' to take an idle time as input.
- tinetype.h: export new routine SetSystemReinitIdleTime()
- srvdbase.c: build id now 5111

Sep   8  2014
- almlib.c: fixed problem with setting the alarm oscillation window when using AppendAlarmInfoTable()
- srvquery.c, hstlib.c, hstlib.h: allow targeting the 'user data stamp' in .HIST or .HIST@
  calls.
- server.c, syslib.c: allow passing a user data stamp in Stock or meta property calls
  (specifically: .HIST@).
- srvdbase.c: build id now 5110

Sep   6  2014
- client.c: force a reset of the address resolution flag if 'stuck' longer than 3 seconds.
- toolkit.h: documentation fix.
- srvdbase.c: build id now 5108

Sep   3  2014
- srvdbase.c, client.c: allow SetSystemSubscriptionRenewalLength() to set and update current
  contracts to smaller lengths and check this at the client.
- srvdbase.c: build id now 5107

Sep   2  2014
- srvquery.c: fix problem with stock property SRVCOMMANDS (ipv6 address vs. ipv4 address)
- srvdbase.c: build id now 5106

Sep   1  2014
- client.c: fixed problem copying data while traversing a queue.
- srvdbase.c: build id now 5105

Aug  31  2014
- client.c,srvcore.h: fixed problem notifying a datachange single link element when server
  goes down and comes back.
- srvdbase.c: build id now 5104

Aug  27  2014
- client.c: tweaked the 'scanStart' logic to try to get thru the connection table faster.
- srvdbase.c: add final check against bad port offset prior to sending to ENS
- srvdbase.c: build id now 5103

Aug  26  2014
- srvdbase.c: check that registered port offset < 55500 and exit(1) if invalid
- srvdbase.c: build id now 5102

Aug  25  2014
- iplib.c: fixed partially unitialized stack problem in 'hints' for MACOS
- srvdbase.c: build id now 5101

Aug  22  2014
- clntools.c: fixed the loopback issue

Aug  21  2014
- syslib.c, threader.h: added hMcaLinkMutex
- client.c: make use of hMcaLinkMutex while traversing the McaEntryTable.
- client.c, srvcore.h: Add a 2 second delay before closing an MCA parent link.
- dblib.c: don't try ENS address from DNS if stand-alone
- iplib.c, dbtools.c, srvip.h: allow a possible ipv6 loopback address
- srvdbase.c: build id now 5100

Aug   5  2014
- client.c: fixed (again) that problem with MCA re-linking following a timeout
  (just explicitly set the notifyPending flag if not set when an update comes in).
- srvdbase.c: build id now 5099

Aug   4  2014
- srvquery.c: fixed problem with 'isAbsolutePath' concerning SRVLOGFILES.
- client.c: fixed problem clearing alarms on a DOOCS server (if 'isCas' then always use user = FECNAME).
- srvdbase.c: build id now 5098

Aug   1  2014
- client.c: fixed a (century old) bug redirecting a tagged structure (assigned data length was wrong).
- srvdbase.c: build id now 5097

July 30  2014
- srvdbase.c, almlib.h: added variable and setter for gIgnoreRegionRules (for use in GENS).
- srvdbase.c: build id now 5096

July 29  2014
- srvdbase,c: some tweaks on the multiple device property redirection consistency checks

July 28  2014
- client.c: helpful tweaks concerning MCA re-linking following a timeout
  (at least Jaka's problem went away).
- srvdbase.c, srvcore.h: added routine GetSystemAlias().
  allow linked list of redirections for multiple devices per property
  added some consistency checking in property redirections for multiple devices.
- srvdbase.c: build id now 5095

July 25  2014
- dbtools.c: fixed problem recognizing LCL transport (shared mem. or pipe).
- srvdbase.c: build id now 5093

July 24  2014
- iplib.c, dbtools.c:  fixed possible warning assigning ss_family from an int.
- client.c: use 64-char string in GetLastLinkError() (96 can cause problems with existing code).

July 23  2014
- iplib.c: fixed problem applying multicast mast on the server side.
  (problem crept in on changes recorded on Jan 9  2014, i.e. the mcast mask list with patterns).
- client.c: allow GetLastLinkError() to return up to 96 chars.  Also add new routines
  FillCompletionStatusString() and FillCompletionStatusStringFromCallbackId().
- srvdbase.c: protect against 'listsize < 1' in some calls.
- srvdbase.c: build id now 5092

July 22  2014
- prolog.h, toolkit.c: added 'strtoll' routine for those who need it (XP, VxWorks).
- iplib.c: more dancing around WindRiver absurdities
- srvdbase.c: build id now 5091

July 21  2014
- toolkit.c, prolog.h: fixed formatting problem and 'fall-thru' problem concerning CF_INT64 to string
  and save/restore.
- server.c: fixed diagnostic problem with consistency check on ncontracts per client.
- client.c, dbtools.c: some logging tweaks
- hstlib.c: fixed problem with unitialized variable.
- srvdbase.c: build id now 5089

July 17  2014
- iplib.c, dblib.c, srvip.h: fixed various problems with build on MAC and on VxWorks.
- srvdbase.c: build id now 5088

July 16  2014
- iplib.c, syslib.c, clnip.c, srvip.c, srvip.h: fixed problem supplying
  'len' of 'struct sockaddr_in' in SOLARIS build.
- srvdbase.c: build id now 5087

July 15  2014
- iplib.c, srvip.h: added and used routine isInvalidIpV6Addr().
- almlib.c, dbtools.c: finally found and removed the bit about
  'communicating with a CASFEC with UDP' from the debug output (and make use
  of static CAS fec info.
- srvdbase.c: build id now 5086

July  9  2014
- numerous routines: step 2 in IPv6 readiness (ipv4 tested with new API).
- toolkit.c: GetValuesAsAny() can accept CF_STRUCT (if dTag matches appropriate registered structure).
  Don't make Save/Retore directories on a read (e.g. from stock props).
- syslib.c: allow isSystemContextDecoration() to begin with a '.' or not
- client.c: some performance tweaks concerning CM_WAIT.
- server.c: some performance tweaks concerning latching onto expired contract.
- tinetype.h: correct some spelling errors in documentation
- tinedefs.h:  version 4.5.0 declared
- srvdbase.c: build id 5085

Jun   6  2014
- numerous routines: step 1 in IPv6 readiness (new FecTbl structure implemented)
- tinedefs.h:  version 4.4.3 declared
- srvdbase.c: build id 5084

May  28  2014
- srvquery.c, srvdbase.c, syslib.c, server.c, toolkit.c, tinetype.h:
  added 'gLogfileAllowScan' + associated API calls, env variables +
  3 levels of permissions and apply to the SRVLOGFILE stock property
  family. (default: only handle files in FEC_HOME/FEC_LOG directories).
- srvdbase.c: tweaks to unix group membership recognition
- srvdbase.c: build id now 5083

May  27  2014
- srvdbase.c, dblib.c: add routine getKnownENSes() and call it within
  FindNameServerOnNetwork() in order to find a list.
- server.c: check on group members once per hour if groups are used in ACLs
- srvdbase.c: build id now 5082

May  26  2014
- hstlib.c: added env variable 'TINE_HISTORY_DEACTIVATE_ON_ERROR' to allow setting of
  gHstDeactivateOnError in lieu of API call.

May  21  2014
- client.c: fixed warning
- listener.c, listener.h: more 'idle time' adjustments based on payload size.

May  15  2014
- tinedefs.h: moved macro #defines for SINT64, UINT64 to tinedefs.h (as tinetype.h uses them,
  and the default #define in prolog.h happens too late in the header sequence.)

May  14  2014
- client.c: added some diagnostic output to 'connectionStats'.
  fixed problem toggling the ENSes when initial call is an ENS query call.

May  13  2014
- client.c, srvcore.h, tinedefs.h : re-assign macro CA_SYNCNOTIFY (wasn't used) to CA_FIXTIMESTAMP.
  new method PutLnkTimeStamp(), new macros RB_USE_TIMESTAMP, RB_USE_ERRORVALUE + some refactoring
  (can now signal the use of local timestamp if remote timestamp cannot be trusted: recent doocs2tine error)
- toolkit.c, toolkit.h, srvdbase.c: allow save/restore of arrays of most data types.
- srvdbase.c: upped the build id to 5081
- tinedefs.h: version now 4.4.2

May   9  2014
- toolkit.c, toolkit.h, srvdbase.c: allow save/restore of SPECTRUM and IMAGE properties
- srvdbase.c: upped the build id to 5080

May   8  2014
- toolkit.c, toolkit.h, srvdbase.c: allow save/restore of STRUCT properties
- client.c: fix possible problem assigning contract sizes on redirected links if structure encountered.
- srvdbase.c: upped the build id to 5079

May   2  2014
- client.c: add a static scanStart in prepSubRequest when traversing the connection table
  (with a large number of links + many which are timing out it was possible to virtually never get
   to the end of the list).
  Apply inetProtocol = TCP to parallel connected links
- srvdbase.c: upped the build id to 5078

May   1  2014
- hstlib.c:  fixed some problems with standard files and depth in days

Apr  29  2014
- almlib.c, almlib.h: add ALM_APPLYNAME logic to use the context/server as device name for an alarm
- server.c: add routines ServerIsInitialized() and FecIsInitialized().
- client.c: add routine 'ResubmitDataLink()'
- srvdbase.c: build id now 5077

Apr  25  2014
- srvdbase.c, srvquery.c: set 'allow remote reset management' to TRUE if an admins list is found.
  require 'assertIsAdministrator() = TRUE' for remote management stock properties
- srvdbase.c: build id now 5075

Apr  23  2014
- dblib,c, dbtools.h, hstlib.c, hstlib.h: added logic to handle long depth in month and days
- srvdbase.c: improved dump of history info at the console
- server.c: remove penalty for non-graceful close + client restart with DATACHANGE links
- srvdbase.c: build id now 5074

Apr   4  2014
- server.c, srvcore.h: added save/restore last restored file time +
  logic to din->dTimeStamp @ save/restore time.
- toolkit.c, toolkit.h: removed unix warning, vxworks problem.

Mar  31  2014
- toolkit.c, srvdbase.c, srvquery.c, server.c: add save/restore for device-specific
  stock properties.
- srvquery.c: add 'DEVREGION' stock property.
- client.c: diagnostic output tweaks
- srvdbase.c: build id 5072

Mar  28  2014
- toolkit.c: fixed some string mapping problems with USTRING
- ttycmd.c: fixed a display problem with line termination
- srvdbase.c: build id 5071

Mar  18  2014
- dblib.c, dbtools.h: export routine GetCsvDatabaseSize().

Mar  17  2014
- server.c: fixed problem with counting gated array entries
- tindefs.h, srvdbase.c: declare release 4.4.1, build id 5070

Mar  15  2014
- client.c: fix race-condition with notification during attachLink with WAIT.

Mar  14  2014
- server.c: fix gating problem with .ONLINE and MCAs
- listener: double protect against unlikely mutex problem

Mar  13  2014
- listener.c: fix problem with asyn string array handling.

Mar  12  2014
- listener.c: fix problem with string array completion length.
- client.c: fix problem with payload copy in copyDpdData()
- server.c, srvdbase.c, srvcore.h: refactored applyRegionRules()
- srvdbase.c: build id 5069

Mar  11  2014
- server.c: don't allow wildcard WRITE calls

Mar  10  2014
- server.c: trap on wildcard call in 'GetDefaultFormatAndSize()'
- hstlib.c, swaplib.c: fixed some warnings.
- srvdbase.c: upped build id to 5068

Feb  28  2014
- srvdbase.c: fixed possible initialization bug applying device regions

Feb  27  2014
- server.c: fixed problem checking for illegal property when there's a query
  function.
- srvdbase.c: fixed warning, upped build id to 5067

Feb  18  2014
- client.c:

Feb  17  2014
- tcycler.c: fixed some cleanup issues on linux
- various routines: implemented alarm regions (first crack)

Feb   7  2014
- hstlib.c: fixed some problems with data summary storage logic.
- srvdbase.c: build id now 5066

Feb   5  2014
- listener.c, client.c, syslib.c threader.h: added a hDataLinkMutex and
  routines, LinkDataMemcpy(), Un/LockLinkData() to protect bound data buffer
  to use in prepIncomingData() and getDataFromListener.
- errors.h, errlst.h:  refactor 'not_properly' to 'no_data_in_range'
- hstlib.c, hstlib.h: considerable refactoring + allow 'data summary' over
  an interval.
- srvquery.c: meta properties ".RBAVE", ".RBMAX", ".RBMIN", ".RBSUMMARY".
- srvdbase.c: build id now 5065

Jan  27  2014
- srvdbase.c: fixed problem acquiring default property settings when array
  restore file is missing: if the eqm does not yet have an eqm function handler
  then return not_initialized.

Jan  25  2014
- toolkit.c, srvdbase.c, srvcore.h: acquire default property settings when
  an array restore file is missing.

Jan  24  2014
- cmdcln.c: (for attachfec) fix seg fault when /context/server does not exist.
- syslib.c: explicity initialize fecDbPath to "".
- toolkit.c: fix problem when logging a missing SaveRestore array file.
- srvdbase.c: build id 5062

Jan  23  2014
- srvdbase.c: fix uninitialized stack variable in ExecLocalLink()
- syslib.c, srvdbase.c, client.c: some tweaking to get rid of vxworks warnings

Jan  22  2014
- syslib.c: prevent scheduling if CA_LAST is set.
- iplib.c: fix problem recognizing the new dcsSckPort as a multicast port.
- clnip.c, client.c, srvip.h: fixed problem joining the correct
  mcast group for the doocs event number.
- srvdbase.c: fixed 64-bit warnings, upped build id to 5061

Jan  21  2014
- srvdbase.c, dbtools.h: introduced wc_stricmp() for wildcard string compare
- iplib.c: fixed VxWorks problem (missing routine).

Jan  20  2014
- toolkit.c, srvdbase.c, srvcore.h: fixed problem with save/restore + array
  properties with initial save of a single device. (also fixed spelling error)
- hstlib.c: backed off on logging certain diagnostics with 'standard files'
  fixed warning on VxWorks.
- dblib.c: check tineens1,2,3 in DNS (as well as tineens)

Jan  15  2014
- srvquery.c: fixed format problem with new stock property 'STRUCTURES'

Jan  14  2014
- srvquery.c: added stock property ENSADDR
- dblib.c: tweaks to ENS address acquisition logic: now also look for
  'tineenssecondary' in the DNS.
- clnip.c, client.c: some refactoring to get the new doocs event acq
  code to work in SMALL_TINE_LIB compiles.
- server.c, srvdbase.c, srvcore.h, prolog.h: make 'nDataOutBuffers' a
  variable (and NUM_DEFAULT_DATAOUT_BUFFERS a macro #define) and add routines
  Get/SetNumberDataOutputBuffers()

Jan  12  2014
- client.c: ensure CM_CANCEL if was CM_SINGLE inside of NotifyClient.
- tinetype.h: dox for GetContractDataReference() routines.
- srvdbase.c: export new routines RegisteredPropertyIsWritable(), GetExportListItem()
- tinedefs.h: go ahead and up the version to 4.4.0 (based on new 'doocs cycler' abilities)

Jan  10  2014
- dblib.c: fix vxworks compile problem
- srvcore.h, srvdbase.c: introduced prpDataRef pointer for possible assignment
  during 'not_ready' management.  Associated GetContractDataReference() call
  (allows persistence over multiple calls of a contract).

Jan   9  2014
- numerous modules:
  New Stock properties "SRVBASELINE", "STRUCTURES".
  New API call ResetServerBaseline().
  Console commands to get registered structures, mcast mask lists.
  Include specific code to recv a doocs daq event number when 'CYCLER' has the eqm name
  'DCSEQM'.
  allow a list of mcast mask entries (csv file allows column 'PATTERN')
  API call to GetMCastMask() now takes an argument (API break which shouldn't affect anyone).
  MCast Mask and GCast Mask are now equivalent.
  Protect client data by discarding any 'incoming data' if no link queue and is inside callback.
  If a property alias refers to an already registered property then don't put a double entry in
  the property query results.
- tinedefs.h: some refactoring to move all prototypes outside the 'decorated constants' area.
  macro synonym CA_MCAST for CA_NETWORK
  upped revision to 4.3.13
- srvdbase.c: build id = 5059
- listener.c: enforce CM_SYNCNOTIFY if data type = CF_IMAGE.

Dec  27  2013
- toolkit.c: cosmetic changes.
- tbufsrv.c: tweaks concerning SetBufferedDataSize() (only allow for SPECTRUM arrays).

Dec  19  2013
- tbufsrv.c,.h: tweaks concerning save/restore and the new SetBufferedDataSize().

Dec  18  2013
- syslib.c: avoid a strncpy if source = dest (MAC compiler issue).
- tbufsrv.c,.h: add routine 'SetBufferedDataSize' to fix a ceiling to the dout.dArrayLength used.
  let access & CA_SAVERESTORE fall thru inside of bufsrveqm.
  introduce a 'needToNotify' field which will attempt to apply the restore conditions once
  a property notifier is attached.
  (issues: run thru the entire known device list, property callback doesn't seem to work?)
- srvdbase.c: upped build id to 5058

Dec  12  2013
- ezclient.c: several bug fixes.
- listener.c,.h: some compile switch refactoring.
- tbufsrv.c: set the data stamp and time stamp properly !
- swaplib.c,.h: added 'structIsBlittable' routine for use in listeners.
- toolkit.c: make sure tmpWorkArea is allocated/assigned if certain mapping calls are
  called from a pure client.
- client.c: fixed problem with setting data stamps with a coerced async call.
- srvdbase.c: upped the revision to 5057
- repeater.c: introduce env variable TINE_REPEATER -> if set to SYNCHRONOUS sets
  isSyncRepeater to TRUE.

Dec   2  2013
- listener.c: refactored the listener table mutex logic a bit.

Nov  18  2013
- client.c: fixed problem recognizing MDA input data in contract comparisons.
- srvdbase.c: upped build id to 5052
- listener.c: a #define fix for PTHREAD_MUTEX_RECURSIVE

Nov  15  2013
- tinetype.h, almlib.h, hstlib.h: doxygen tweaks
  added convenience typedef USPECTRUM (with pointer to float array)
- listener.c: another tweak concerning mutex

Nov  14  2013
- numerous modules: added filter links to local alarm watches and local history
  subsystems.
- client.c: pass along the acquired CF_DEFAULT info from a globals link masquerading
  as a link table link.
- srvdbase.c: upped revision to 4.3.12
- listener.c: added a recursive mutex for the posix guys

Nov  13  2013
- swaplib.h: include an 'extern struct structFormat *MDAHeaderStruct'
- syslib.c, tinetypes.h: add funtion isNumberFormat()
- client.c: fixed possible buffer overwrite problem in 'GetLinkName()'

Nov  11  2013
- server.c, iplib.c: fixed some -Wall warnings in non-mt builds.
- listener.c, tbufsrv.c: fixed some -Wall warnings

Nov  10  2013
- dbtools.c: fixed truncation problem in writing address 'cache' files.
- srvdbase.c: upped build id to 5051

Nov   7  2013
- server.c: fixed problem accepting 'server_redirection' from an equipment module.
- srvdbase.c: upped build id to 5050
- listener.c: fixed some problems with globals

Oct  24  2013
- hstlib.c: some more logging.
- prolog.h: some macro #defines for WIN32 (bzero, etc.)
- srvdbase.c: build id 5049

Sep  27  2013
- hstlib.c, hstlib.h, dblib.c: log problems creating or writing to designated
  HISTORY_HOME directory.

Sep  24  2013
- numerous modules: added multi-dimensional array types (CF_MDA) and supporting logic.
  added formats CF_STRUCT, CF_SPECTRUM, CF_ASPECTRUM to getValuesAsString().
  added method GetStructureAsString().
  fixed problems with complex structures embedding arrays of CF_STRING and CF_ASPECTRUM.
- srvdbase.c: build id 5048
- tinedefs.h: upped version to 4.3.11

Aug  21  2013
- almlib.c: debug diagnostic tweaks: tineDebug -> almdbg
- srvdbase.c: build id 5044

Aug   6  2013
- client.c: correct a typo in documentation
- swaplib.c: debug output format tweak.

July 19  2013
- numerous modules: some windows warnings removed (post Daniel Franke gnu compiler on windows).
  some more local histories of IMAGE type irregularities fixed.
  refactoring to never disturb a contracts 'EqmSizeOut' field.  introduce 'concmp()' to decide
  if contracts are equal (was a memcmp).
  transport improvements so that TCP and STREAM clients on different media do not disturb each
  other.
  namcmp -> csvnamcmp and moved to dbtools.c.
  format problems reported by Arthur fixed.
- toolkit.c: SendEventTriggerEx() introduced.
- srvdbase.c: upped build id to 5043

July  4  2013
-> syslib.c: add routine MakeSystemDataStamp()

July  3  2013
- srvip.c, clnip.c, iplib.c: some assignment error fixed for certain buffer space parameters.
  new diagnostics: 'get sockets'
- hstlib.c, hstlib.h: fixed problems getting image histories from short term storage.
  allow a range specification to give start and stop system data stamps.
- several routines: refactoring to allow systamp to be assigned for stock and meta-properties.
  other minor refactoring.
- srvdbase.c: upped the build id to 5041
- tinedefs.h: upped the revision to 4.3.10

June 21  2013
- server.c: fixed bug which was stopping all transfers after the first encountered TCP
  delivery.
- srvdbase.c: cosmetic improvement to 'dumpAdministrators()'.
  uppded the build id to 5039

June 19  2013
- syslib.c: add env variable FEC_DIE_INUSE.
- srvdbase.c: upped build id to 5038
- repeater.c: add 1000 to return codes.

June 18  2013
- tine32.c: add routine LaunchRuntimeDebugWindow() (to replace variants in tbufsrv.c and
  Matlab tine_debug.cc).

June 16  2013
- hstlib.c: don't put histories in manifiest if long depth < 1

June 14  2013
- hstlib.c, hstlib.h: added history home manifest + scans and warnings if conflict
  detected.
- srvquery.c: add build id to tail of stock property SRVVERSION.
- srvdbase.c: corrrect 10 minutes vs. 5 minutes problem. add retries if stand-alone
  add self to cache file doesn't succeed.
  add Directory info to dumpSettings().
  upped build id to 5037
- tinedefs.h: upped revision to 4.3.9

June  7  2013
- toolkit.c: fixed problem updating local save-restore buffer for
  save-restore properties when the SavePropertyValues() API is explicitly
  called with a different buffer.
- srvdbase.c: upped build id to 5036

June  5  2013
- syslib.c: fixed the unix cover routines 'strnicmp' and 'stricmp' to
  return 'string1' - 'string2'.

JUne  4  2013
- dblib.c, dblib.h, srvdbase.c: better logging and backoff logic concerning
  toggleNameServer.

June  3  2013
- hstlib.c, hstlib.h: added logic to try to recover from a failure to rotate a
  'standard' local history file.
- srvdbase.c: upped build id to 5034

May  30  2013
- toolkit.c: fixed problem with recent support of CF_CHAR mapping within
  PutValuesFromByteEx().  Also fixed string length problem in PutValuesFromString().
- srvdbase.c: upped build id to 5033

May  29  2013
- tbufsrv.c: added a diagnostic for registered property 'synonyms'.

May  28  2013
- tbufsrv.c: fixed timestamp sequence problem in new pushHistoryData() routine.
- srvip.c:  changed error code from tcp_socket_error to udp_socket error in relevant routine.

May  23  2013
- hstlib.c: fixed initial file name assignment in local history initialization.
- srvdbase.c: upped build id to 5032

May  16  2013
- clnip.c: tweak on sockopt len passed in UNIX.

May  15  2013
- srvquery.c: respect the #define FD_RDONLY switch regarding manifest stock
  properties (VxWorks)
  change macro switch DOOCS to DOOCSSVR
- client.c, iplib.c, clnip.c, server.c, srvdbase.c, srvip.h, srvcore.h:
  refactored the 'tcp burst limit' logic a bit: replace the gUseTcpBurstLimit
  boolean flag with a gTcpBurstLimit variable.
  new routines SystemAssignBufferSpaceEx() takes separate cln and srv socket
  settings. SystemAssignUdpSendBufferSpace() explicitly sets UDP send buffer
  sizes.
  fixed the usec part in GetGlobalsTimeStamp()
- srvdbase.c: upped build id to 5031

May  14  2013
- iplib.c: more retries on select() (write sets) for Multithreaded TCP send
- server.c: added a gUseTcpBurstLimit flag.
- srvquery.c: introduced #ifdef DOOCS around SYS_MASK
- srvdbase.c: upped revision to 5030

May  13  2013
- listener.c: fixed problem introduced with refactoring globals MSEC to USEC.

May  12  2013
- swaplib.c, server.c, client.c, globals.h: use the 'reserved' field in the
  globals header to carry usecs fraction of milliseconds (kluge until 5.0)
- srvdbase.c: upped build id to 5029
- tinedefs.h: upped version to 4.3.8

May  10  2013
- toolkit.c: fixed bug in format mapping CF_CHAR within PutValuesFromByteEx().
  Allow CF_CHAR to map within GetValuesAsByte().
- server.c: logic tweak to always handle TCP transfers as a dedicated
  delivery independent of the UDP burst limit/cycle delay settings.
- hstlib.c, hstlib.h, server.c: let duly registered TINE local history records
  always be read via the TINE meta property .HIST (no overloads allowed).
- srvdbases.c: upped build id to 5028
- tbufsrv.c: in pushHistoryData() allow cronologically ascending (prpSiz > 0)
  or descending (prpSiz < 0) order in the given array elements.

May   6  2013
- srvcore.h, srvquery.c, server.c: add the client port to stock property
  'SRVLASTACCESS'
- srvdbase.c: upped the build id to 5027

May   3  2013
- srvcore.h: streamline the PrpDbaItem structure.
- srvdbase.c: protect against multiple entries in the deadband access linked list.
- srvquery.c: fixed diagnostic mismatch with send and recv buffer information.

Apr  26  2013
- client.c, srvcore.h: finished CA_FORCEOUTPUT logic. Coercion takes place
  on any format or data length.
- srvdbase.c, server.c, dblib.c: added property deadband access logic.
  RegisterPropertyAccessDeadband() and csv column, xml tag can introduce a property
  access deadband which guarantees the assigned deadband for synchronous property
  access (access as given).
- srvquery.c: Stock properties "MANIFEST", "MANIFESTPATH" introduced.
- ttycmd.c: commands 'get relinks', get deadbands' introduced.
- tinedefs.h: upped version to 4.3.7, build to 5026

Apr   8  2013
- srvip.c: fixed a really stupid warning coming from the compiler used in doocs
  builds.
- srvquery.c: allow 'selftest.csv' and 'selftest.xml' as possible self test files.
- prolog.h: moved macros for SINT64 etc. here.
- srvdbase.c: upped build id to 5025

Apr   4  2013
- several files: make sure micro seconds are passed in the data time
  stamp from server to client.  N.B. The globals header still carries
  milliseconds!
- fix some warnings
- srvdbase.c: upped build id to 5024

Apr   3  2013
- syslib.c: this time actually call 'getAdmins' somewhere.
- srvdbase.c: upped build id to 5023

Apr   2  2013
- errors.h, errlst.c: changed 'invalid_datasize' to 'invalid_datarequest'
  for contract coercion.
- tinedefs.h : added CA_FORCEOUTPUT for contract coercion
- tinetine.h, server.c, srvdbase.c, client.c: added initial logic for contract
  coercion based on registered property data length and type.
- ttycmd.c, server.c: protect against vxworks type timeset offsets of 40 years
  or so.  Added a get/set 'offset' to set and get the current time offset.

Mar  28  2013
- dblib.c: only 1 log entry for for setting network address resolution.
- client.c: fixed some problems applying msec timestamp to globals
  added GetGlobalsTimeStampFromCallbackId().
  fixed problem with multiple globals links.
- srvdbase.c, ttycmd.c, srvquery.c: added the 'admins' list routines
  to the library with associated stock properties and tty commands.
- errors.h, errlst.c: added error code 'invalid_datasize' for use in
  contract coercion.
- tinedefs.h: upped version to 4.3.6, build to 5022

Mar  14  2013
- almlib.c: don't set a alarm if device is offline.
- srvdbase.c: upped build id to 5021

Mar  13  2013
- client.c: fixed problem calling callback from an attach link of a GLOBAL
  when a link timeout is detected.
- hstlib.c: check whether shortDepth > 0 prior to allocation local history buffers.
  also some logging diagnostics if depth <= 0 and no redirection.
- almlib.c: minor tweaks to ensure that <p>.HIST shows up in meta properties list if
  local history is redirected (shortDepth < 0).
- srvdbase.c: upped build id to 5020

Mar  12  2013
- client.c: set the status string if status set to data_size_mismatch.

Mar  10  2013
- client.c: don't set/remove link error alarms if no eqm initialized.

Mar   8  2013
- bufsrv.c: note and assign system stamp on a push
- almlib.c: minor refactoring + only log a remove alarm error if eqm is initialized.
- client.c: only set link error alarms if eqm is initialized.
- srvdbase.c: fixed possible egu parsing issues
  upped build id to 5019

Mar   4  2013
- srvdbase.c, globals.h, client.c: added logic and routine setNetGlobalEx()
  to send globals with context information
  (if keyword /context/keyword then peal and deal).
  upped build to 5018
- tinedefs.h: upped version to 4.3.5

Feb  19  2013
- svrdbase.c: fixed diagnostic logging bug. upped build id to 5017
Feb  12  2013
- client.c: some diagnostic tweaks (more globals info)
- srvdbase.c: upped  build to 5016

Feb   7  2013
- syslib.c, tinetype.h: add routine srvlog() to allow a free choice log file
  name.
- srvdbase.c: upped build to 5015

Feb   5  2013
- dbtools.c: assign link_blacklisted when async ENS requests return non_existent.
- client.c, srvdbase: expand 'get histories' output.
  upped build id to 5014

Feb   4  2013
- srvdbase.c: fixed windows 64-bit warning

Feb   1  2013
- client.c: work-around in recovering from missing cycler which re-appears on a
  VxWorks machine without UTC synchronization (the old Jan 1 1970 problem).

Jan  30  2013
- ttycmd.c, srvdbase.c: tweaked debug output to display date/time as a prefix to
  debug logging and messages.
- client.c: yet further attempts to get the mcast group 'rejoin' to work when the
  cycler goes down and comes back.
- srvdbase.c: upped the build id to 5013

Jan  29  2013
- client.c: fixed problem with repeated sync calls to GLOBALS using CF_DEFAULT
  (a doocs use-case).
- srvdbase.c:  upped the build id to 5012

Jan  28  2013
- client.c: fixed problem remapping to CM_RECEIVE.
  zero out the multicast group when detaching following timeouts
- toolkit: add precision to save-restore file for format = CF_DOUBLE
- srvdbase.c: upped build id to 5011

Jan  25  2013
- srvdbase.c: fixed typo in MACOS build.

Jan  23  2013
- listener.c: fixed an 'isGlobals' problem.
- srvdbase.c, toolkit.c, toolkit.h: fixed a problem mapping strings in globals calls.
  add routines to get globals data type and length.
  upped build id to 5010

Jan  15  2013
- client.c: improved logic to reacquire multicast groups when globals go down.
  (Also periodically detach and re-attach to the multicast group if long term down).
  Fixed a warning.
  allow globals links to use CF_DEFAULT + add routines GetGlobalDataType() etc.
- srvdbase.c: fixed a problem in windows in finding property and device specific ACL files
  when there is no FEC_HOME.
  fixed issue with 'reformat' when fixed strings and CF_TEXT are used.
  Upped the BUILD ID to 5009
- srvip.c: dump device specific ACLs via 'get nets' even if no EQM ACLs.
- hstlib.c, srvquery.c: fix some problems preventing snapshot history acquisition of CF_IMAGE

Jan   4  2013
- server.c: allow 'sysStamp' assignment within the EQM dispatch (central
  servers need to do this)

Jan   2  2013
- srvdbase.c: build id 5007
- srvquery.c: re-order some of the overloaded stock property registrations.
  Re-registering same property now applies new array type and row size information.

Dec  15  2012
- client.c: fixed problem freeing elements from the dependent link (double) linked list.
- clnip.c: some associated refactoring
- srvdbase.c: upped the build id to 5006

Dec  10  2012
- srvdbase.c: GetPortOffset now returns '1' if no manifest found.
- client.c: ExecLinkEx returns illegal_read_write if GLOBALS call with CA_WRITE.

Nov  30  2012
- srvdbase.c: introduce GetValidDeviceNumber() which according to input 'ceiling'
  will not parse a '#' if the given number string is out of registered bounds.
  BUILD ID 5004
- srvquery.c: fix bug in gathering property info if specified device is an
  out of bounds number
- server.c: use GetValidDeviceNumber within IsMcaElement()

Nov  23  2012
- tinedefs.h, toolkit.c, swaplib.c, syslib.c, srvdbase.c: introduce data types
  CF_DBLTIME and CF_NAME64TIME as strong-type alias for CF_DBLDBL, CF_NAME64DBL.
- hstlib.c: allow local history entries accessing CF_DBLTIME to re-wire the
  returned data timestamps according to the Brede logic.
- tinedefs.h: upped the revision to 4.3.4

Nov  22  2012
- hstlib.c: fixed a potential problem retrieving history data with sampling = 1.
- client.c: fixed problem identifying a real globals link within ExecLink().
- srvdbase.c: BUILD_ID 5002

Nov  21  2012
- srvip.c, srvdbase.c: add warning diagnostic if empty users or ipnets lists is found.
- srvquery.c: attempt to work around the potential semaphore busy problem in short
  term local history access.

Nov  20  2012
- srvdbase.c: return '-not_registered' from GetDeviceNumber() if no devLst.
  BUILD_ID 5001
- client.c: fixed formatting problem for get connection(#) on 64-bit machines

Nov  19  2012
- srvdbase.c: introduce TINE_BUILD_ID and include it and the build date in
  dumpVersion() diagnastics.
- client.c: removed a '//' comment

Nov  16  2012
- client.c: fixed problem managing global table - connection table cross references
  when a SINGLE access of a GLOBAL parameter is in play (problem introduced with
  measures taken to prevent synchronous polling of GLOBALS).

Nov  14  2012
- hstlib.c: fixed bug introduced while trying to get the
  'append history data with very old timestamps' problem to work.

Nov  13  2012
- ttycmd.c, srvdbase.c: minor output tweaks in dumpBuildInfo(), which is now
  equivalent to dumpVersion().
- hstlib.c: fixed another spot where AppendHistoryData() was being prevented from
  adding 'old' data.

Nov  12  2012
- iplib.c, shmalloc.c, shmalloc.h: fix a number of issues concerning 64bit windows
  (memmapped files + 1 socket vs. int problem).
- server.c, srvdbase.c, dbtools.h, ttycmd.c: add routine dumpBuildInfo() and make
  it available from the command line.
- tinedefs.h: upped the version to 4.3.3

Nov   9  2012
- hstlib.c: bug fix to allow AppendHistoryData() to append data with any timestamp
  as long as nothing is in the ring buffer.

Nov   8  2012
- almlib.c: another alarm termination insurance concerning oscillation window

Nov   7  2012
- client.c: fixed potential problem with grouped link callbacks concerning
  monotonically incrementing cycle numbers being incorrectly assigned.
- almlib.c: ensure oscWindow and oscPinned are 0 when registered via
  AppendAlarmInfoTable().

Nov   5  2012
- hstlib.c: fixed problem with local history of IMAGES.

Nov   1  2012
- server.c, srvdbase.c, dblib.c, dbtools.h: better logging and initialization/cleanup
  concerning fec.xml readouts.
- client.c: fixed possible problem freeing globals memory while accessing global.
- hstlib.c: fixed some documentation.

Oct  31  2012
- listener: important tweak concerning waiting for listener table mutex.
- hstlib.c, srvquery.c, toolkit.c, client.c: removed warnings

Oct  29  2012
- client.c, srvdbase.c, syslib.c, clnip.c, globals.h: some final (?) tweaking
  concerning the new globals acquisition strategy.

Oct  27  2012
- client.c, globals.h: absolutely enforce calls (sync or async) to GLOBALS to
  listen for the multicasts.

Oct  26  2012
- srvdbase.c, srvcore.h, srvip.h, server.c, dblib.c, dbtools.h: some refactoring and
  modernization to get fec.xml configurations to supply EQM, property and
  device ACL lists.

Oct  23  2012
- server.c: added 'hidden' variable gIsGlobalsServer for specific use of the
  globals server in distinguishing when to allow sync calls.
- client.c: protect against a globals call otherwise returning mcast_access_required.

Oct  19  2012
- server.c: removed the 'require acknowledgments' conditions from TCP DATACHANGE links.

Oct  18  2012
- many modules: fixed some pedantic warnings
- hstlib.c, srvquery.c, server.c, client.c, toolkit.*: allow CF_IMAGE and CF_STRING to be in the local
  history subsystem (quite a bit of massaging, here).

Oct  13  2012
- almlib.c: fixed problem clearing self-defined alarms in the alarm watch table.

Oct  12  2012
- srvdbase.c: Yesterday's changes didn't take (even had to debug and put them all in again!!)
- hstlib.c, srvquery.c: got the short-term local history of images to work (better).
- client.c: added sanity check for getting images from local history.
- server.c: fixed problem establishing the proper contract lists 'capacity' which is now checked against.

Oct  11  2012
- srvdbase.c, hstlib.c, srvquery.c, toolkit.c: added CF_IMAGE to allowable local history formats.
- srvdbase.c: fixed multiple problems with the old ExecLocalLink() routine which apparently never
  worked in release 4 servers.
- srvdbase.c: added exported routine GetRegisteredUsers() (capital 'G') to retrieve the current
  users list.

Oct  10  2012
- srvdbase.c: fixed compile problem with MAC OS (sysctl instead of sysconf)
  better diagnostics for users.csv file readout.

Oct   4  2012
- client.c: added fec log entries when globals multicast group changes.

Oct   3  2012
- client.c: tweaked the previous globals logic a bit
  make sure a secondary MCA single element link calls back prior to
  stopping any pending 'waits' (the J.Keil MatLab problem)
- listener.c: allow an initial un-locked callback while 'waiting'.

Oct   2  2012
- client.c, globals.h: add logic to re-acquire globals address and mcast group
  following sufficient timeouts
- shmalloc.c, dbtools.c: re-arranged the headers a bit.

Sep  28  2012
- server.c: apply chkClnCredentials to all incoming contract requests
  (following an XREAD problem in a requested contract was already in the table)
- srvip.c: fix >= problem in establishing the CIDR creditials.
- listener.c: stop listener if status is 'access_denied', 'illegal_property', etc.

Sep  27  2012
- client.c, srvcore.h, tinetype.h: add Get/SetLinkCallbackDelay() and logic
  to apply an optional callback delay (in kernel cycles) to a callback.
- tinedefs.h: upped the revision to 4.3.2

Sep  26  2012
- dblib.c: allow csvAssignValue to handle CF_BOOLEAN

Sep  25  2012
- toolkit.h: doxygen tweak

Sep  19  2012
- errors.h, errlst.c: added error code 'out_of_sequence'
- hstlib.c, hstlib.h: added routine AddHistoryData()

Sep  18  2012
- toolkit.c: fixed problem converting to CF_STRING within PutValuesAsString().

Sep  14  2012
- listener.c: fixed mutex deadlock introduced Aug 8 while tacking the
  'Marcus Fleck 1700 links in a repeater problem'.

Sep  13  2012
- srvdbase.c: fixed problem with Sep 4 fix involving work area size
  check available physical memory when adjusting work area size.
- error.h, errlist.c: 3 new error codes
- iplib.c, srvip.c, syslib.c: better diagnostics for a tcp communication error

Sep  11  2012
- dbtools.c: allow GetServerAddr() to contact the ENS if not in cache.

Sep   6  2012
- hstlib.c, srvquery.c: recognize a 'snapshot' when requested size = 1 !

Sep   4  2012
- srvdbase.c: also adjust work area size based on properties with
  registered tagged structures.
- client.c: during a 'reLink' also realloc the connections 'outBuf'
- toolkit.c: (those bugs just keep on comin')... fixed a fix from a while
  back concerning device names queries with empty strings.

Aug  28  2012
- listener.c, listener.h: added hash table for listener table
  fixed bug recognizing listening links with input
- srvdbase.c, hstlib.c, hstlib.h: add 'validateHistoryHomePath()' and use it in all
  spots where HISTORY_HOME is checked.
- hstlib.c: check against an empty string argument as well as a null argument for
  dumping the history manifest from the command line.

Aug  25  2012
- toolkit.c: fixed a warning.
- hstlib.c, hstlib.h:  added Get/SetHistoryDeactivateOnError() (for use in repeater).
- repeater.c: added SetHistoryDeactivateOnError(TRUE)

Aug  24  2012
- repeater.c: protect against illegal_property coming from a bad history.csv file.
- toolkit.c, toolkit.h: expand functionality of SavePropertyValuesEx() so that
  if called as an API with devName = SR_ADD_DEVICES then the device column is added
  to the save-and-restore file.

Aug  15  2012
- tinetype.h: fixed some documentation

Aug   8  2012
- client.c, tinetype.h: added convenient helper routines UpdateDataStampsFromLinkId()
  and UpdateDataStampsFromCallbackId()
- clear 'needsNotification' flag for the bound link parent for most cases within attachLink.
- clnip.c:  remove socket error log entry when server is terminating (as this is normal).
- listner.c, listener.h: better mutex protection in various routines using the listener table.

Aug   5  2012
- tinetine.h: make new macro DTYPEZERO() operator on a DTYPE variable instead of a
  pointer.
- toolkit.c: make GetSystemDevices() check for non-truncated lists and adjust completion
  size accordingly.

Aug   3  2012
- client.c: more tweaking to on the 'mcast_access_required' logic.
  Also allow an asynchronous SINGLE link to start listening on 'async_access_required'.
  removed -Wall warning.
- repeater.c: removed some warnings

Aug   2  2012
- client.c: when 'mcast_access_required' is returned, automatically apply
  the CM_NETWORK switch to avoid another 'bounce'.
  Also allow an asynchronous SINGLE link to start listening on 'mcast_access_required'.

Aug   1  2012
- client.c, srvcore.h: added 'listening' logic to coerce contracts receiving
  'mcast_access_required' or 'async_access_required'.
- tinetype.h: added macro DTYPEZERO
- tinedefs.h: upped the version to 4.3.1

July 31  2012
- iplib.c: remove unnecessary socket error diagnostic from log file when server is
  terminating.
- repeater.c: moved diagnostics from pure console output to fec.log.

July 27  2012
- clnip.c, srvip.c, srvip.h: let the 'addSckTo' routine return the number of descriptors
  added and check against '0' prior to 'select'.
- shmalloc.c: fixed some problems with 64 bit win32 and the MMF routines.

July 26  2012
- srvdbase.c: fixed another issue with 64 bit win32.

July 25  2012
- svdbase.c, shmalloc.c: fixed some 64 bit Win32 warnings.

JUly 21  2012
- srvcore.h, client.c: move #define DOOCSEQM_TAG to srvcore.h
- srvdbase.c, syslib.c, tinetype.h: introduce gDieOnAddrInUse
  and Get/SetDieonAddressInUse() plus logic.  Exempt if DOOCSEQM_TAG.

July 19  2012
- client.c: better fix of timeout counter buffer problem.
- srvdbase.c: fixed potential memcpy problem caught by VS2010.

July 18  2012
- client.c: fixed bug in the timeout counter buffer when it was full.
  re-acquire address upon marking a blacklist (+ diagnostics)
- syslib.c:  added a clock_gettime() for 'old' linuxes that need it (#define NEED_CLOCK_GETTIME)
- bufsrv.c: better handling of .SCHED synonyms

July  5  2012
- eztine.h, ezclient.c: added to the soup
- group2csv.c: fixed warning

July  4  2012
- clntools.c: add some logic to handle CDI servers in 'tinfo'.

July  3  2012
- server.c: fixed problem in flushContractTable() (called during re-init).

July  2  2012
- toolkit.h:  doxygen documentation change
- dbtools.c: (true to form: last tweak concerning tineHomePath had a problem).
  Fixed problem where the early setting of tineHomePath was later completely
  nullified.

June 25  2012
- dbtools.c, toolkit.c: a few more 'string format protection cases'.

June 22  2012
- serveral modules: another round of extra string formatting protection
  e.g. '%.32s' instead of '%s' in the printf() routines.

June 20  2012
- srvquery.c, srvcore.h: add routine getMetaFormatAndSize() to the soup.
- toolkit.c, toolkit.h: fix problem with GetValuesAsStringEx().
  add routine GetNumberOf().
  improved routine GetSystemPropertyInformation() to handle stock and
  meta properties.
- repeater.c: renamed the internal GetNumberOf() routine.

June 18  2012
- syslib.c: allow a 'reset' of the microDelay.
- clntools.c, tget.c, repeater.c : spawn a 'local' repeater (if not running)
  when script tools such as tget, tputget, etc. are used.
- listener.c : removed some warnings
- srvdbase.c : fixed warning that creapt in with recent ACL fix.
- dbtools.c, dblib.c, toolkit.c, iplib.c, dbtools.h: fixed problem where
  tineHomePath was being set too late to do any good concerning location of
  certain initialization files.

June 15  2012
- srvdbase.c, server.c: improvement on the decision to check access.
  fixed problem tagging a property's device ACL list.
- dblib.c: tweaked the allowed line length for a csv file to 350 (was 256)
  to accomodate long entries in the fec manifest.

JUne 14  2012
- srvip.c, server.c, srvdbase.c, srvcore.h: fixed problem with 'quick identification'
  of 'last allowed client'.
- client.c, almlib.c: added (undocumented) variable gIgnoreCentralServices for use in
  the repeater.

June 13  2012
- dblib.c: formating tweaks in some log output.

June 11  2012
- repeater.c: fixed problem with devices output with property lists.

June 10  2012
- repeater.c: introduce a local database.  Repeater now dumps all learned
  information locally and is able to re-read info in case target is not
  available.  This only becomes useful if the target re-appears, BUT the
  repeater does not exit on startup (as it does now).

JUne  8  2012
- srvquery.c, srvcore.h: add (non-documented) gIgnoreMetaPropertyQueries.

June  7  2012
- srvquery.c: don't let an accidental registered device get confused with file
  name input in stock property "SRVLOGFILES".

June  6  2012
- toolkit.c,.h: added Put/GetValuesAsDLong() if SINT64 is #defined.
  macro aliases GetValuesAsInt8/16/32/64 for all respective routines.

June  5  2012
- syslib.c: fixed a problem with older Solaris builds
- tinetype.h, tinedefs.h: documentation
- listener.c,.h, tbufsrv.c,.h : tweaks involving eztine
- ezclient.c: initial attempt.

May  29  2012
- new module groups2csv.c for groups2csv binary (helper utility for java)

May  27  2012
- srvquery.c: correct meta-property registration info

May  26  2012
- srvquery.c: add "METAPROPS" alias for "METAPROPERTIES" and add targeted input to same.

May  25  2012
- client.c, clnip.c: removed some warnings on Win64 compile
- clnip.c: fixed some warnings on a solaris compile
- syslib.c, dblib.c: fixed some macos compile problems/warnings
- clnip.c, syslib.c, srvquery.c, srvdbase.c: removed some -Wall warnings

May  23, 2012
- swaplib.c, srvdbase.c, srvquery.c: fixed problem with acquireAndRegisterStructure

May  21, 2012
- server.c, syslib.c, client.c: refactor 'whoami' to (double) return both the
  caller ID and the owner ID user names. Also use real system calls to get the user
  name in Windows and Unix.  SetDoocsUser() to owner ID for servers.
- shmalloc.c: some more tweaking to try to get GetMessage() to actually return.
- dbtools.c, srvdbase.c, syslib.c: fixed new feature problems on unix compile
- srvquery.c: bug fix regarding 'embedded' meta properties
  remove stock property alias "STS.ONLINE" as it collides with meta property ".ONLINE"
- srvdbase.c: fixed bug in getting group members from file

May  19, 2012
- syslib.c, shmalloc.c,.h: some tweaks to improved logfile diagnostics

May  18, 2012
- srvdbase.c: introduced GetPortOffet() and logic.
  Allow CA_HIST in property registration (adds to local history table with
  default settings).
- hstlib: dump history manifest with any 'late' history addition.
  use the history manifest to verify record indices.
- dblib, srvdbase.c: allow csv columns MAX_VALUE, MIN_VALUE, UNITS (and
  associated x-axis) columns as the preferred way to enter these property
  characteristics in exports.csv.
  Add routine RegisterPropertyInformationEx() to do the same.
- srvip.h, clnip.c: made a function of the old recvIncomingIPData() macro.
- server.c, client.c: make allowances in wildcard calls for the device mask
  (doocs SYS_MASK) and off-line bit.  Also incorporate the mask and on-line
  information in the (embedded) meta properties .DMASK. and .ONLINE.NAM.
- srvquery.c: add new meta properties .DMASK., .ONLINE and stock properties
  "DEVMASK", "DEVONLINE", and "METAPROPERTIES".
  Tweak stock property "STOCKPROPS" to accept "FECONLY" and "EQMONLY" as
  input, whereby only the FEC specific or EQM specify stock property list
  is returned.

May  11  2012
- tine32.c, threader.h: fixed documentation added a TINE_START_CYCLER env
  for WINDOWS libraries (as documented for unix libraries).
- syslib.c: and added routine WaitForThreadTerminationEx()
  (with timeout parameter: TODO: kluge a pthread_join with a timeout).
  make routine WaitForThreadTermination() behave the same in win32 as in unix.
- srvdbase.c: add global variables gUsersScanFlag and gNetssScanFlag for
  use in VxWorks.

May   7  2012
- srvcore.h: many documentation embellishments
- srvquery.c: fixed casting problem
- srvdbase.c: include "grp.h" for UNIX builds (recent group ACL code).
- hstlib.c: correct spelling error in text.

May   5  2012
- srvquery.c: stock property "ZPOSITION" instead of "ZPOS".
- srvdbase.c: fixed some bugs re-allocating with SetDeviceCapacity().
  added routines GetDeviceLocation(), GetDeviceMask(), GetDeviceZPosition()

May   4  2012
- numerous modules: introduce version 4.3.0.
  ACL lists now can include 'groups': either local, domain (windows), or nis/ldap (unix).
- significant re-factoring of equipment module object to include a list of ExportDeviceType
  objects instead of individual lists of device related fields (which now include
  several more).
- ExportDeviceType object now include a location field, a mask field, and a ZPOS field.
- new stock properties to get/set the new device fields.
- n.b. mask logic concerning wildcard and MCA access still needs to be implemented.
  location redirection still needs attention (depends on 'locator' server).

Apr  25  2012
- shmalloc.c: fix problem with shm tag name truncation.

Apr  23  2012
- tine32.c: tweaked the feclog output when cycleTerminated is TRUE.

Apr  20  2012
- srvdbase.c: fix problem determining 'real' overloaded/multiple property
  registrations (initial 'overload' sometimes gave a false positive to future
  registrations of the same property).
- client.c, srvcore.h: added routines Get/SetDoocsUserName() + env "DOOCS_USER"
  to circumvent security issues (as a last resort).
- tinedef.h: upped revision to 4.2.11

Apr  19  2012
- srvquery.c: fix it so a unique property name list is calculated within a
  property query call.
- client.c: allow a couple of timeouts before applying USEONERROR
- clntools.c: fix problem not displaying properties when CE_SENDDATA is applied.

Apr  18  2012
- toolkit.c: fixed bug assigning the returned number of properties in
  query to legacy server.

Apr  17  2012
- hstlib.c: add file integrity check on local history files at startup.
  fixed potential problem 'removing' old files when some records have
  long-term histories and some don't.
- syslib.c: don't log mutex errors during shutdown and cleanup.

Apr   4  2012
- toolkit.c: fixed another problem in recent save/restore arrays functionality
  (also added logfile mutex protection to save/restore files).

Apr   3  2012
- srvdbase.c: fixed problem in recent save/restore arrays functionality

Apr   2  2012
- srvip.h:  expanded doxygen documentation

Mar  19  2012
- toolkit.c, srvdbase.c, toolkit.h, srvcore.h: added save/restore
  capabilities for non-channel arrays of primitive types.

Mar  16  2012
- srvdbase.c, dblib.c, dbtools.h, srvcore.h: added 'burst limit',
  'cycle delay', 'mtu', and 'work area size' to fecid.csv and fec.xml.

Mar  15  2012
- syslib.c: yet another fix to windows nanosleep: test timeout
  against '0' and set to '1' if TRUE
Mar  14  2012
- hstlib.c, hstlib.h: export getFormattedHistoryDataPoint().
- syslib.c, threader.h, srvcore.h: improvements on microsleep()
  introduce and export a nanosleep() for windows
  added work-around for MACOS in microsleep()
  fixed bug with new windows version of nanosleep()
  fixed 64-bit windows warnings
- client.c: fixed problem with Vxworks and the local GENS cache

Mar   5  2012
- syslib.c, srvcore.h: added exported routines microsleep(), and
  Get/SetCycleMicroDelay() plus logic to sleep in the micro-second
  region following a burst.

Mar   4  2012
- server.c, srvip.c: fixed potential problem prematurely removing
  'dangling clients' when a 'long' data input contract is being assembled.

Mar   3  2012
- dbtools.c:  fixed problems resolving addresses from FILE
  (do not make ENS re-read db files)

Feb  28  2012
- client.c, server.c: fixed a couple of issues concerning sending
  a very large payload as input to server. 'block id' is now
  better determined at client and examined at server.

Feb  22  2012
- syslib.c, client.c: introduced an ugly workaround for a linux
  network stack problem that does not break 'recvfrom' or 'select'
  when a socket goes bad (globals thread/mcast thread termination).
  (apply on to UNIX guys)

Feb  21  2012
- several routines: added isGroupNameServer() logic for the GENS.
  block appending local address cache if GENS or ENS
  some more formatting tweaks.

Feb  20  2012
- server.c, srvdbase.c: some formatting tweaks
- dbtools.c, client.c, srvcore.h: collect GENS caching info in a linked
  list and then flush the list to disk 'elsewhere' following a delay
  (some panels will hit > 100 items at a go -> and otherwise slow the
   startup appreciably!)

Feb  17  2012
- dbtool.c: minor tweak regarding GENS cache files
- almlib.c: don't block alarm removal for more than alarm heartbeat

Feb  16  2012
- server.c: some tweaking concerning S.Weisse's desire not to have
  unexpected resent payloads for CM_EVENT client links.
- dbtool.c, client.c: minor bug fixes concerning output to local cache directory
  for GENS info

Feb  15  2012
- tinedefs.h: upped the revision to 4.2.10
- almlib.c: fixed problem with adding link error text to the alarm tag
- hstlib.c, syslib.c, threader.h: fixed spelling error.
- other routines: added file caching and failover readback of GENS information
  in case of ENS failure.
  some refactoring of macro name #definitions

Feb   8  2012
- srvdbase.c, ttycmd.c, iplib.c, srvcore.h: added routine getFecAddr() to the command line
  routines.
Feb   7  2012
- srvdbase.c, dblib.c: more tweaks to csv reading
- other files: change PIPE security to allow everyone
- eventools.h: fixed solaris warning

Feb   6  2012
- server.c: 'renegotiate' also on 'return to normal'.
- srvdbase.c: free and alloc on change in 'users' list.
- dblib.c, srvip.c: tweak some format specifications

Jan  17  2012
- tinedefs.h: upped the revision to 4.2.9

Jan  14  2012
- client.c, syslib.c, srvcore.h: added exported routine SystemGetSiteTimestamp();
  modify prototype and export (as yet unused) routine SystemStartTimeSynchronization()
  use SystemGetSiteTimestamp() in VxWorks rdate()
  some macro definitions for system servers.
- almlib.c: use macro definition CAS_SRV instead of hardwiring CAS.
- prolog.h: #define RDATE for VXWORKS

Jan  13  2012 (a Friday)
- syslib.c, prolog.h: tweaked the RDATE logic a bit (added rdate() for VxWorks)

Jan  10  2012
- almlib.c: fixed problem deciding if the CAS is reading out NALARMS

Jan   9  2012
- tbufsrv.c, hstUtils.c, listener.c: removed some -Wall warnings.
- hstlib.c: minor diagnostic tweak in log output.

Jan   8  2012
- syslib.c: modernized 'readSelfTest()' (looks for 'selftest.csv' in local name directory)
- server.c: added an #ifdef IPXNW switch around an IPX-client only section
- other routines: added some string length checks in various 'printf' types.
  got rid of -Wall warnings when MULTITHREADED not defined
- command line tools: got rid of many -Wall warnings

Jan   6  2012
- many modules: include more 'SMALL_TINE_LIB' macro exclusions so that the DOS
  build links in 'large' memory model.
- clntools.c: repaired problem with new prototype for prepDataDump().
- syslib.c, toolkit.c:  fixed some -Wall warnings

Jan   5  2012
- toolkit.c: fixed bug decoding NAMExxDBLDBL; formatting problem with int64

Jan   2  2012
- toolkit.c, .h and other routines: use 'common' routines dataValueToString() and
  stringToDataValue() for data to string conversion and vice versa.
  allow save-and-restore to utilize most data types (as long as attribute style or MCA).

Dec  27  2011
- iplib.c, client.c: trap a '0' ip address prior to 'send' (avoids a net write error)
- dbtools.c: recognize "ENSEQM" along with "ENS" as an explicit ENS request.

Dec  22  2011
- toolkit.c: add a fix to the legacy routines for querying servers from the
  local database (treat "DEFAULT" as NULL).

Dec  21  2011
- listener.c, .h: added 'lastsize' field to listener struct to contain the
  last completion data size for use with access & CA_MUTABLE.

Dec  15  2011
- client.c: implemented 'reacquire_address' logic.

Dec  14  2011
- srvdbase.c: fixed warning
- errors.h, errlist.c: no_such_loop -> reacquire address; link_exhausted -> data_size_mismatch
- client.c: return data_size_mismatch instead of illegal_format
- srvip.h, tinetype.h: relocate some prototypes

Dec   7  2011
- almlib.c: fixed a compile warning (with -Wall).
- server.c, hstlib.c, srvdbase.c: reject redirections to local process
  only if there's a match on the eqm name as well.

Dec   6  2011
- almlib.c, almlib.h: added alarm mask definition for DATA_TO_TAG;
  append text alarm data to alarm tag if this mask is set.
- srvcore.h, tinetype.h: export some more routines; update dox
- server.c: dynamically re-alloc the structure area
- srvdbase.c: add diagnostic for transport ceiling in settings dump.
- tinedefs.h: upped the revision to 4.2.8

Dec   5  2011
- almlib.c: add server name to alarm message tag for link error alarms
- errlist.c: error tag "Command not posted" -> "result not posted"
- client.c: trap information_static and close link automatically.

Nov  24  2011
- srvdbase.c: fixed problem in RemoveEquipmentModule().
- client.c: peg polling rate for CM_EVENT links to 30000 msec if smaller.
- iplib.c: call getSrvIPAddr() inside of getmyipaddr().

Nov  20  2011
- server.c, srvdbase.c: respect 'tags' in assigning CF_DEFAULT information (i.e.
  return 'invalid_structure_tag' is a STRUCT as the tag info cannot currently be
  returned to the caller.
- client.c: trap CF_DEFAULT format early in looking for dependent links.
- client.c, ttycmd.h, srvcore.h: add 'get redirections' to the command list.

Nov   8  2011
- client.c: made several '%s' within sprintf() etc. more robust.

Nov   6  2011
- srvdbase.c. srvcore.h: fix problem processing number of devices with alternate column header
  in exports.csv

Nov   5  2011
- srvdbase.c, dblib.c, dbtools.h, srvcore.h, tinetype.h: added API call JoinEquipmentGroupEx()
  plus logic to allow sending device name prefix and postfix when joining a server group.
Nov   2  2011
- ttycmd.c: allow a negative filter
- srvdbase.c, syslib.c: trap and remove duplicate device names in RegisterDeviceName().

Nov   1  2011
- almlib.c, srvdbase.c, srvcore.h: add a bit of logic to decipher 'root' contexts
  from decorated contexts and allow subsystem decorated contexts when explicitly declared.
- client.c, server.c: introduce a couple of more sanity checks concerning corrupt contracts.

Oct  27  2011
- almlib.c: validate alarm description information

Oct  26  2011
- server.c, srvcore.h: revert back to data size truncation (need to protect
  against renegade clients asking for GByte data sets, etc.).
  introduce Get/SetServerTransportCeiling() (for multithreaded servers).
- numerous routines: fixed some pedantic warnings
- clntools.c: trap 'work_area_full' in tget().

Oct  25  2011
- client.c: fixed warning
- srvdbase.c, srvquery.c: fixed warnings on 64-bit machines.
- srvcore.h, tinetype.h: fixed some doxygen docs.

Oct  22  2011
- srvcore.h: added field for statechange callback to ExportListStruct;
  added a prototype and tweaked documentation
- srvdbase.c, client.c: added statechange callback logic and routines.
- tinedefs.h: upped version to 4.2.7

Oct  21  2011
- server.c, syslib.c, tinedefs.h: reverted from yesterday's changes and added new signal PS_PROCESSED.
- clntools.c: fixed warning.

Oct  20  2011
- dbtools.c: memset the contents of 'connNameServer'.
- clntools.c: add a bit of support in tget for CF_IMAGE.
- syslib.c, server.c: position the check on formats with headers and bodies prior
  to issuing the PS_CALLED signal.

Oct  19  2011
- server.c: only truncate an output data size if a stock or meta property;
  return work_area_full if single-threaded otherwise.

Oct   5  2011
- hstlib.c: try to backoff on repeated attempts when eqm call from historyCycle returns an error.

Oct   4  2011
- syslib.c, srvquery.c: allow SRVLOGFILES to take device name = path; fix 'static' scan counter problem.
- srvwizard.c: fix problem incurred by recent refactoring.

Sep  28  2011
- server.c: startup diagnostics tweak
- srvdbase.c: improved property description parsing
- srvquery.c, tinetype.h:  add 'prpUrl' field to export property definition. add new meta properties
  ".URL", ".MAX", ".MIN", ".XMAX", ".XMIN".  The EGU meta properties are now WRITEABLE (albeit volatile).
- tinedefs.h: upped version to 4.2.6

Sep  21  2011
- clntools.c: fixed parsing problem for tools such as tsend
- eventtools.c: fixed warning

Sep  20  2011
- client.c, srvcore.h: add Get/SetDefaultTransportMode() API calls.

Sep  14  2011
- client.c: use original calling parameters to check for registered structures
  (and NOT The possible redirection parameters)

Aug  17  2011
- server.c: if 'illegal_protocol' and protocol > standard set to standard in the reply.
  + don't send 'illegal_protocol' back to caller if requested protocol is completely unknown.
- iplib.c: protect against inordinate waiting in select.
- srvip.c: protect against corrupt tcp request (msgsize = 0 in header)

Aug  16  2011
- swaplib.c: fixed tag name problem with "DSUMMARY" struct.
- server.c: fixed warning

Aug  11  2011
- server.c, srvdbase.c, srvcore.h:  keep separate allocation for CF_STRING array pointers
  (alignment problem on solaris).

Aug   9  2011
- client.c: fix problem in new struct routine on big-endian machines
  fixed solaris warning.
- swaplib.*, tinetype.h: added tagged struct DSUMMARY for use in doocs
  THUMBNAIL data type mapping.

Aug   4  2011
- hstlib.c: back off on some of the logging diagnostics
- client.c: fixed problem copying data for dependent links using CF_IMAGE
- ttycmd.c, ttycmd.h: added 'which' command
- listener.c: do NOT set the listener status to 'link_not_open' at initialization !
  (problem with MCA single element links not WAITing).
- tinetype.h: fixed typo in documentation
- tinedefs.h: upped version to 4.2.5

Aug   3  2011
- many routines: added a 'server key' to structure registry for client side
  structure acquisition.
  Added data type CF_KEYVALUE (analogous to CF_STRING).

Jul  25  2011
- listener.c: added CA_CONNECT access mode possibility

Jul  21  2011
- srvdbase.c: suppress some info if configurationCoded is true.

Jul  20  2011
- several routines: introduced Get/SetConfigurationCoded() to be able to
  avoid scanning the file systems for config files (think VxWorks).
- syslib.c, tinetype.h: added Get/SetFeclogDepth() to supercede variable.

Jul  18  2011
- tinetype.h: corrected documentation.

Jul  14  2011
- tbufsrv.c: removed no-EOL warning
- hstlib.c: added a flag to allow 'examining' the results of making the standard
  local history file set (undocumented). -> ah those tweaks ....

Jul  13  2011
- dblib.c: add a concurrency protection against updating the address cache file from
  multiple clients.

Jul  12  2011
- tcycler.c: fixed copy-and-paste bug on SystemKillTimer().
- threader.h: moved prototypes for SystemStart/KillTimer() outside MULTITHREADED #define.
- win32.c, tcycler.c: added SystemWaitCycleTimer().
- server.c, syslib.c, srvcore.h: logic to protect recursive call of stock property mutex
  during initialization.

Jul  11  2011
- srvquery.c: num prps and devs queries now return assigned numbers if query functions
  in play.

Jul  10  2011
- threader.c, tcycler.c, tine32.c: some doxygen additions

Jul   8  2011
- syslib.c: add logic to prevent SystemCycle() from running concurrently on different threads.
- hstlib.c, hstlib.h: added AppendHistoryInformationEx() which can pass pointsOfInterest flags.
- other routines: some code rearrangement so that doxygen puts things where they are needed.
- tindefs.h: upped the version to 4.2.4

Jul   5  2011
- server.c, typedef.h: added routines: Get/SetSystemSynchronizeContracts()
  fixed some doxygen documentation

Jul   4  2011
- hstlib.: more tweaking to get the file position properly set for standard files
  during a server restart.

Jul   1  2011
- hstlib.c, hstlib.h: fixed problem resetting the file postion in 'recycled files' during
  file rotation for the local history 'standard' file set.
- other routines: fixed some doxygen documentation problems

JUn  29  2011
- srvlib.c: protect against a background task interval <= 0

Jun  23  2011
- hstlib.c: tweaks concerning points of interest over a long time span

Jun  22  2011
- almlib.c, almlib.h, srvquery.c: allow remote 'editing' of alarm definitions
  via "ALMDEFS".

Jun  21  2011
- srvquery.c, prolog.h, srvcore.h: added overload to stock property "HISTORIES"
  to return full local history info in an "HRS" structure.
- hstlib.c, hstlib.h: fixed some formating issues and test and fix "ADDHISTORY"
  and associated routines.
- ttycmd.c, srvdbase.c: add command line utility to get 'histories' and 'alarmwatch'

JUn  20  2011
- tine32.c: added another export: SystemStartCycleTimer() for consistency with the
  unix tcycler routine.
- listener.c, listener.h: added method to set the listener table capacity; updated documentation
- tbufsrv.c, tbufsrv.h: updated documentation

Jun   7  2011
- server.c: return work_area_full instead of invalid_transport_size when 'default' size
  is larger than the registered work area size, and only for single-threaded builds

Jun   6  2011
- client.c: fixed introduced bug where non-SYNCNOTIFY + NETWORK was not being notified.
- toolikt.c: fixed warning on 64-bit machines
- tbufsrv.c, listener.c: expanded functionality for MatLab interface.

May  28  2011
- client.c: better address reacquisition for windows MMF links (less waiting)
- syslib.c: allow GetArrayTypeFromString() to accept both format decorated as well
  as straight up array type strings.
- tbufsrv.c, tbufsrv.h: add double extended API call RegisterBufferedPropertyEx2() to
  take the array type and row length.

May  26  2011
- syslib.c: fixed possible null argument problems with some utilities
- tbufsrv.c: allow an array type in the property description in RegisteredBufferedProperty.

May  25  2011
- tbufsrv.c, tbufsrv.h: added routines 'RegisterBufferedDeviceName()' and 'GetEquipmentModuleName()'
- syslib.c: fixed problem when the StreamTransportRetryLimit is 0.

May  24  2011
- srvdbase.c, client.c: protect the 'needsNotification' flag from multiple threads
  if SYNCNOTIFY|NETWORK.
- syslib.c, srvcore.h: added routines Get/SetStreamTransportRetryLimit() and supporting
  logic to allow user control over TCP send attempts.
- tinedefs.h: upped version to 4.2.3

May  23  2011
- iplib.c: fix possible mutex lock problem with the tcp bucket mutex.
- srvcore.h, syslib.c, ttycmd.c: add routine SetSystemCleanupFunction() to
  allow user defined actions at a last step in a 'quit' or 'exit' call.
- tbufsrv.c: put needed #ifdef WIN32 in the debug launching routine

May  20  2011
- syslib.c: added string 'SYNC' for evaluation in mtoi().
- tbufsrv.c, .h, listener.h: exported some routines.
  fixed inconsistency in pullBufferedData() regarding MCA registered to accept
  only a single input element.

May  11  2011
- server.c, srvdbase.c: add the '.' to meta property tags in certain redirection situations.

May   3  2011
- syslib.c, clnip.c, threader.h: add routine WaitForThreadTermination() and call it
  within CloseClientMutexSet() for hGlbThread and hMcstThread.
- client.c: allow bitfield types to 'relink' with bitfield decorated device names.
- dblib.c: don't read a csv header if it begins with ',' (excel special)
- srvdbase.c: in findBitField() trap the CDI 'thisfec' vs. '/LOCALHOST/CDI'.

Apr  28  2011
- syslib.c, tinedefs.h, srvdbase.c, server.c: added exported routines GetAccessMode()
  and GetAccessAsString() (wrapping itom() and mtoi()) plus alter the returned string
  in itom slightly.
- client.c: fixed mca links startup problem when the mca link is itself a dependent link.

Apr  21  2011
- ttycmd.c: refined the command parsing a bit
- toolkit.h: added some doxygen examples
- other routines: added client port in other debugging areas

Apr  20  2011
- tinetype.h and other routines: many doxygen documentation updates
- server.c, srvdbase.c: include the client port in diagnostics and remember the ntohs().

Apr  18  2011
- client.c: added the inet protocol to 'get connections'
- tinetype.h: expanded some doxygen documentation

Apr  15  2011
- tine32.c: assign hParent to hDLLinst always.
- hstlib.c: tweaked previous tweak concerning snapshot request crossing
  a file boundary.

Apr  14  2011
- hstlib.c: fixed some exotic scanning bugs
- eventools.c: fixed problem with duplicate entries in server list
- tineRepeater.c: fixed bug detecting desired 'mode'.
- client.c: more debug output for a connection table entry

Apr  11  2011
- tinetype.h: minor documentation fix

Apr   7  2011
- server.c, client.c: important tweaks in the clock reset logic
- tinedefs.h: upped the version to 4.2.2

Apr   6  2011
- hstlib.c: fixed logging problem
- client.c: fixed problem with time sync not using fabs on 2nd derivative
- server.c: more fixes relevant to system clock being set back

Apr   5  2011
- syslib.c: check background task execution against clock set-back
- client.c, tinetype.h: new routine GetLinkCallbackReference()
  accept a 'url prefix' in an address name
- server.c: fixed some issues concerning synchronization + scheduling + data protection
  + background tasks.
- dbtools.c: protect cache log updates with log mutex.
- toolkit.c: fix 'format code' in call to GetTargetPropertyInformation().
- srvcore.h: #define assertHeapOk only for WIN32 and NOT _DEBUG
- others: some refactoring

Apr   4  2011
- server.c: fix possible 'hole' identifying eqm as busy (if run on separate thread).
- syslib.c: add time offset correction logic based on independent delta_t slopes.
- client.c: fix problem applying a time offset due to clock reset (msec vs sec)

Mar  10  2011
- server.c, syslib.c, tinetype.h: add routines Get/SetUseGlobalSynchronization().
  (previously only a global variable).
  Also add environment variable TINE_USE_GLOBAL_SYNCHRONIZATION.

Mar   6  2011
- server.c: apply timestamp offset fix (see Mar 3) only if offset is non-zero
  (a sign that a TINE time server is in play!).

Mar   5  2011
- clnip.c, srvip.h, iplib.c: added env TINE_RECV_BUFFER_SIZE method for setting
  socket recv buffer size.
- errors.h, errlst.c: added some more useful alias status codes
  change 'deprecated' to 'function_deprecated'.
- tinedefs.h: upped the version to 4.2.1

Mar   4  2011
- clnip.c: fix possible problem with recognizing TCP bucket packet begin and fix
  possible null pointer exception.

Mar   3  2011
- server.c: apply a negative delta_t in contract timestamp to the data timestamp offset
  and add log entry (should help in smoothing timeouts in such cases at the client side)).
- repeater.c: make allowances for tango or doocs server repeaters.

Feb  28  2011
- server.c, syslib.c: pass overloaded meta-properties with wildcard devices through to
  equipment module dispatch routine.
- srvdbase.c: WRITE properties: set input size = output size if not given in 'exports.csv'

Feb  23  2011
- srvquery.c: protect against highly improbable scenerio where stock property ALARMS
  is called with a request size exceeding the tmpWorkAreaSize (normally tied to srvWorkAreaSize).
  If srvWorkAreaSize is independently adjusted (e.g. non-INTEL) then a 'large' request could
  pass thru an initial check against srvWorkAreaSize and later confront the assumption that
  tmpWorkAreaSize could handle the call!
- clnip.c:  better diagnostics if a TCP/PIPE payload appears to have a problem.

Feb  22  2011
- almlib.c, almlib.h, syslib.c, srvquery.c, srvdbase.c, client.c:
  add 'watch table entry' info to ALARM structure.
  include property in watch table alarm tags where possible.

Feb  21  2011
- almlib.c, almlib.h, swaplib.c, ttycmd.c: allow individual alarm codes to
  have their own alarm oscillation windows.  Some refactoring.

Feb  18  2011
- srvquery.c: fixed problem handling alarms query with format CF_INT32
- client.c, clnip.c, iplib.c, srvip.h: fixed memory leak with TCP connections.
  fixed problem shutting down tcp socket after the idle period has expired.

Feb  16  2011
- eventtools.c, eventools.h, teventdata.c:  inaugural versions

Feb  15  2011
- srvdbase.c: apply CA_SAVERESTORE to eqm call when restoring at initialization
  allow CA_READ only properties to participate in save/restore (the eqm can decide to accept or not)
- repeater.c: allow CM_SINGLE access mode (for e.g. repeater on a HISTORY server)
  acquire and register structures as needed.
- toolkit.c: memset DTYPE objects in some toolkit calls.

Feb  14  2011
- srvdbase.c: adjust work area size to accommodate property queries for all info
  when there are lots of properties!

Feb  11  2011
- listener.c: (relevant to tbufsrv lib) use a strnicmp() on device an property
  name comparisons

Feb  10  2011
- client.c: fixed (possible) bug when reassigning dependency chains to an MCA link
  element which has been 'closed'.

Feb   8  2011
- srvdbase.c: return -argument_list_error from GetDeviceNumber() when device name
  passed is non-null but of zero length.

Feb   6  2011
- hstlib.c: some more diagnostics at initialization.

Feb   3  2011
- toolkit.c: protect the PutValues and GetValues functions against a null 'values' pointer.

Feb   2  2011
- almlib.c, hstlib.c, server.c: refactored the memory de-allocation of some of the tables.
  fixed problem finding outdated history files for 'late' local history registration
- almlib.h: updated some documentation.

Feb   1  2011
- almlib.c: added almOscillationWindowPinned logic.
- hstlib.c: more log file diagnostics.

Jan  28  2011
- srvdbase.c, toolkit.c, server.c, toolkit.h, srvcore.h: implement auto save/restore
  routines.
- client.c: fixed problem formating a group key where a 'global' is concerned.
  fixed warning on solaris compiler.
- several routines: fixed some warnings concerning newest gnu compiler.
- almlib.c, almlib.h: added routines Get/SetAlarmDataChangeWindow() + fixed some
  documentation.
- client.c, srvdbase.c, ttycmd.c: make sure client cleanup occurs if there are globals
  connections (but no 'normal' connections).
- hstlib.c, srvdbase.c: fixed some whining from the VS 2008 compiler

Jan  21  2011
- almdef.h: change #definition of ALM_SYSTEM_HIDDEN to 0x4000 so as to fit in a
  signed short.
- almlib.c: fixed potential problem 'clearing' disk space alarms

Jan  20  2011
- srvcore.h: add some HBT definitions
- client.c: fixed some minor problems with group synchronization

Jan  18  2011
- hstlib.c: when scanning for hist data, allow fallback to 'legacy files' if standard set in use.
  protect some 'sprintf()s' from buffer overwrites.
  don't 'make' standard files if system is running.
- almlib.c: add logic to 'hide' an alarm within the CAS.

Jan  10  2011
- hstlib.c: allow 'spillover' to be 0 bytes; flag as 'late entry' after 15 minutes;
  improve log file diagnostics

Dec  17  2010
- almlib.c: improve diagnostics in fec.log for clearing alarms; do not flag 'clear alarms' as
  done unless successful!

Dec  16  2010
- srvcore.h, client.c, server.c: added routines GetServerCycleIdle() and GetClientCycleIdle().
- srvip.c: fixed bug freeing access lists during initialization
- client.c: fixed a cosmetic bug in the msg table from the group synchronization callback.

Dec  12  2010
- tputget.c, tsendrecv.c, tput.c: fixed parsing problem for single negative number input
- syslib.c, tinetype.h: add routines Get/SetPutCommandsInFeclog().  Add environment variable
  FEC_LOG_COMMANDS to provide an environment variable alternative.
- tinedefs.h: upped the version to 4.2.0 (Merry Christmas).

Dec  10  2010
- client.c, server.c, srvcore.h: added routine Get/SetSystemStampDelay() + logic (for delaying
  application of system stamp).
  rename Get/SetCycleOffset() to Get/SetSystemStampOffset() (for consistency).
- toolkit.c: fixed macro #define problem for SINT64

Dec   9  2010
- client.c: wait for 1st notification on dependent sync links.
- other routines: rationalize macro #definitions for NO_TINE_PIPE, NO_REMOTE_PIPE, NO_SERVICE_PIPE
  Allow a windows compile with NO_TINE_PIPE and MULTITHREADED to completely avoid shm datagrams and
  other windows routines (and thus avoid linkage to user32.dll, gdi32.dll, advapi32.dll).

Dec   7  2010
- client.c, srvcore.h, syslib.c: remove the old 'recvNetGlobalSemaphore' and use 'hSystemGlobalsUpdateMutex'
  in its stead. (with a gSystemTick timeout in _recvNetGlobal())
  retry startCycleTrigger up to 5 times if 'semaphore_busy'
- server.c: more diagnostics in msg log when 'retry' and 'reconnect' counters increment

Dec   6  2010
- ttycmd.c, globals.h: some tweaks involving displaying 'groups'
- server.c, srvcore.h: some refactoring concerning struct field names;
- tinedefs.h: redefine CM_BCAST to be identical to CM_MCAST and use 0x100 as CM_SYNCGROUP
- client.c: added Get/SetCycleOffset(); GetCallbackGroup(), GetGroupMemberList()
  pass along the lastErrSource and lastErrString in MCA callbacks
- errlst.c, tinetype.h: added GetErrorListSize()
- toolkit.c, toolkit.h: Save/RestorePropertyValues() refactoring (parameter list: API break).
  add AssertRangeValid().
- listener.c, listener.h: added alsnGetLastLinkError()
- syslib.c: fix problem releasing stock and eqm carrier mutexes when 'terminating'

Nov   9  2010
- srvcore.h: some macro re-definitions (of IPX fields) to make code more readable.
- other routines: more unix socket (pipe) communication tweaks.
- hstlib.h, ttycmd.c: include file rearrangement to please newest Visual Studio compiler.

Nov   8  2010
- hstlib.c: added log mutex around history reads (fopen,etc. not thread safe in windows dbg builds)
- server.c: allow meta property access of aliased property names.
- srvquery.c, srvdbase.c: add stock property "ADDALIAS" and associated logic.

Nov   7  2010
- errlist.c, errors.h: added error codes unix_socket_error (pipe_error) and shm_error
- other routines: fixed some remaining problems handling unix sockets
  (pipe communication) on the client side.

Nov   4  2010
- dblib.c, dbtools.h: add exported routines GetCsvColumnIndex() and GetCsvColumnString() to cover findcol()
  and colptr().
- listener.c, listener.h: allow setting the listener table capacity
- tineRepeater.c: add command line switch to allow setting the listener table capacity
- tbufsrv32.c: use the new listener table capacity variable.

Nov   3  2010
- syslib.c, server.c: fixed deadlock problem with data protection mutex + eqm separate calling thread
- server.c: ensure that flushContractTable() calls contracts with the CA_LAST bit
- srvdbase.c, ttycmd.c, ttycmd.h, srvcore.h: allow 'flush contracts', set/get serverIdle, clientIdle from
  the command line.

Nov   2  2010
- client.c: return the cdi hook return code from CloseLink().
- srvdbase.c, srvip.c: add a couple of more variables to the 'get stats' dump.

Nov   1  2010
- server.c: don't count time outside the serverCycle in AveBusyTime.
- client.c: add some global variables for possible clientCycle busy time calculation.

Oct  31  2010
- client.c: check interval returned in 'invalid_interval'.  Don't allow heartbeats to exceed 600 sec.
- server.c: validate return code from equipment module handler (don't allow certain systematic negotiation
  codes).
- hstlib.c: fixed bug in hist manifest output

Oct  29  2010
- client.c: protect assigned heartbeat against extra large timer intervals

Oct  27  2010
- hstlib.c: corrected the macro size definition for HRSIZE (as yet not in common use)
- client.c: fix initial TIMER heartbeat at 1 + poll/1000.
- srvdbase.c: set failover recovery idle deadband at 120 sec.

Oct  26  2010
- clnip.c: if 'ReturnToClientCycle' is set then enter select with 0 timeout
- client.c: increment ReturnToClientCycle following server_redirection
- hstlib.c, hstlib.c: some preparitory work for handling adjustable length formats
- server.c: modify 'resend data' with TIMER client to check vs last 50 msec.
- tinedefs.h: upped the revision to 4.1.10

Oct  25  2010
- srvdbase.c: add logic to 'force' clients attached to failover slave
  to revert to the master when the master is 'back'.
- syslib.c: added 'Get' routines for thread priorities.
- srvcore.h, threader.h: updated doxygen documentation.

Oct  22  2010
- errors.h errlst.c: added code 'record_too_long' (for use in hstlib)
- hstlib.c: add a dump history manifest routine (called from tty).
- ttycmd.c, ttycmd.h: add a 'dump' category and add 'dump histories'
- syslib.c, threader.h: add tine thread priorities and 'Set' routines.

Oct  18  2010
- hstlib.c: fixed warning on win64

Oct  16  2010
- srvquery.c: correct SRVSUBSYSTEM description
- server.c: resend data if TIMER + last time < interval/2
- repeater.c, tineRepeater.c: add /m=<mode> switch

Oct  15  2010
- listener.c: fixed problem re-creating listener mutex.
  set queue depth to 0

Oct  14  2010
- srvquery.c: added stock property "SRVSUBSYSTEM", meta property ".XEGU"

Oct  12  2010
- several routines: refactored some global variables.
- hstlib.c, hstlib.h: added Get/SetHistoryFilesRepository() to supplement HISTORY_HOME
  and Get/SetHistoryStaticFilesRepository() to supply a prefered 'SAVED' files directory.
- mkhstfiles: added new utility for creating 'standard' local history files.

Sep  30  2010
- threader.h, srvcore.h, syslib.c, client.c: add a watchdog link mutex for traversing
  the watchdog link linked list.
- srvdbase.c, toolkit.c: removed some valgrind warnings concerning uninitialized buffers.

Sep  29  2010
- dblib.c: chmod unix cache directories with 'x' everywhere (to correct the prior releases).
- listener.c: fixed bug concerning read contracts with input data.
- repeater.c, tineRepeater.c: added a /x=TRUE switch for exclusive read declaration on all
  properties.

Sep  27  2010
- srvip.c: supress error message on PIPE connection termination.
- client.c: added a check on 'server_redirection' if an asynchronous call is starting in a
  WAIT state.
- dblib.c: create unix cache directories with 'x' everywhere !
- repeater.c: further checks on num properties necessary if repeating a GENS server.

Sep  26  2010
- client.c: don't check 'returnToClientCycle' if serverCycle() on its own thread.
- shmalloc.c: don't set 'returnToServerCycle' (obsolete here).

Sep  24  2010
- client.c: fill in all mca single element data @ startup when the parent has been established.
- srvquery.c: fixed warning on 64 bit compiles

Sep  23  2010
- syslib.c: also check client sockets if globalsSocket is non-zero!
h, err
Sep  21  2010
- srvip.h: protect early against mal-formed incoming datagrams.
- listener.h: add lsn table mutex

Sep  18  2010
- hstlib.c: removed useless line of code.
- srvquery.c: allow property decorations .SCH, .SCHD, .SCHED to revert to
  non-decorated property when handling local history request.

Sep  16  2010
- client.c: fixed possible problem in establishing a link before all link info has been gathered.
  fixed problem needlessly 'waiting' for MCA single element links.
  fixed warning.
- listener.c: harder protection against 0 timestamp

sep  14  2010
- server.c: fixed problem counting expired contracts when express delivery is in force.
- hstlib.h: added some doxygen documentation.

Sep   6  2010
- server.c: fix problem prematurely removing attaching client upon non-zero status code.
- hstlib.c, dbtools.c: make use of the hLogFileMutex to avoid concurrency problems with
  windows debug builds.
- several routines, dbtools.h: added 'tgt_flgs' field to CSVDB (for mem managment)
- errlst.c, errors.h: introduce 'reset_mca_property'.
- syslib.c, tinedefs.h: added CA_SENDCODE and logic to SystemSchedulePropertyEx() so
  that a property can schedule a non-zero status return.
- several routines, srvcore.h: added ResetMultiChannelProperty() routine and logic for a
  server to signal clients that it has modified the channel indices within the given
  MCA properties.
- hstlib.c, server.c, client.c: make sure there are no 'long jumps' in delta time
  calculations due to ntp nonsense.

Aug  31  2010
- clnip.c: never set defaultClientTimeout to 0,
  and always use the defaultTimeout in the clientCycle().
- srvdbase.c: more stand-alone diagnostics in fec.log.

Aug  30  2010
- dbtools.c: if 'stand-alone' don't ever ask the ENS for an address
- dblib.c: closed a (almost impossible to reach) hole in getCsvColumn.
- client.c:  add a smidgen of protection against a bad framebuffer address in DIMAGE
- toolkit.c, client.c:
  change a feclog entry to a msglog entry.
- syslib.c, srvdbase.c: doxygen rearrangement
- listener.c: fixed some problems with the CF_IMAGE format

Aug  26  2010
- syslib.c:  added CF_STRUCT to the routine itof()
- hstlib.c: fixed rounding problem regarding finding a raster using the
  short-term local history storage.

Aug  24  2010
- syslib.c: relax the dbg output on 'ReleaseSemaphore()' error if
  'too many posts'.

Aug  23  2010
- server.c: fixed bug in getDefaultFormatAndSize + redirected property
- client.c: added CA_SYNC to the initial synchronous globals call
  (anticipating asynchronous enforcement).

Aug  21  2010
- srvip.c, ttycmd.c, ttycmd.h: fixed some warnings from VS 2008 compiler

Aug  20  2010
- srvip.c, srvip.c, srvdbase.c: fix up and remove system messages while
  closing sockets during system shutdown.
  added routine _SystemExit().
- dblib.c, dbtools.h: documentation changes
- server.c, srvcore.h, tinedefs.h added routines GetModeAsString(), GetTransferMode(),
  replace ModeStr with modetoa.

Aug  14  2010
- client.c: fixed a problem removing an access lock from the client's
  lock table.

Aug  13  2010
- client.c: more checks and diagnostics concerning resetting fields of
  MCA link element when the link is closed.
- client.c, syslib.c, srvcore.h, threader.h: added a dependent link mutex
  for traversing a link's dependencies.  Plus some refactoring.
  This should fix the Vladimir concurrency problem.

Aug  12  2010
- tine32.c: fixed compile problem with the VS 2010 compiler.
- ttycmd.c, ttycmd.h, srvip.c: fixed problem in windows concerning the
  debug sockets (was trying to use windows pipe).

Aug  11  2010
- tinetype.h: some doxygen tweaks
- client.c: another tweak to the MCA element dependent link problem of Aug 5.
- many modules: removed '#include projects.def' (picked up by #include prolog.h
  farther along.  If included early, creates problem for VS 2010 compile).
- shmalloc.h, shmalloc.c, tine32.c: HANDLE -> HWND or HINSTANCE so as to
  comply with VS2010 compiler.

Aug  10  2010
- server.c, srvquery.c, srvdbase.c, srvcore.h: fixed problem identifying
  meta properties with 'embedded' meta tags (e.g. ".BIT.").  The problem
  was introduced 10.5.2010 (using an 'endswith' logic solved one problem
  but led to this one).

Aug   9  2010
- server.c: remove the CE_SENDDATA bit if there are no data to send !

Aug   7  2010
- client.c: fix bug notifying introduced when trying to protect against
  Vladymir's core signature.

Aug   6  2010
- srvip.c: fix problem checking ip nets acls for dbg pipes.
- ttycmd.h, srvquery.c, client.c: fixed some vxworks warnings
- clncmd.c: add '\n' to the sign-off command strings.

Aug   5  2010
- client.c: fix problem (?) where a dependent link to an already dependent
  MCA element link, whereby the notification flag was improperly set.
  Protect calling into NotifyClient if link mode is CANCEL or REGISTER.
- other routines:  lots of refactoring to implement debug pipe sockets
- tinedefs.h: upped revision to 4.1.9

Aug   3  2010
- client.c, tinetype.h: added routines Set/GetAllowedDependentLinks()
- srvip.c:  fixed problem in CloseIpcPipe()

July 30  2010
- dbtools.c: fix problem with 'stand alone' and 'network address resolution'
- client.c: fix bug returning the parent's linkStatus from a dependent ExecLink call.
  a bit of refactoring debug output for a connection dump.
- srvdbase.c: fix bug on unix builds scanning for acl patterned files.
  don't free AclList memory on device error if already allocated.
- almlib.c : some tweaking concerning device number validation.

July 29  2010
- client.c: for MCA single element link additions -> check whether the polling
  interval needs to be updated.
- server.c, srvip.c: corrected logic for CPU time to account for express delivery
  some tweaking on the deadband and lastScheduled logic to avoid possible schedule misses.

July 28  2010
- client.c: tweaked the message table contents a bit.

July 27  2010
- srvdbase.c: updated the manifest output to include the PID with the startup time.
- client.c, srvip.c: tweaked the msglog output candidates a bit.
  added prototype for chkIpcClnLst().
- dblib.c, dbtools.c:  fixed problems with SMALL_TINE_LIB build and 'network address resolution'.
- tinedefs.h: upped the revision to 4.1.8

July 26  2010
- ttycmd.c: move 'messages' to general (client or server) parsing area
- srvcore.h, globals.h, : add 'isInsideCallback' flag do connection table entries
- tinetype.h, client.c: add return code to CloseLink() (should not break anything!)
- client.c: refactoring to trap possible problem with canceling dependent links within
  a link callback.

July 25  2010
- srvip.c, srvip.h: add routines OpenIpcPipe(), CloseIpcPipe(), GetIpcPipeName().
- client.c: added more info to the msgTbl messages
- ttycmd.c, srvcore.h, srvdbase.c: added 'get messages' to the command line service commands.

July 23  2010
- srvquery.c, srvdbase.c: add routine SystemGetProcessId() and stock property
  "SRVPID".
  fix problem scanning for device specific property list files in
  the local name directories.
  fix problem returning the number of properties per device when property lists
  are available.
- srvip.c: move routine openIPCPipe() into srvip.c and add logic so that unix
  client applications can open a listening service pipe as per servers.
- various routines: some refactoring and further tweaks concerning client pipe
  communication.

July 22  2010
- server.c: fix problem with express delivery and non-recursive mutexes
- other routines: re-implement unix pipe transfers for client-server pairs on
  the same host.

July 19  2010
- client.c: fix problem with adding CE_RENEGOTIATE to ExecLinkEx status code.
- srvip.c: add routines Get/SetRespondToServiceRequests()
- srvquery.c: make "NPROPERTIES" return num properties for a device if a property list is
  known.
- other routines: add routines Get/SetAllowNetworkAddressResolution() and logic

July 16  2010
- clntools.c: fixed (but not finally) a problem displaying string data in thistory
- tinetype.h, srvdbase.c, hstlib.c, almlib.c: introduce Set/GetIgnoreCommonFiles()
- client.c: always bowout on incoming CANCELed subscriptions (use counter to decide
  on re-issuing the CANCEL)
- repeater.c: allow repeat of device-query precedent servers
- tineRepeater.c: allow configuring the work area size

July 15  2010
- server.c: fixed problem scanning for client - contract inconsistencies
- ttycmd.c: fixed problem parsing user function names
- srvdbase.c: added routine (SetEnforceMcaAcquisition()) to enforce MCA handshaking
- other modules: fixed some inconsistencies with strcpy() in a few places

June 24  2010
- client.c, srvcore.h:  fixed problem 'reverting' from an MCA link to single elements
  following a timeout.

June 23  2010
- client.c, server.c: primarily diagnostic additions.
  also added a consistency check for the number of contracts for a client vs the number
  of times the client shows in the contract list
  fixed strcpy problem in SendSubRequest().
  some other consistency checks on boundToId != linkId
- other modules: fixed other Wall warnings from Ubuntu compile

June 22  2010
- client.c: a consistency check tweak: incoming mca element link cannot have a dependency list
  allow binding to a MCA single element link (was blocked due to boundId).

June 21  2010
- client.c, srvcore.h: fixed update problems when starting several MCA single element
  links late in CM_DATACHANGE mode.
  fixed update problems when grouped link members are canceled within callback
  (problem if the notifying link member was the one being canceled).
  clear the boundToId and dpdLink inside getConTblEntry.
  fixed problem handling non_existent_elem (was falling thru as a success).
- server.c: added safety valve to reset the deliveryPending flag if still set but no one is stale.
- tinedefs.h, almlib.c: some refactoring (use access mode strings "TIMER" and "DATACHANGE")
- syslib.c: fix compile problem with vxWorks build (related to June 14 changes)
- tbufsrv32.c: fix the contbl capacity to MAX_LISTENERS (5000)

June 17  2010
- client.c, dbtools.c: add a 'last-minute' attempt to re-acquire an address
  (if many connections go away at the same time).

June 14  2010
- hstlib.c, hstlib.h, threader.h, syslib.c: put 'scavenger' logic on
  its own thread.

JUne 13  2010
- client.c: fixed thread safety problem, where sending a request conflicted
  with receiving data!
  Make sure lastDataSize is zeroed if no data are returned.
- server.c: fixed problem receiving a large input data set (> 65K) where an
  (total size - msg size) as unsigned short wraps.
- srvdbase.c: added CIDR security for byte 3.
  added routines SetScanForUsersFiles(), SetScanForNetsFiles()
- srvdbase.c, server.c, tinetypes.h: added CA_STATIC with property registration
  to signal a return of 'information_static' under the right circumstances.
- other routtines: refactored field name 'PollRate' to pollingInterval.
- tinedefs.h: upped the version to 4.1.7

JUne 10  2010
- client.c, srvcore.h: fixed yet another problem cleaning up MCA single-element
  links when canceled within a callback.
  add robustness check on mca links.
- toolkit.c: fixed warning.
- srvquery.c: pass 'NULL' pointer to prpQueryFunction inside npropsQuery
- other routines:  refactor a 'spelling error'.

June  8  2010
- server.c: fixed lethal bug concerning redirecting when CF_DEFAULT is asked for
  (made less subtle with May 18 refactoring).
- client.c: added CloseClientEx() method for 64-bit MatLab control-C problem
- tine32.c: use CloseClientEx() when #defined TINE64_EXPORTS.

June  7  2010
- tine32.c: fixed problem with full mutex protection when stopping the cycler thread.
- client.c: fixed another problem when canceling MCA links within a callback
- toolkit.c,tinedefs.h: first attempt to handle 'GetSystemDeviceNames()' when
  selected device redirects to another server.

June  3  2010
- client.c: fixed problem with canceled MCA links still receiving data

May  31  2010
- srvip.c: cut back on one of the scheduler debug diagnostic messages (debug > 4)

May  27  2010
- almlib.c: added the alarm table mutex to ClearAlarm().

May  26  2010
- listener.c: updated the 'string parsing' logic regarding determining the
  polling interval.  (<100 msec no longer allowed)

May  25  2010
- listener.c: fixed warning on Solaris. corrected potential problem freeing
  a 'CF_STRING' listener if link error.
- other routines:  fixed some warnings with the win64 compile with VS 8.0

May  24  2010
- server.c: minor adjustments to the 'express delivery' logic.
  (decision to call dispatch based on 'last time called' instead of
  contract polling rate; count the number of incoming contracts)
- errors.h, errlist.c, server.c, syslib.c, tinedefs.h: added code
  'async_access_required', plus access bits CA_NOSYNC, CA_SINGLE and
  associated logic to allow property registration to reject synchronous
  polling.

May  21  2010
- toolkit.c: fixed problem sending comment (possibly wrong event number) with
  event trigger.

May  20  2010
- srvquery.c, srvcore.h, swaplib.c, syslib.c: fixed a DOS compile problems
  (no relevance for other platforms).

May  19  2010
- several modules: rationalize the search logic for .csv files
  (no more global variable for 'gSubDir')
- syslib.c: protect 'WaitForMutex' against a NULL pointer.
- tinedefs.h:  upped the revision to 4.1.6

May  18  2010
- almlib.c: added almTblMutex to protect 'SetAlarm()' from 'GetAlarm() and SurveyAlarms'
  (does not appear to be necessary).
- other routines:  considerable refactoring to introduce 'RegisterMultiChannelGroupDevice()'
  allowing 'device groups' to play the 'single-element-of-a-multichannel-array' game.
  Improvements on calling into property query functions, memory cleanup.

May  14  2010
- client.c:  move the check for cdi hook outside the link table mutex in CloseLink

May  13  2010
- several routines: allow 'meta' property recognition to specify 'only local'
  (meaning: don't include the '.ARCH', i.e. systematically redirected, meta properties)

May  12  2010
- server.c: fixed bug recognizing 'phantom client' and the express delivery logic
  include logic to specify CF_DEFAULT requests on MCA properties as delivering a single value
- client.c: improve logic recognizing a DATACHANGE acknowledgement.
- almlib.c: fixed problem supplying data for 'double' alarms (using the ALM_SYSTEM_DEFAULT flag)

May  10  2010
- syslib.c: minor tweak
- srvdbase.c, server.c, srvquery.c: trap on 'endswith' for meta property
  recognition.
- server.c, srvcore.h: introduce logic to provide 'express delivery' of
  single synchronous contracts.
- tinedefs.h: move CF_BOOLEAN to the 'simple formats'
- listener.c: fix the problem with a static listener and volatile data formats

May   6  2010
- hstlib.c: fixed problem scavenging out-dated files
- client.c, srvcore.h:  added link table mutex protection in CloseLink()

May   4  2010
- hstlib.c, server.c, srvquery.c: removed some warnings
- srvdbase.c, client.c, tinetype.h: doxygen comments and refactoring
- server.c: fixed problems securing the 'data protection mutex'
- client.c: fixed problem with mca single-element link with a non-existent device

Apr  29  2010
- listener.c: added support for the adjustable-length format types.
- client.c: fixed problem returning 'property_is_mca' when an expired SINGLE
  contract is still in the contract list.
- other routines: added 'retard contract removal' and 'allow remote' to
  the settings.
  add routines: SetPreSystemInitFunction() and SetPostSystemInitFunction()
  which officially register such routines (for use in 'SRVRESET').
  add routines: Get/SetAllowRemoteManagement() + env variable FEC_REMOTE_MANAGEMENT
  fix "SRVEXIT" and "SRVRESET" so that they work properly (if allowed)

Apr  27  2010
- srvip.c, hstlib.c, srvdbase.c, server.c, srvcore.h, tinetype.h:
  introduce gServerCycleNeedsScheduler flag to avoid redundant scheduling following
  're-subscriptions' and 'CM_CANCELs'.
  add routines Get/SetSystemCycleDeadband() and fix it if routine is called.
- srvdbase.c: fixed bug mapping NAME32 to NAME16 with an XML parsing routine.

Apr  26  2010
- srvip.c: removed warning
- srvquery.c, srvdbase.c, swaplib.c, server.c, srvcore.h, tinetype.h:
  add gSchedulerInterval variable (default=0) to be able to assign the calling
  interval for the scheduler (affects latency) + add to "SRVSETTINGS", etc.
- client.c: react to 'property_is_mca' when CF_DEFAULT is requested.
- listener.c:  add check to "ALARMS", "ALMDEFS" in check to isQueryProperty.

Apr  22  2010
- srvquery.c, swaplib.c, swaplib.h, prolog.h: add stock property "SRVSETTINGS" with
  corresponding tagged structure ServerSettingStruct 'SrvSetQy'.
- srvip.c, srvip.h, dblib.c, server.c, srvdbase.c: added advanced security
  to deal with ip subnets in a more refined manner (192.168.5.0/26 etc.)
- tinedefs.h, server.c: feed property query functions with a pointer to a non-null
  pointer containing a single item containg a target (with access = CA_FIX) for
  cases where only a single property is required (e.g. GetDefaultFormatAndSize()).

Apr  21  2010
- server.c: just some macro size substitutions
- client.c, srvdbase.c: some diagnostic tweaks

Apr  20  2010
- syslib.c: fixed problem with excessive calling of property query functions
  (hasExportedProperty() -> isExportedMetaProperty()).
- server.c: remove message of "adjust number expired contracts" from feclog to dbglog.
- swaplib.c: fixed another problem with 'stringent test' for allocated struct space
  (see Mar  27 entry).
- client.c: fixed casting problem with cpp compile.
- tinetype.h: fixed a doc problem.
- tinedefs.h: upped the version to 4.1.5

Apr  15  2010
- server.c: added 'endian' information in startup log + check for proper
  build of library (exit(1) if not correct).
- srvdbase.c: tweaked getWildcardTokens().
- client.c: fixed problem when a redirection points to a non-existent server

Apr   8  2010
- errors.h, errlist.c: added 'information_static'
- server.c,srvquery.c: return information_static if a static meta property is
  being 'polled'.
- client.c: also check for gInitClientDone prior to mutex access.
  tweak getLinkIdFromCallbackId().

Mar  29  2010
- syslib.c, dblib.c, threader.h: added separate csv file mutex (hCsvMutex) as
  some csv handlers write log file entries.
- client.c: respect wildcard client calls when searching for the link id from
  the callback id.

Mar  27  2010
- swaplib.c: relax stringent test for number of allocated reg structs when there
  is no extended space (so that stock property calls are not truncated)
- repeater.c: use PrpQueryStruct if nproperties < 600
- client.c: tweak auto link error alarms so that they are not so 'eager';
  clear FecAlarms when CloseLink() is called.

Mar  26  2010
- toolkit.c: avoid some 'magic numbers' in legacy querying
- repeater.c: fixed a problem acquiring property information
  (PRPQSr4 can only acquire 10 structs - designed for getting just the overloads)

Mar  25  2010
- srvquery.c: allow CF_USTRING acquisition for meta-property .DESC
- syslib.c, client.c, threader.h, srvcore.h: added hLinkLstMutex for protection of
  notification routines.

Mar  24  2010
- server.c, srvqurey.c, srvcore.h: fixed problem terminating those persistent
  links established prior to an access lock when exclusive read is in play.
- client.c: fixed bug removing mcaList elements from the mca list
  modified behavior of 'Set' and 'Free' access lock helper routines
- almlib.c: offer more info with collapsed alarm messages
  set the 'snapshot' timestamp to that of the dynamic set for collapsed alarms.

Mar  19  2010
- server.c: fixed problem with access lock and CA_XREAD

Mar  18  2010
- syslib.c: fixed lethal bug concerning mutex protection when NO_MUTEX_TIMEDLOCK
  is #defined.

Mar  17  2010
- toolkit.c, srvcore.h: added routine tokenizeFullName().
- tputget.c, clntools.c: allow separate input and output sizes.

Mar  16  2010
- dblib.c, threader.h : relax mutex protection (use hLogMutex) on csv Reader/Writer
  (e.g. cdi uses these routines before initializing tine).

Mar  15  2010 (the Ides)
- various routines:  refit of 'SMALL_TINE_LIB' logic so that DOS build compiles and links.
  remove some warnings under vxworks.
- srvdbase.c: accept 'device-default-user.csv, device-default-ipnets.csv, etc.'
  as single default files for device and property acl lists.

Mar  14  2010
- errors.h, errlist.c: change 'access_suspended' to 'access_locked'
- server.c: return access_locked when an access lock is in force (was returning access_denied)
- other routines: implement network access at the eqm level and the property level
  implement both users and network access at the device level.
  update stock properties and tty commands to return property and device specific lists.

Mar   9  2010
- toolkit.c: make GetSystemDevices(), GetSystemProperties() return the full return
  code (including the CE_SENDDATA).
- repeater.c: modernized a bit more.

Mar   8  2010
- hstlib.c: a tweak or two concerning points of interest and rastering
- srvdbase.c, srvip.c: add macro condition !FS_READONLY to security file update properties.

Mar   5  2010
- srvdbase.c: fixed problem resetting an eqm's idle flag when
  SetServerIdleState() is called too 'soon'.

Mar   4  2010
- client.c, srvcore.h: fixed a potential thread safety issue concerning
  call redirection (was using a global redirection index variable).
- other modules: added documentation and a few missing 'Get' routines.

Mar   3  2010
- client.c: really fixed problem waiting for sync calls to complete when a
  redirection ensues.  (threading model dependency)

Mar   2  2010
- client.c: fixed problem waiting for sync calls to complete when a
  redirection ensues.

Feb  28  2010
- client.c: add 'LastIncomingLinkId' for use in GetCompletionDataType(-1)
  (okay for single-threaded builds).
- tcycler.c: added TINE_START_CYCLER env variable and macro #define.

Feb  26  2010
- server.c: trap and attempt to correct inexplicable condition where
  multi-threaded eqm calls block contract removal.
- hstlib.c: set the timestamp to the earliest possible data time for a
  npoints history query.

Feb  25  2010
- server.c: reset gEqmListSize to 0 when FreeEQPModules() is called.

Feb  24  2010
- client.c: fixed bug scanning thru packet multicast subscriptions
- other routines:  fixed some documentation problems.

Feb  22  2010
- server.c, tinetyp.h: Get/SetMinimumAllowedPollingInterval() introduced
- other routines: introduce logic (handshaking) to adjust requested
  polling interval when client receives 'invalid_interval'.
- server.c: fix bugs concerning 'sendMessageToCaller' when CM_STREAM is used
  1) msgsize must be a UINT32, 2) must use static payload buffer (not stack)
  3) don't lock the tcpBucketMutex in call to findBucket() in getConsumerAddress.
- syslib.c: don't call dbglog on socket errors if gClientIsClosing is TRUE.
- iplib.c: (Windows only) in soperror() force LANG_ENGLISH in error message
  (work-around for FormatMessage with MUI in play).
- client.c: clear the autoLinkError alarms as soon as any response comes in
  (i.e. associate a link_error only with timeouts)

Feb  19  2010
- srvip.h, iplib.c, server.c: check for special port initialization also at
  first chance server initialization.
- server.c, tinetype.h: add Get/Set routines for gRetardSingleContractRemoval
  and update dox.
- srvdbase.c: fixed problem distinguishing between a meta property and single-
  field structure access.

Feb  16  2010
- ttycmd.c, ttycmd.h: protect RegisterUserCommand() and RegisterUserFunction()
  from registering the same thing twice!
- other routines: some refactoring and documentation improvements.
  some more debugging diagnostics.

Feb   9  2010
- server.c, srvdbase.c, tinetype.h, syslib.c:
  added functionality to allow CA_XREAD switch to use access control for READs
  when CA_READ is absent in property registration.
- hstlib.c: make systematic construction of .ARCH meta properties respect
  FAILOVER master/slave information.

Feb   8  2010
- listener.c: make sure heapchk() is only for WIN32

Feb   5  2010
- toolkit.c : make PutvaluesAsAny() handle different string types better.
- syslib.c, tinedefs.h :  added routines isStringFormat() and isSimpleStringFormat()
- srvdbase.c: single-field struct calls check last '.' in property name for field.

Feb   4  2010
- client.c: fixed bug concerning removing group members when a link is closed.
  fixed inexplicable bitfield bug regarding single-field acquisition.
- server.c: fixed problem recognizing a registered property (for meta overloads)
  when property query functions are in force.
- other routines: documentation changes.
- tinedefs.h: upped the revision number to 4.1.3

Jan  28  2010
- several routines: VxWorks specific tweaking so that versions 5.x and 6.x
  both compile and run correctly

Jan  27  2010
- syslib.c: relaxed condition on 'property exists' in SystemScheduleProperty()
  (problem with property query function).
- srvdbase.c: allow re-registered properties to update the 'description' info
- srvip.c, srvip.h: added routines Set/GetTcpConnectionTableSize().
- other routines: fixed some VxWorks warnings.

Jan  25  2010
- errors.h, errlst.c: added 'low_disk_space', 'warn_disk_space'
- hstlib.c, hstlib.h, almlib.c, almlib.h: auto alarms for low disk space
  (if SetFreeBlocksAlarmThreshold() is called).
- shmalloc.c: fixed bug releasing Kernel mutex (could have caused a deadlock).
- other routines: more diagnostic output on socket errors.
- swaplib.c: increased default registration for ALARMDEFS size to 256
- iplib.c: fixed tcp/ip bug when MULTITHREADED build declares gRunServerInSeparateThread = FALSE
  (e.g. VxWorks).

Jan  19  2010
- tinedefs.h, syslib.c: fixed some inconsistencies converting
  some data types from string to format code and vice versa.

Jan  14  2010
- client.c, server.c, prolog.h, srvcore.h: introduce routine
  makeValidPollingInterval() to trap 'funny' polling intervals.
  Introduce routine SetServerCycleIdle() and SetClientCycleIdle().
  Some tweaks involving waiting for hLinkTblMutex.
  Add up to 50 retries for semaphore_busy error in _attachLink().
  Let single links keep the previous timeout counter if re-attaching.
- syslib.c: fix bug in MAC compile of latest sources (missing declaration)
- tine32.c: tweaked the cleanup.

Jan  12  2010
- syslib.c: (solaris workaround) use a sched_yield() if sem_timedwait() unavailable.
- tindefs.h, server.c, syslib.c: added signal PS_CALLED
- other routines: eliminated some warning that have crept in ...

Jan  11  2010
- errors.h, errlist.c: replace error code def_area_full with mcast_access_required.
- srvdbase.c, server.c, client.c: implement logic to enforce MCAST access.
- syslib.c and other modules: fixed all interpretation of the 1st 2 bytes of a
  data header to be unsigned short!
- syslib.c, threader.h, client.c: added hNotificationSemaphore to handle synchronous
  notification properly for multi-threaded builds (no spinning and no latency).
- clnip.c, srvip.c: make sure maxFdSets is always big enough.
- server.c, typedef.h: defacto non-reentrancy for all background tasks.  Set/Get
  routines to override this default.
- almlib.c: don't log 'errors' in RemoveAlarm() any more.
  (SVN  2117)

Jan   6  2010
- syslib.c: tweaked the previous solaris work-around (was too stringent)
  (SVN 2116)

Jan   5  2010
- syslib.c: add a solaris work-around for multi-threaded server startup with delayed
  initialization.
- server.c: fixed bug releasing a mutex during delayed server initialization

Jan   4  2010
- client.c, srvdbase.c: fixed some warnings on Solaris
- srvdbase.c: more diagnostics in fec.log when pthread_create fails
  (SVN 2114)

Jan   2  2010
- swaplib.c, swaplib.h: added routine getFieldFormat()
- srvquery.c: allow NAME64 format for .EGU meta property
- server.c: use a good guess for the CF_DEFAULT format for meta properties
- client.c: allow CF_DEFAULT to use the field format for a single-field structure call.

Jan   1  2010
- client.c: fixed notification bug regarding grouped callbacks with mca single-element links
- srvdbase.c: fixed some compile problems with the SMALL_TINE_LIB switch

Dec  31  2009
- hstlib.c: fix 'deadband' for millisecond timestamp storage at 1 ms instead of 10 ms
- srvdbase.c: allow SystemScheduleProperty to accept 'device' information ("property<device>")
- client.c: fixed problem recognizing dependent links in group callbacks
- server.c: allow input arrays of structs with variable length format
- other modules: implemented and tested logic to handle 'has_bitfield_tag' and 'has_structure_tag'
  i.e. single-field links from bitfields and tagged structures (not yet in local history system)

Dec  23  2009
- hstlib.c: minor tweak in error handling
- iplib.c: make vxworks variant of getmyipaddr() allow configuration of the interface name
  (and try more default variations).
- dbtools.c: fix compiler problem on VxWorks regarding address re-acquisition bug fix of Nov 3.
  (SVN: 2108)

Dec  19  2009
- server.c: fix bug in contract signal function.
  make sure signal function are called for SINGLE links.
- almlib.c:  don't change alarm timestamp with additional 'oscillation' notifications.

Dec  18  2009
- tinedefs.h: allow string "INT8" to map to format CF_BYTE
- tinetype.h, srvcore.h, srvdbase.c, server.c: add general signal routines
  for contract signal functions plus logic.
  (SetContractSignalFunction(), sendContractSignal(), etc.)

Dec  11  2009
- many routines: implement relevant logic to handle variable length formats within
  structures and as arrays (includes CF_STRING, CF_AIMAGE, CF_ASPECTRUM).
- hstlib.c: return 'device_not_connected' if a MCA access passes a device not contained
  in the history.
- upped the revision to 4.1.2 (SVN 2101)

Dec   4  2009
- almlib.c, almlib.h: added alarm data change window (default 30 seconds) as required time interval
  for updating the alarm timestamp. (SVN 2099) (java: 31240)

Dec   3  2009
- almlib.c, almlib.h: added functionality for autoLinkErrorAlarms.

Nov  30  2009
- server.c: fixed initialization problem when the multi-threaded serverCycle starts 'too' quickly
- hstlib.c, hstlib.h: implement better points of interest handling.
- almlib.c, almlib.h, dblib.c: add ALARM_TAG_HIGH, ALARM_TAG_LOW csv columns and xml tag + logic.
- other modules: additional diagnostics.

Nov  26  2009
- tcycler.c: improved some logic for a vxworks client-only startup
- threader.c: added prototype for SystemStartTimerCycler()

Nov  25  2009
- srvcore.h, server.c, client.c: introduce hasVolatileDataSize()

Nov  24  2009
- server.c, client.c, srvquery.c: fixed some 'size' issues concerning accessing CF_HISTORY type.
- client.c: fixed problem notifying mca dependent links with the CM_WAIT flag set.
- tcycler.c: added the more satisfying-sounding routine SystemStartCycleTimer() (in addition to SystemSetCycleTimer()).

Nov  23  2009
- many modules: implement structures with variable length format types
  (tested to 0th order); involved a bit of refactoring, etc.
  tinedefs.h: upped version to 4.1.1

Nov  12  2009
- several modules: fixed some warnings with an intel gcc compiler for vxworks.
  errors.h, errlist.c: added error code 'invalid_reference'

Nov  11  2009
- server.c: cosmetic change to startup output

Nov  10  2009
- threader.h: added a prototype for VxWorks
- tcycler.c: added macro #defines for WIN32, UNIX, and VXWORKS
- iplib.c: introduce environment variable FEC_PACKETMTU

Nov   7  2009
- iplib.c: added a small diagnostic change

Nov   5  2009
- tine32.c, syslib.c, threader.h: separate client mutex resets from the rest.

Nov   3  2009
- dbtools.c: fixed bug in async address re-acquisition where context was not being considered.
- almlib.h: fixed spelling error (cosmetic change only)
- client.c: more diagnostics when sendToPeer() fails.

Oct  28  2009
- server.c: fixed bug concerning 'retrying' a .HIST (i.e. multi-threaded stock) call.
- client.c: don't resubmit CM_CANCEL unless counter > CTR_REMINDER !

Oct  25  2009
- client.c: don't resubmit CM_CANCEL for network links
- server.c: don't attempt to find prp and send access signal when property query function
  is in use.

Oct  24, 2009
- client.c: re-submit CM_CANCEL if a canceled link is still coming in.
- server.c: no invalid_link message back if a new link is canceling.

Oct  23, 2009
- several source modules: a better fix of the thread-safety + data time stamp problem
- tinedefs.h, syslib.c: export new routine GetFormatFromString().

Oct  22, 2009
- many source modules: continue refactoring.
  incoming globals and multicasts on separate threads
  allow renewal length up to 32767
  enforce CM_RECEIVE on access to GLOBALS parameters
  fix logic to allow recvNetGlobal to be carried by attachLink
  make access locks apply to specific eqm and not to the whole fec.
  introduce exclusive read in access locks
  fix thread-safety problem in assigning data timestamps (stock calls vs eqm calls)

Oct   1, 2009
- many source modules: expand last round of changes for unix, vxworks builds.
  add documentation
  officially declare release 4.1.0

Sep  29, 2009
- many source modules: refactoring transport logic for more effcient use via tcp (multi-threaded build only)
  introduce FORCE_SHARED_MEMORY environment variable
  scheduleProperty Thread for lazy scheduling
  do not log net read/write error in fec.log
  remove assignment of TCP or STREAM inetProtocol from FecTbl
  bug fix in doScheduler(): cl->lasttime = isScheduled ? *tv : tv_stamp;
  make use of rcvbuf, sndbuf for tcp and srv multicast sockets

Sep  19, 2009
- client.c: in mcaLink logic -> handle 'grouped' single-element links properly (single callback).

Sep  17, 2009
- server.c: added a 'FLUSH_WINDOW' and export FlushContractTable() for an effective 'runtime' restart
  signal (exotic feature).
- dblib.c: added a strntrm() routine to complement strtrm().
- other routines: allow the dynamic adding/subracting of ip nets to take lists (as in the case of users).
  Also, force rewrite of users.csv and ipnets.csv, rather than simple append (corruption was possible
  if the developer had added his own csv columns).

Sep  16, 2009
- srvquery.c, srvip.c, srvip.h, dbtools.h: add stock property "DELIPNET" + logic.

Sep  10, 2009
- dblib.c: fixed bug in csvWriteFile where it was not writing the correct number of chars to file.
- swaplib.c, srvdbase.c: irrelevant tweaking concerning variable length format types (not yet in use).

Sep   7, 2009
- srvcore.h, srvdbase.c, server.c: introduce Set/GetEnforceMultiChannelAccess()
- other routines: tweak (non-active) logic for including variable length formats in structures.

Sep   3, 2009
- almlib.c, almlib.h: introduce ALM_SYSTEM_DEFAULT flag to duplicate an alarm in the default category
- toolkit.c: fix legacy problem with parseFullDeviceName().

Aug  29, 2009
- srvdbase.c, typedef.h: introduce the routine SetSizeDeviceCapacity().
- syslib.c: introduce 'gSchedulePropertyLazy' flag and associated routines Get/Set.

Aug  28, 2009
- client.c: don't add ".HIST" to a redirected meta property to the central archiver.
- srvdbase.c: use full subsystem name when copying default for registration!

Aug  27, 2009
- client.c: fixed bug in mca-logic (assigning timestamps, etc.)
- server.c: trap on false declaration of MCA (size must be > 1 when returning property_is_mca).
- tinedefs.h: upped the revision to 4.0.11

Aug  26, 2009
- srvdbase.c: fixed bug in the recent VxWorks work-around (concerning FS_DELIMITER)

Aug  25, 2009
- many routines: refactoring concerning #define SMALL_TINE_LIB and MS-DOS build
- server.c, srvdbase.c: VxWorks specific initialization changes

Aug  21, 2009
- errors.h, tinedefs.h: introduce macro compile switches tine_decorate_constants and TINE_DECORATE_CONSTANTS
- srvip.h, tinetype.h: move SystemAssignBufferSpace prototype and add doxygen documentation to several routines.

Aug  20, 2009
- srvdbase.c: added env variables FEC_LOCATION, and <EQM>_SUBSYSTEM
  add a joinEnsGroup() if AssignNumDevices() is called.

Aug  19, 2009
- tput.c, tputget.c: corrected help message
- twait4target.c: initial version
- clntools.c: introduce twait4target
- tinetype.h, server.c, srvquery.c, srvdbase.c: introduce SystemGetStartupCommand() and SystemGetStartupDirectory(),
  stock properties SRVCMDLINE and SRVCWD as well as associated logic.

Aug  14, 2009
- syslib.c: (vxWorks) make sure kernelTimeSlice() always gives at least 1 tick!

Aug  13, 2009
- server.c: force 'stale data' with dangling client going out of scope (in order to remove client from contract)

Aug  12, 2009
- srvcore.h: cosmetic (removed some white space).
- threader.h: add prototypes for SystemSetCycleTimer().
- tcycler.c: add to libtinemt.so build

Aug  10, 2009
- server.c: logic tweaks concerning 'nExpiredContracts' plus a check to ensure that num active
  contracts = ncontracts - nExpiredContracts.
- command line modules: fixed parsing of floating point number input.

Aug   6, 2009
- syslib.c: (VxWorks) don't lower the priorty for the background task. add call to setKernelTimeSlice()
- iplib.c: fixed possible NULL pointer exception in multti-threaded TCP communication.
- client.c: continue to find free slot if a bound entry is discovered.

Aug   5, 2009
- server.c: call cdiSystemInitHook() in lastMinuteInitialization if not 'delayed'.
- syslib.c, hstlib.c, dblib.c, project.def: moved #include <sys/vfs.h> for the UNIXes and add
  #include <sys/statvfs.h> and #include <sys/mount> for MACOS.
  don't lower the priorty for any other spawned vxworks tasks besides the background task.
- threader.h:  introduce vxwReleaseSemaphore().
- bufsrv.c: allow prpSchedule flag to pass a designated timestamp

Aug   4, 2009
- dbtools.c: don't log new client address entries from the file cache if server is the ENS.

June 23, 2009
- many routines:  refactored all references to erlst[cc] to cc2str(cc)

June 22, 2009
- srvquery.c: fixed tmp cache allocation bug concerning property query functions with > 151 and < 292 properties

June 17, 2009
- toolkit.h: fixed some documentation problems

June 16, 2009
- srvdbase.c: added carriage return at end of file (avoid solaris warning).
- iplib.c, srvip.h: added routines and logic to set the mulitcast address (mask) away from the default.
- client.c, server.c: remove redundant prototype (which was confusing doxygen)

June 14, 2009
- srvdbase.c, dbtools.c, dbtools.h: added flag gIgnoreVolatileAddressCache for use by the ENS

JUne 13, 2009
- iplib.c: trap inadvertant loopback address for my ip; log the initial results of getmyipaddr().
- srvquery.c: improved default output for DEVDESCRIPTION.

June  9, 2009
- srvquery.c: fixed bug concerning stock property "DEVDESCRIPTION".

June  6, 2009
- listener.c, listener.h: fix bug checking for idle time

May  31, 2009
- server.c: check isMetaProperty also for forced mca transfers.

May  29, 2009
- client.c: prepare routine isGlobalsLink() (not yet used).
- srvdbase.c: trap NULL eqm in MakePropertyFileName().

May  28, 2009
- tinetype.h, srvdbase.c, server.c: added 'gRejectOverloadedMetaProperties' and Get/Set routines.

May  25, 2009
- client.c: allow a cycle number 'key' to be set via environment
- dblib.c: expanded the string space cushion in csvReadFile().

May  24, 2009
- toolkit.c: make acquireAndRegisterStruct() recursive.
- hstlib.c: protect against 'creeping deadband'; use new central archive systematics for .ARCH

May  20, 2009
- syslib.c, tinedefs.h: export itof() as new routine GetFormatAsString().
- tbufsrv.c, tbufsrv.h: added routines GetRegisteredPropertyInformation() and TriggerEvent()

May  18, 2009
- client.c: fixed bug in copying data for mca elements.
- tinedef.h: rearrange doxygen documentation.
- dbtools.h: include gIgnoreAddressCacheOnUnknownAddress in header file.

May  15 2009
- dbtool.c: added (undocumented) variable gIgnoreAddressCacheOnUnknownAddress for use within the GENS.
- listener.c: parse the input globals string properly!

May  14 2009
- almlib.c: extra output in feclog when 'RemoveAlarm()' fails.

May  12 2009
- toolkit.c: fix bug in GetDevicePropertyEGU() where max and min were 'reversed'.

May  11 2009
- swaplib.c: fix bug in delivering structure format.

May   8 2009
- iplib.c: tweak sendStreamData to avoid possible infinite loop
- dblib.c: fix string length problem in namcmp
- dbtools.c: reinit index counter inside GetAddressFromNameFile

May   7 2009
- iplib.c:  fixed sendStreamData so that unlimited data sizes (tested to 250 MB) can be sent.
- client.c: allow mcaCallback to do data reformatting.
- tinedefs.h, toolkit.c: refactoring for doxygen

May   4 2009
- most routines: lots of refactoring of names; implemented and test mca logic to enforce mca access
  for single element contracts (active when revision > 4.0.10).
- iplib.c, srvip.c: add sockopt FD_CLOEXEC for the UNIX guys.

Apr  30 2009
- tinedefs.h: upped the revision number (4.0.10)
- srvip.c, iplib.c: added sockopt FD_CLOEXEC for UNIX builds
- almlib.c : fixed problem with 'highest severity' in the alarms snapshot.

Apr  29 2009
- syslib.c: lowered the priority (by 1) for the launched vxworks tasks.
- other routines: added stock property "SRVCOMMANDS" and a write access ring buffer table.
  fixed some vxworks specific compiler problems.

Apr  28 2009
- iplib.c: fixed the 130 MB problem (ENOBUFS -> break the stream up);
  added SetMaxTcpMessageSize() and GetMaxTcpMessageSize() to adjust the default (100 MB) if necessary.
- other routines: added stock property "CONNECTIONS" and logic to retrieve the current client-side
  connection table.

Apr  23 2009
- almlib.h: added #definitions for almDISABLED and almSUPRESS
- dblib.c, dbtools.c: added a currentDataCapacity field to the xml handler (there was no string length checking!).
- client tools: added a /t timeout switch

Apr  22 2009
- server.c: tweaked wildcard logic some more:
  -> handle 'illegal_property' at the server interface
  -> categorically don't 'forward' the wildcard call if not a simple format and not CF_USTRING (doocs)
- tbufsrv.c: protect against invalid number of elements in pushBufferedData().

Apr  21 2009
- client.c: relax the timeout threshold for addr reacquisition for async singles to 10 instead of 30
  only start watchdog link if mode is DATACHANGE or EVENT
  tweaked the wildcard link logic a bit.
- server.c: fixed bug where a corrupt header could end up canceling the wrong contract

Apr  20 2009
- server.c: don't check for 'even bytes' if extended string set is present.
  some tweaks regarding debugging output.

Apr  19 2009
- dbtools.c: don't log address resolution errors from the local cache files.

Apr  16 2009
- almlib.c: relax some of the default alarm severities.
- server.c: trap info bits and 'not_posted' in renegotiateContract().
  explicitly NULL the clientList when removing a contractTable List entry.
  fix problem with extended string sets arriving in a packed request.

Apr  15 2009
- most modules: refactoring to remove warnings in VISTA
- several modules: use #typedef SOCKET where necessary in order to make use of the winsock2 header in windows.
- client.c: ensure supressNotification is FALSE within CheckConnections!
- iplib.c: compatibility with VISTA: close and reopen socket on bind error (finding first free client port).

Apr   1 2009
- srvdbase.c: fixed bug in registering a property alias late if the 'hash payloff' threshold hadn't been met.

Mar  28 2009
- srvdbase.c: fixed bug in (not) allocating alias table when when RegisterPropertyAlias() is called.
- srvquery.c: introduced (undocumented) flag gAppendProperyAliasNamesToQueries.

Mar  27 2009
- client.c, global.h:  make the default globals heartbeat 1 second!  Also update globals link status with link_timeout
  even when there's no callback attached!

Mar  23 2009
- syslib.c : fixed unix-specific bug relating to multi-threaded build and local histories. HistoryTableMutex was
  incorrectly initialized.

Mar  17 2009
- tinedefs.h : upped the revision 4.0.9
- srvquery.c : straightened out some of the behavior for some stock properties.
- client.c: another minor tweak in the address reacquisition.

Mar  16 2009
- dbtools.c, client.c: fixed a potential 'lock-out' in address reacquisition following a link
  timeout.
- utility routines: added more command line options to some of the command line tools.

Mar  13 2009
- srvdbase.c: check for failover master/slave with every entry to getRegisteredExports().
- iplib.c: fix bug concerning closing stream socket if connection goes down.

Mar  11 2009
- (No kernel changes)
- clntools.c: added tputget and tsendrecv to the client tools.
- tbufsrv.c: added cycle trigger routines.

Mar   7 2009
- toolkit.c, toolkit.h: add routine GetValuesAsStringEx() as counterpart to PutValuesFromString()
- srvdbase.c, srvcore.h: add routine GetCallerInformation() (all relevant information about the caller(s))
- other routines: some refactoring concerning field names inside the CLN struct.

Mar   6 2009
- toolkit.c: allow GetValuesAsAny to handle any like formats
- clnip.c: don't try to close socket if it's 0

Mar   5 2009
- globals.h, iplib.c: added Set/GetGlobalsHeartbeat()
- client.c, srvcore.h: changed prototype for UnregisterCycleTriggerFunction() to include the reference
  and use the reference as well as the callback address to distinguish list entries.
- server.c: more checks and balances concerning 'phantom clients' (Mark's Problem).
- toolkit.c: allow PutValuesFromAny to handle like formats regardless of what they are.

Mar   4 2009
- server.c, srvip.c: protect the global users list with the clientTable mutex
  on deliverPending check for valid clients
  fixed bug in removing phantom client

Mar   3 2009
- tbufsrv.c: allow 'options' in the attachServer call (e.g. INIT=SRV)
- toolkit.c: modernize GetTargetPropertyInformation()
- client.c: fixed bug assigning completion size for CF_STRING
- other modules: lots of refactoring
- tinedefs.h : Revision 4.0.8 (skipped one to sync with debian package)
- tinetine.h, srvcore.h: documented Get/SetPropertyBuffer

Mar   2 2009
- server.c: check for phantom clients (the deliverPending problem).

Mar   1 2009
- hstlib.c: another points-of-interest tweak.
- syslib.c, tinedefs.h: added routine getTransportMode().

Feb  28 2009
- hstlib.c: don't add points-of-interest if it fills the caller's buffer.

Feb  27 2009
- hstlib.c:  ignore points-of-interest files if they are too larger (> 100 records)

Feb  26 2009
- server.c, syslib.c, client.c, srvcore.h, threader.h: introduced ClientTableMutex to avoid changing a contract's client
  list while delivery is underway.
- client.c: copy data and callback for dependent links within _attachLink().
- srvcore.h, syslib.c: only write 'memory overwrite' messages to fec.log once!
- server.c, srvdbase.c, srvcore.h: fixed bug concerning open write access (introduced when 'users' was made eqm specific).
  and finally for the day: a bit of tweaking in cleaning up mutex resources (labview problem?).

Feb  24 2009 (and the bugs go on ..., and the bugs go on ...)
- almlib.c: remove CF_NULL from the non allowable alarm data formats (as an added precaution).
- dblib.c: getColumnStr was appending a '0' even if the string buffer's limit was reached ! (win64 build caught this).

Feb  23 2009
- client.c, srvip.c, clnip.c: fixed a bug where normal tcp sockets and stream sockets were confused on
  reassigning inactive links.
- almlib.c: fixed bug in checking whether invalid alarm data formats block an alarm definition if data size = 0

Feb  20 2009
- client.c, srvcore.h:  make watchdog links ignore stock properties
- swaplib.c, swaplib.h: doxygen documentation for GetStructSize().

Feb  18 2009
- syslib.c: no fec.log if !gIsRunningAsServer

Feb  17 2009
- srvdbase.c: fixed config checking bug; make failover send notification to ClsLog.

Feb  16 2009
- most modules: reordered the #includes so that the Visual Studio 2008 compilers find what they're looking for.
- srvdbase.c, server.c, srvcore.h, tinetype.h: introduced 'failover' logic and routines.

Feb  13 2009 (a Friday)
- iplib.c, clnip.c, server.c: fixed bug where STREAMs sent a useless and unwarranted 2 byte payload.
  cleanup loss of STREAM client properly (reset deliverPending upon loss of connection).
- server.c, srvdbase.c, srvcore.c, syslib.c: ensure that 'RemoveEquipementModule' also gracefully
  terminates related threads.

Feb  12 2009
- errors.h, errlist.c: replace unused 'wrong_type' with 'invalid_transport'.
- other routines: bug fixes concerning CM_STREAM and cleanup routines.
- client.c: make watchdog links check the redirection information

Feb  11 2009
- iplib.c : don't close stream socket on ENOBUFS; use _LSWAP instead of LSWAP in sendStream.
- other modules: make gServerWaiting flag apply to the historyCycle() and alarmCycle() and ScheduleProperty(),
  add SetInitializedIdle() to allow the setting of the default eqm idle state.
- server.c: fixed bug in assigning initial string space for CF_STRING contracts
- srvip.c: add a KEEPALIVE to the server parent tcp sockets.
- iplib.c: fixed bug freeing the tcp bucket memory

Feb  10 2009
- server.c, clnip.c, iplib.c, srvip.c : fixed a couple of bugs regarding CM_STREAM
- srvcore.h, dbtools.h, srvquery.c, syslib.c : associate 'users.csv' with an eqm.
- errlist.c, errors.h : recycle some unused error codes and added 'deprecated' and 'not_supported'

Feb  6 2009
- hstlib.c: fixed problem with points-of-interest
- srvdbase.c, tinetype.h: methods to get the reservered device name space length

Feb  4 2009
- clnip.c : repaired CM_STREAM bug on non-intel systems (swapping issue).
- other modules: lots of doxygen documentation updates.

Feb  3 2009
- client.c : allow AttachLink() + CM_RECEIVE to pass the context AND server along with the keyword
  property on to recvNetGlobal(). (this seems to have been missing in the note on Jan 13).
- syslib.c, srvdbase.c, server.c, globals.h: introduce Set/GetGlobalTableCapacity() and
  Set/GetGCastTableCapacity() for setting the global table capacities away from the default.
  Also use separate variables for client-side globals tables (recv) and server-side globals
  multicast tables (send).

Feb  2 2009
- srvdbase.c, server.c, syslib.c, srvcore.h: added property signal functions and property access lists
  to registered properties. New routines RegisterPropertySignalFunction(), AssignPropertyAccessList().
  do a better job of determining whether an eqm is busy inside removeCOntract.
- client.c, syslib.c: prevent watchdog on connections to allow CM_STREAM connections to timeout.
  only allow timeouts on establishing connection. send net_read_error if the stream connection goes down.
- other routines:  some re-factoring.

Jan 31 2009
- srvdbase.c, typedef.h: added RemoveEquipmentModule() routine (for use by the GENS).

Jan 30 2009
- most routines: major refactoring of many socket related variables and routines (also delivery routines)
  introduce transport type CF_STREAM.
- srvdbase.c: don't allow legacy input of the operating system parameter to override the platform build value.

Jan 23 2009
- syslib.c: calculate system clock tick based on OS; no static cache of clock tick for VxWorks
- other routines: preparation for tagged structs using CF_STRING

Jan 22 2009
- several routines: remove some really pesky -Wall warnings from the posix builds
- hstlib.c: take a few steps to ensure scheduled history calls come through
- client.c: for din with tagged struct, use rawlen instead of size (bytestream size instead of struct size).
  fixed bug (again!) regarding update vs data timestamps of incoming globals
- syslib.c: fixed bug in WaitForMutex() implementation for VxWorks (a Ticks vs millisecond problem).

Jan 21 2009
- client.c, swaplib.h : prepare structStruct for handling a string space (not yet implemented)
- prolog.h: removed unused macros
- others: removed some -Wall warnings

Jan 17 2009
- client.c, srvcore.h: fixed a 'spelling problem'! suppressNotification().
- tinetype.h: fixed doxygen documentation.
- syslib.c: allow FEC env variables to begin with FEC_

Jan 16 2009
- syslib.c: added a gettimeofday(&thisCycleTime) to SystemScheduleProperty.
- other routines: considerable doxygen documentation additions.

Jan 15 2009
- several modules: some code reshuffling for doxygen output.

Jan 14 2009
- hstlib.c: tweaking the location of historyTableMutex.
- tinedefs.h: make format string "STRING" point to CF_STRING (and not CF_TEXT)
- prolog.h, syslib.c: removed useless VxWorks routine.

Jan 13 2009
- client.c, globals.h: fixed sychronization of network globals regarding local and remote timestamps,
  allow attachlink to specify context, server, and property for CM_RECEIVE.
- hstlib.c, hstlib.h: insignifcant tweaking + make useMinimalStorage=FALSE as default!

Jan 12 2009
- hstlib.c and others: add hHistoryTableMutex protection to simulatenous history table access from
  remote call and the local history call. Make the default for gUseMultithreadedStockProperties FALSE
  when FS_RDONLY is #defined (e.g. VxWorks)
- server.c, client.c and others: add gSystemRunningStandAlone flag, TINE_STANDALONE env variable
  for running client/server pairs on a stand-alone machine without ENS access.

Jan  9 2009
- tinetype.h, srvdbase.c: added routines SetExportedContext() and SetExportedSubSystem().
- client.c, server.c, srvcore.h: refactored some #defines

Jan  8 2009
- syslib.c: in ScheduleProperty() only call doScheduler() if CA_NETWORK scope.
- srvquery.c: fixed bug in returning the system version. fixed warning.
- hstlib.c: fixed bug establishing the current local history data pointer for calls.

Jan  7 2009
- hstlib.c: don't allow the current working pointer to be included in short-term history calls.
  make use of desired sample inside the short-term history calls.
- srvquery.c: set the number of returned history points properly

Jan  5 2009
- several routines: introduced format type CF_STRING and logic.
  (present data object as a string array to the user).
- tinedefs.h: upped the revision number to 4.0.6
- srvquery.c: allow "DEVICES" and "PROPERTIES" to use CF_STRING.
- toolkit.c: allow PutValuesFromString() to use CF_STRING

Dec 30 2008
- client.c: some link watchdog tweaking. let the watch dog polling interval 'learn'.

Dec 29 2008
- errors.h, errlist.c: add error code not_applicable.
- client.c, srvcore.h: added link watchdog mechanism for CM_DATACHANGE links for quick notification of
  link timeouts (poll on SRVSTARTTIME).
- srvquery.c, srvcore.h: added eqm specific startup time (reset when SRVINIT or SRVRESET is called).
- other routines: refactoring.

Dec 22 2008
- errors.h, errlist.c: add error code server_idle.
- srvquery.c : add stock properties "DEVDESCRIPTION", "SRVIDLE".
- several modules: add 'isidle' flag to the equipment module plus logic and routines for setting.
- srvdbase.c: add "DEVICE_DESCRIPTION" column/tag to devices.csv and fec.xml.
- server.c, srvdbase.c: add IsFecProperty() and allow FEC-specific stock properties to work even
  if a equipment module is not currently registered.

Dec 20 2008
- hstlib.c: prefer percent tolerance in points-of-interest logic.
- syslib.c: use 'B' semaphores in VxWorks instead of 'M'.

Dec 19 2008
- iplib.c: removed a 'trigraph' in a comment to avoid a -Wall warning
- hstlib.c, hstlib.h: prefer 'range' in points-of-interest logic.
  don't allow more than 2 points of interest within raster

Dec 18 2008
- hstlib.c: tread depthLong = 0 the same as depthLong < 0.
- numerous modules: fixed some warning that appear with Wall.
- numerous modules: make wrappers to treat VxWorks tasks as threads and force MULTITHREADED.
  find current task priority and options and reuse when launching new tasks.

Dec 17 2008
- hstlib.c: fixed bug regarding reallocation of hst table.
- syslib.c, srvdbase.c, prolog.h, threaded.h: map vxworks tasks to threads

Dec 15 2008
- srvip.c: change wait from 0 to -1 on the kernel mutex in the init server routine (should have no effect).
- almlib.c,almlib.h,srvcore.h,server.c,srvdbase.c: make sure clear alarms for each eqm is called.

Dec 14 2008
- hstlib.c, hstlib.h: allow dynamic growth of history table (introduce HISTORY_RECORD_CAPACITY_ADD)
  fix bug in assigning system stamps within the short term storage if raster > 1
- server.c,srvdbase.c: check only up to nHistoryRecords when freeing memory.

Dec 13 2008
- hstlib.c, hstlib.h: fix bug in establishing lts file name. add routines SetPointsOfInterestRangeFactor(),
  SetPointsOfInterestToleranceFactor(), SetMaximumHistoryTableRecords().
- srvquery.c: add a TODO statement

Dec 12 2008
- hstlib.c: do not allow points-of-interest readouts a raster > 1.
- srvdbase.c: assure a consistent history_home from either env or file.

Dec  8 2008
- hstlib.c: fix bug running through the readback data for a history call without minimal storage.

Dec  7 2008
- almlib.c: if > 100 alarms, don't block removal if CAS reading a 'collapsed' message

Dec  3 2008
- client.c: ensure that the clnLinkTbl mutex is always released!

Dec  2 2008
- iplib.c: fixed bug in VxWorks call to getmyipaddr().

Dec  1 2008
- hstlib.c: introduce scavengeOlderLTSFiles() and associated logic, env variable HISTORY_FREE_BLOCKS,
  SetMinimumDiskSpaceInBlocks().

Nov 28 2008
- toolkit.h, toolkit.c: refactored PutValuesFromPointer() to PutValuesFromAny().
  added routine GetValuesAsAny() in analogy with PutValuesFromAny().

Nov 27 2008
- hstlib.c: make sure that reading the points-of-interest file always assume dynamic files instead of standard.
- toolkit.c: fix several bugs with the new toolkit routine PutValuesFromPointer().

Nov 26 2008
- almlib.c, almlib.c: export GetNumAlarms(); macro GetAlarms() for getAlarms() etc.
- hislib.c: tweaked isPointOfInterest().

Nov 25 2008
- toolkit.c, toolkit.h: introduce routine PutValuesFromPointer().
- hstlib.c, hstlib.h: add/test logic to read 'points-of-interest' from long-term storage.
- syslib.c: tweaked _SystemSchedulePropertyEx() a bit (should have no perceptible effect).
- syslib.c, tinetype.h: added exported routine GetSystemErrorString().

Nov 23 2008
- srvdbase.c, srvip.c: add the client port to debug diagnostics
- clnip.c: trap potential corruption in tcp packets.

Nov 21 2008
- srvquery.c: fixed bug in determining 'isSnapshot' for short-term local history storage.
- hstlib.c, hstlib.h: add logic to store 'points-of-interest'
- tinedefs.h: upped the revision number.

Nov 10 2008
- srvcore.h, almlib.h, almlib.c: add logic to learn to optimal alarm oscillation window. Also add get/set routines.
  add logic to collapse > 100 alarms to a single alarm message if server is asked for all alarms.
  if > 100 devices set the same alarm use its alarm tag and code

Nov  6 2008
- server.c, srvip.c : add removeClientFromList() for listed clients without contracts in initial list check.
  some refactoring of names.  add removeClient() following SendMessageToCaller() in some cases.
- srvquery.c : fix compiler warning.

Nov  5 2008
- tine32.c : add an environment back-door "TINE_DBG_PIPE" to define a pipe Name for debugging clients via attachfec.
- srvip.h, clnip.c, iplib.c, srvcore.h: some refactoring to allow easier debugging.
  TCP bug fix: trap EWOULDBLOCK on recvfrom which could come even if select() signals it is ready!
- client.c, srvcore.h : use milliseconds in flagging the 'time of request' for use in checkConnections().
- hstlib.c : several bug fixes concerning read outs via CF_HISTORY.
- listener.c : fix bug resulting in permanent operation_busy if illegal_property is given.

Nov  3 2008
- hstlib.h, hstlib.c, srvquery.c, swaplib.c, client.c, toolkit.c, toolkit.h:
  "finish" implementing CF_HISTORY + helper routines logic. CF_IMAGE, CF_STRUCT + complex types not yet tested.

Oct 31 2008
- server.c, swaplib.c, client.c, errors.h, swaplib.h, syslib.c, tinedefs.h, tinetype.h:
  introduce format CF_HISTORY and associated helper routines for carrying any data format + all data stamps
- toolkit.c, toolkit.h: fixed bug with PutValuesFromUnsignedShortEx(), added associated 'Byte' helper functions.

Oct 16 2008
- hstlib.c: fix bug where the sysstamp and usrstamp arrays weren't allocated when using AppendHistoryInformation().

Oct 15 2008
- srvcore.h: fix unix-side assertHeapOkay() macro.
- server.c : fix problem where assertRedirectionValid() was being used with return code 'has_structure_tag'.

Oct 10 2008
- errors.h, errlist.c : introduce 'memory_overwrite'.
- syslib.c, server.c, client.c, srvcore.h: (windows) call _heapchk() following dispatch
  routines to try to catch memory corruption problems outside our control!
- dbtools.c, hstlib.c, ttycmd.c: relax some of the mutex checks around some file IO.  Introduce a
  separate manifest mutex.
- srvquery.c : fixed bug accessing num alarms with a completely empty device name (should default to ALL).

Oct  3 2008
- srvcore.h, srvip.h, iplib.c: tweak maximum TCP_BUFFER_SIZE logic.

Oct  2 2008
- srvdbase.c, dbtools: make alias table appendable.
- server.c: add routines SetSystemRequireAcknowledgments(), GetSystemRequireAcknowledgments().
- clnip.c, iplib.c, srvip.c, client.c, server.c: allow (and fix bugs for) MTU up to 64 kbytes for TCP transfers
- shmalloc.c, shmalloc.h: allow MTU up to 64 kbytes for MMF transfers
- swaplib.c, tinetype.h: refactor DIMAGE header field names.
- client.c : make asyncLocateExport() use a separate global buffer to avoid possible concurrency problems at
  initialization time.

Sep 29 2008
- toolkit.c: make all query routines supply the CA_MUTEABLE flag and get completion length from the resulting
  dout.dArrayLength (this is thread-safe, GetCompetionLength(-1) isn't).

Sep 26 2008
- server.c: supply the system stamp to the data object before calling the eqm (as a courtesy).
- client.c: don't call cycle trigger if the cycle number (system stamp) hasn't changed.

Sep 25 2008
- client.c, dbtools.c, syslib.c, srvcore.h, threader.h, ttycmd.c:
  remove the old 'ExecLinkSemaphore' flag and make ExecLinkEx re-entrant and thread safe.
  collapse FecLogMutex and DbgLogMutex into one and use in other file access routines.
- tine32.c: cosmetic changes to log output.
- server.c: initial logic for accessing and sending cycle triggers.

Sep 23 2008
- server.c : trap server_redirection for all cases if CF_DEFAULT is asked for.
  never break out of 'not_ready' (the caller will simply timeout; but we can't disturb the mutex dialog).
- client.c : add initial routines for cycle triggers.
- srvdbase.c : make sure the global context and subsystem variable get filled with something.

Sep 22 2008
- client.c: set isWaitingSyncNotification flag prior to ensureSendRequest() (possible completion in separate thread!).
  remove CA_READ access bit if call requests 0 data elements.
- hstlib.c: protect against duplicate record indicies.
- toolkit.c: add GetSystemPropertyInformation()
- almlib.c, almlib.h:  allow stock call NALARMS to also return device specific information
- srvdbase.c: flag hasPropertyDeviceNames when AssignDeviceListToProperty is called.
- server.c: allow backdoor re-entrancy to eqm dispatch routine if the CA_QUERY bit is set (e.g. .NAM calls).
- syslib.c: fixed bug in prepDataDump() (tineDebug > 4) where long string output overran a buffer.

Sep 12 2008
- srvdbase.c, srvip.c : fixed configuration logging bug concerning users and nets access.

sep  9 2008
- server.c, syslib.c: minor tweaking.
- client.c, srvdbase.c: fixed bug trapping "LOCALHOST" calls in ExecLink for non-CDI calls.

Sept 7 2008
- srvcore.h, server.c, syslib.c : add (and use) isCalledInSeparateThread flag, so that calling the scheduler
  does not call the equipment module dispatch routines directly if called in separate thread (Mutex ownership issue).
  make sure eqm mutex set gets initialized if late eqm registration in multithreaded mode.
- srvdbase.c : add called in separate thread info to debug output
- tinedefs.h : introduce version 4.0.3 (upped the revision number)

Sept 6 2008
- srvquery.c : let alarms calls go single-threaded (for now)
- syslib.c, server.c, hstlib.c, almlib.c, srvcore.h : fixed some 'holes' in the mutex
  & flag protection of MT stock property calls
- errors.h, errlist.c : replace deprectated return code fpss_error with configuration_error

Sept 4 2008
- srvdbase.c : allow "MT" as an access string (in property registration from file) indicating 'runInSeparateThread'
- errors.h, errlst.c : replace deprecated return code fpss_timeout with invalid_return_code
- other routines : got multithreaded equipment module and stock property calls (e.g. .HIST) to work (!).

Aug 29 2008
- prolog.h : return 'dimension_error' instead of 'out_of_range' when struct request is too large
- errlst.c : error string "not allowed" instead of "command not allowed here"
- client.c : tweak debug output a bit.

Aug 28 2008
- client.c : don't blacklist 'non_existent_elem' if the timeout counter > 0 (could be a 'normal' change of eqm name)
- listener.c : add putStringArray routine.
- toolkit.c : fixed PutValueFromString (again for the thousandth time) when copying smaller to larger in-situ.

Aug 27 2008
- client.c : set subscription counter to -1 if mode = REFRESH or counter = HEARTBEAT
- cmdcln.c : set filter = <empty> when signing off from attachfec.

Aug 25 2008
- srvcore.h, prolog.h, iplib.c, clnip.c, server.c, client.c : allow SetPacketMTU() to handle up to
  64 KBytes.

Aug 22 2008
- client.c : decrease queue len if mutex not avaiable, add more output to connection stats
- client.c, srvcore.h: compare access WRITE bit in getConTblEntry
- srvdbase.c: add carriage return to appended users.csv list

Aug 21 2008
- client.c, globals.h : fixed bug when 'synchronously' calling RecvNetGlobal().
  allow globals from servers other than "GLOBALS".
  fix some problems with the link queue.

Aug 18 2008
- client.c, globals.h : allow multiple identical links to globals
- srvdbase.c : fixed bug truncating globals names to 16 chars.
  fix bug in updating the FEC manifest when context is given late;
  add warning lines to fec.log when decorated context is seen.
- server.c : fixed bug truncating globals names to 16 chars

Aug 15 2008
- client.c, listener.c : fixed some bugs relating to starting/stopping global links and reformating data.

Aug 14 2008
- dblib.c : allow default <CONTEXT> and <SUBSYSTEM> tags under <FEC> in fec.xml
- hstlib.c : fixed configuration problem with multiple equipment modules
- client.c, srvcore.h: tweaked SetAccessLock() and added GetAccessLockInformation().

Aug 13 2008
- client.c, clnip.c, globals.h : check originating server ip for finding context specific globals
- client.c : don't require even number of bytes in data size; fix bug in applying the CM_RETRY flag
- srvip.c, server.c : tweaked the socket and server cleanup routines a bit.

Jul 22 2008
- server.c: zero out the padded byte in the extended string space.
- client.c: interface to cdi hooks: allow 1024 character names
- other modules: adjust some wait times for acquiring the SystemKernelMutex

Jul 15 2008
- client.c: reset lastLnkError following success (ACOP needs to be changed?)
- server.c, syslib.c, srvip.c: increase timeout in WaitForMutex in doScheduler(), refine burst-limit logic.
- shmalloc: extend timeout in SendMessageTimeout()

Jul 14 2008
- client.c: force blknum = 1 if error and datasize == 0

Jul 13 2008
- client.c: flag hasAcknowledged when 1st ACK is sent.
- server.c: call renegotiateContract if re-attaching to a contract.
- srvip.h, iplib.c: renamed SetPacketMtu() to SetPacketMTU(), etc.

Jul 12 2008
- toolkit.c: GetValuesFromString() allows reverse order string conversion for in-situ cases
- server.c: flag reconnects as stale only if counter < RETRY-1
- server.c, srvcore.h, srvip.h, iplib.c, client.c: added SetPacketMtu() logic to allow MTU settings
  away from the default.

Jul  9 2008
- almlib.c: clear alarms in watch table if no alarm independent of count
- client.c: fixed some counting logic when large data sets and status are returned together

Jul  8 2008
- srvdbase.c, almlib.c: more tweaking of eqm subdirectory logic for .csv files
- almlib.c: fixed bug in clearing the watch table alarms
- srvcore.h, srvdbase.c : let GetEqpDeviceNames() take the number as input and output
- tinetype.h, srvdbase.c : add function hasPropertyDeviceList() for use in the buffered server.

Jul  7 2008
- almlib.c, almlib.h: initialized alarm watch table pro equipment module!
- syslib.c, srvdbase.c, server.c: add some more fec log diagnostics at initialization and reset.
- clntools.c: added some more output formats to tget/tmonitor.
- srvdbase.c, server.c, threader.h, syslib.c: introduce SystemInitMutex for eqm initialization.
  make sure eqm subdirectory is reset for each registration.

Jul  6 2008
- server.c, srvcore.h: only return illegal_protocol if protocol is no more than current + 2.
- client.c: institute a FEC timeout table for deciding when to re-acquire address
  (was on every failure of synchronous call, which can lead to ENS abuse!).

Jul  4 2008
- srvdbase.c: stop ENS registration attempts if errcnt > 30
- ttycmd.c: don't use printf in dbglog() unless foreground.
- shmalloc.c: global flag gIsWindowsConsole.
- srvip.c: use dbglog() only if tineDebug > 0.

Jul  3 2008
- client.c: don't reset fec->tineProtocol to 0 upon link error;
  more diagnostic when illegal_protocol occurs.

Jul  1 2008
- server.c: allow stock meta properties to call when there's a query function !
- srvdbase.c: HISTQuery should only trap server_redirection from a query function !

Jun 30 2008
- server.c: check 'call_redirection' where 'server_redirection' is checked.
  strcat the meta property tag back onto a redirected meta property!
- toolkit.c: add CF_BOOLEAN to the format conversion routines
- errors.h, errlist.c : added codes not_registered and non_existent_property
- several routines: rationalized the return of 'non_existent_xx' a bit.
- syslib.c, tinetype.h: add SetFecHome() routine for overriding the environment variable.

Jun 28 2008
- client.c: repaired the consistency check on server_redirection (swapping was missing)
- server.c, srvquery.c, srvcore.h, srvdbase.c: properly protect the property list buffer
  used in wildcard property queries; allow wildcard property queries to handle
  property query functions.
- server.c: return 'buffer_too_small' if a CF_DEFAULT request cannot buffer the returned data.

Jun 27 2008
- dblib.c, dbtools.h, almlib.c, almlib.h: added a 'not' logic to the alarm normal value and
  updated the xml alarm watch reader.
- client.c: went back to RETRY_THRESHOLD = 3.
- srvdbase.c, dbtools.h, dblib.c: export and re-factor the xml reader routines
- almlib.c: fixed bug in setting the start time (again).

Jun 26 2008
- client.c, srvcore.h: add a blacklist counter and don't blacklist the link unless > 2
  on receipt of server_redirection -> check connection consistency.
- almlib.c, almlib.h: added 'code', 'codeHigh', and 'codeLow' to the alarm watch table.

Jun 25 2008
- client.c: remove double mutex Check from ensureSendRequest()
  fix listStatus to link_not_open prior to CM_RETRY logic.
  don't blacklist wildcard calls; don't allow SYNCNOTIFY for wildcard calls
- srvdbase.c, swaplib.c: added a wee bit more diagnostic if registered names get truncated.

Jun 24 2008
- client.c, syslib.c, srvcore.h: removed the AttachLinKSemaphore flag.
  remodelled SyncAsync() to target a specific link.
  made 'link_exists' logic thread safe. make sure lastDataSize = 0 if no data returned.
- almlib.c: fixed bugs in reading alarms.csv with 'empty' lines. fixed bug in setting alarms.

JUn 23 2008
- toolkit.c: fixed bug in PutValuesFromString() (improper evaluation of the destination format)
  make GetValuesAsLong() use a signed short instead of an unsigned short if shorts were sent!
- client.c: guard against invalid bitfield (i.e. emtpy) fields.

Jun 20 2008
- hstlib.c, srvquery.c: allow history calls without input to get the last stored value if datasize = 1
  (rather than npoints in default interval).

Jun 19 2008
- ttycmd.c: init the mutexes in dbglob and ttyoutput in case they're called prior to other system calls.
- srvip.c, clnip.c, srvip.h, prolog.h, client.c: added multi-threaded logic to avoid potential latency for
   synchronous calls on a thread other than the cycler thread.

Jun 17 2008
- client.c: wait for twice the timeout in ExecLink if CA_RETRY is set.
  fix some compile warning on Solaris.

Jun 16 2008
- client.c, syslib.c: add mutex protection to GetDataFromLinkId() and then reverted (SOLARIS problem with recursive mutexes);
  instead -> don't reset lastDataSize to 0.
  added CA_NORETRY logic.

Jun 15 2008
- errors.h, errlist.c : replace legacy code fpss_switching with link_blacklisted (#113)
   add code not_locked, lock_expired
   update several status text messages ("link not open" becomes "link timeout")
- server.c, srvquery.c, srvcore.h, syslib.c : add function calls SetAccessLock(), etc. to
   maintain a persistent access lock.
   add calls SetServerWaiting(), GetServerWaiting() to put a server in a waiting state
   during initialization.
   SetMessageTocaller() now sets the packet bklnum to 1 and counter to 0.
- client.c: refined blacklisting logic; added gAlwaysRetry flag and logic.

Jun 13 2008
- client.c, srvdbase.c, dbtools.c, srvcore.h: add a blackList linkList for calls that return
  'address_unknown', 'illegal_property', etc. so as not to continuously bother the servers.

Jun 12 2008
- server.c: remove CA_LAST bit following 'not_ready' return.
- srvdbase.c: fix bug in GetDeviceListFromProperty().
- srvcore.h:  add an 'isRepeat' field to the contract definition and apply the CA_REPEAT flag late!

Jun 11 2008
- shmalloc.c: (windows only) move kernel mutex up a few lines of code.
- client.c: respect the STATUS_SIZE when assigning numblks allocation at contract start.
- server.c, syslib.c, tinedefs.h: replace unused access bit CA_ASYNC with CA_REPEAT and apply to 'not_ready' returns.

Jun 10 2008
- srvdbase.c: removed unnecessary code from sendNetGlobal().
- ttycmd.c: added hDbgLogMutex to ttyoutput(), fixed strlen bug in ttycommand().
- srvdbase.c: don't redirect calls to stock property "DEVICES"
- syslib.c: add CF_NULL to itof()
- server.c: reset deliverPending to 0 rather than --
- srvdbase.c: expand output for get contract=#
- iplib.c: allow FEC_GCAST_ADDR env. varialbe to set GCAST address

Jun  9 2008
- tinedefs.h: release 4.0.2 introduced
- ttycmd.c, threader.h: hDbgLogMutex added
- several modules: add new globals header and protocol.
- toolkit.c: allow NAME64DBL and DBLDBL to map to single values.
- client.c: improved output of globals

Jun  8 2008
- toolkit.c: added format NAME64DBL to GetValuesAsString().
- server.c, srvquery.c: added stock property SRVGLOBALS.

Jun  5 2008
- dblib.c: in cvs parser: treat an empty entry in a column the same as if the column is not present
- server.c: fix allocation bug if a request which exceeds the maximum transport size is truncated and is
  of a format type with a header.
- syslib.c: fixed bug obtaining a mutex with timeout if NO_MUTEX_TIMEDLOCK is #defined.
- srvip.c:  return a valid tine error code from initTCP() (rather than -1).

May 31 2008
- client.c: fixed bug concerning queueing grouped calls (now turn the queue off when calls are grouped).
- server.c: check if strock property prior to calling redirection stub in isIllegalProperty().

May 30 2008
- almlib.c: fixed bug setting the alarm start time

May 28 2008
- almlib.c: fixed bug reading alarms.csv (severity not parsed correctly)

May 27 2008
- server.c: removed some useless code
- srvdbase.c, dblib.c : protect against file names containing a "CON", "PRN" or "AUX".

May 25 2008
- srvdbase.c: allow latching of export name + context in csv read of fecid.csv.

May 23 2008
- server.c: pass assigned redirection status inside GetDefaultFormatAndSize()!
            copy all 16 chars from the incoming username into the client connection table !
- dblib.c: zero out the substring buffer for missing columns in a csv file read.
- srvdbase.c, srvcore.h: make sure gDeviceContext can hold CONTEXT_NAME_SIZE chars !

May 22 2008
- syslib.c: fixed format array type parsing error for "DOUBLE" arrays.
- server.c: refined lookupRedirectionNameStub logic inside GetDefaultFormatAndSize().

May 21 2008
- server.c: add lookupRedirectionNameStub logic inside GetDefaultFormatAndSize().
- client.c: fixed bug assigning bitfield fields

May 19 2008
- shmalloc.c: add hSystemKernelMutex mutex protection for the WM_REQ_LCL windows message.
- client.c: only prep the returned bytes in a queued link.

May 16 2008
- syslib.c: add fseek(fp,0,SEEK_SET) to readFecFile (for binary file transfers).

May 13 2008
- srvdbase.c: flush the reLnkList when freeing resources.

May  9 2008
- srvip.c: fixed debug > 0 display bug following a persistent socket error (buffer overrun)
- client.c: 'finalized' the has_structure_tag handshaking
- other modules : refactoring

May  2 2008
- server.c: allow code 'has_structure_tag' to pass a tag as status string
- client.c: more steps to handle the 'has_structure_tag' handshaking logic

Apr 30 2008
- srvdbase.c, client.c, dbtools.c, dbtools.h: add routine flushRedirectionLinkList() and call it in
  freeServerMemory() and flushFecAddrCache().

Apr 28 2008
- syslib.c, srvcore.h, threader.h: added routines LockEquipmentModule() and UnlockEquipmentModule() for mutex
  protection guaranteeing no call into the equipment module while it is locked.
  Also:  add return code to ReleaseSystemMutex().

Apr 25 2008
- client.c: fixed problem with NULL callbacks and wildcard calls (rather exotic).

Apr 24 2008
- srvdbase.c, srvquery.c: allow stock property SRVEXIT to take an exit code.
  fixed display bug when user's names were 16 char long.
- toolkit.c, .h : export some bitfield routines
  prolog.h, iplib.c : make a more useful soperror() routine.
- other modules: general clean up.

Apr 17 2008
- server.c: fixed inconsistency which allowed a link CANCEL request on a brand new contract to
  call the equipment function (with CA_LAST set).
- client.c: fixed bug in CloseLink with a cdi hook that wasn't trapping the proper cdi link id.
- shmalloc.c, server.c : add a shmStop() routine to stop the shm thread and clean up.

Apr 16 2008
- swaplib.c, tinetype.h : make a central logging entry contain up to 256 chars instead of 128
- client.c: changed all remaining embedded AttachLinkEx() to _attachLink()
- errors.h, errlist.c : added error code has_structure_tag as a handshaking code.
- client.c, server.c : trap has_structure_tag and allow isBitfieldProperty() to handle device names.
- srvdbase.c : AssignDeviceListToProperty() now takes NAME64 list as argument (was NAME16)
               n.b. this is an API break, but this routine was seldem used by the community at large
               (used in the cdi lib).

Apr 15 2008
- tine32.c : catch the CycleStarted flag before WaitSingleObject() on the cycle thread.
- client.c : found another casting error relating to the dispatch with reference

Apr 14 2008
- several modules:  Win32 -> introduced a thread to manage the shared memory window.
- hstlib.c : make HISTORY_HOME point to parallel directory to FEC_HOME called HISTORY if not set.
- syslib.c, srvdbase.c, threader.h : fixed casting bug with referenced multi-threaded background tasks
- clnip.c : got rid of a warning

Apr 11 2008
- swaplib.c, srvquery: updated the swapping routines for primitives (after all these years) to avoid
  possible alignment problems on solaris.
- client.c : fixed some warnings
- errlist.c : added error 'data_stale'
- client.c, tinetype.h: call the new extensions to the link calls 'AttachLinkEx2' and 'recvNetGlobalEx2'.

Apr 10 2008
- numerous modules: Start implementing logic to use loopback sockets to signal a shared memory
  datagram (on windows : avoid message loop!).
  Add new calls with de-referencing parameters in the dispatch or callback functions.
- almlib.c : add more stock alarm definitions and handle use of system error codes.

Apr  6 2008
- shmalloc.c: allow shared memory + windows messages for local communication for console
  applications using tine32.dll
- numerous modules: introduce format CF_IMAGE (format type has header, analogous to CF_SPECTRUM)
  and data type DIMAGE;  Allow 'unbuffered' data bindings for server properties (use new
  registration call SetPropertyBuffer()).
- client.c: some logic to smooth the transition from incoming data flow and contract renewal.
- tinedefs.h: upped the revision number -> we're now at 4.0.1

Mar 28 2008
- client.c : set GLOBAL_SYNCHRONIZATION_TOLERANCE to 0.1 instead of 0.2

Mar 25 2008
- errlist.c : changed error text from "function not exported" to "not exported"
  srvquery.c : default registration for PROPERTIES, DEVICIES signal data type NAME64

Mar 24 2008
- swaplib.c : fixed registration of legacy property query structure
  client.c : trap multiple global synchronization datagrams

Mar 19 2008
- tinetype.h: fixed some doxygen documentation
- srvquery.c: stock property HISTORIES to return NAME64 array
- dbtools.c, client.c, syslib.c: systematic change of context SERVICE to context SITE for
  calls to ENS, GENS, CLOG, EVENTMGR, and site GLOBALS.
- server.c: move 'SystemRunning = TRUE' to immediately follow initial call to EqmInit().
  (possible lock-out problem with multiple eqms on VB servers).
- server.c, syslib.c, srvcore.h: added 'fwdWildCard' logic for DOOCS to override wildcard calls.

Mar 17 2008
- srvquery.c: provide input information for stock property "ALMWATCHTBL"

Mar 14 2008
- srvdbase.c: add context to diagnostic when there's an export name configuration conflict
  move default context and subsystem assignment up so that reading exports.csv from alternate
  location doesn't come up emty.
- tbufsrv.c: fixed some compiler warning for solaris

Mar 12 2008
- srvcore.h: made 1000 the default BURST_LIMIT
- tine32.c : (windows only) fixed bug concerning cycle thread termination on busy servers
- tbufkrnl.c : added #ifdef SOLARIS in a couple of key places

Mar 11 2008
- errors.h, errlist.c, prolog.h: add error code "invalid_structure_size" and return it instead of
  invalid_structure_tag if the 'tag' is known but the structure size is not correct.
- server.c: move "SystemRunning = TRUE" before "StartGlobalSynchronization()", which (by virtue of
  the clientCycle()) could process callbacks from links started in equipment module init routines.
- client.c: cancel dependent CM_SINGLE links in notifyClient().

Mar  6 2008
- client.c: fixed (lethal) bug involving double buffer size where servers with property-query precedence
  have large number of devices!

Mar  5 2008
- client.c, globals.h: added 'status' field to the GlobalsListStructure and added the
  routine GetGlobalListElement(). (for use in the tinecln32 shim).
  Also added "TINE_QUEUEDEPTH" environment variable possibility of setting the recv queue depth
  (for the labview clients).
- listener.c : allow "SYNC" switch inside the alsn calls.
- server.c : add "TINE_BURSTLIMIT" environment variable possibility of setting the burst limit.
  (for the labview servers).

Mar  4 2008
- client.c, srvcore.h: fixed problem with wildcard calls involving redirection
  (e.g. device groups) and use a NAME64 device list in the wildcard table
- server.c: fillin the whole device name inside a USTRING wild-card request
- toolkit.c : add backward compatible work-around for name queries to Release 3 java servers.
- tbufsrv.c:  fix buffered server input tagged structure problem.

Mar  2 2008
- clntools.c, hstlib.c, syslib.c: make an immediate copy of the 'struct tm *' returned from
  calls to localtime() (solves a potential overwrite problem if another thread or routine
  calls localtime()).
- listener.c: another spot where the tagged structure size needs to be dealt with.

Feb 28 2008
- clnip.c: add another diagnostic to feclog if select() fails

Feb 27 2008
- server.c: (as per client.c) fix contract format to CF_NULL if data size <= 0.

Feb 26 2008
- client.c: fix format as CF_NULL if data size == 0
- srvdbase.c: fixed bug in assigning device list from property
	assign CF_NULL to input format types not given

Feb 23 2008
- client.c : ensure 8-byte boundaries on bufOutBlks allocation.
- dblib.c : fix compile warnings under a C++ compiler
- ttycmd.c, ttycmd.h : refactor CMDlisten, CMDaccept, etc. into pipeListen, pipeAccept.
	add prototype for pipeConnect in header file.
- errlist.c, errors.h : add error code 'not_initialized'
- server.c : return 'not_initialized' from isIllegalProperty() if a call comes in prior
	to eqm initialization (could otherwise cause confusion if clients are waiting to
	attach to a server which is still initializing).
- srvip.c : upon serious socket errors (select() persistently returns -1) abort the
	server process with a log entry.  Also a log entry if recvfrom() fails.

Feb  8 2008

- All Modules: establish reference set for TINE Release 4.0 C libraries
