
Version 1.1.14-devel, March 10th 2025:

* Added '&' to the list of characters that are to be escaped
  by 'lib/include/_escreg.awk' .
  Added global variable 'CSA_AWK_INCLUDE'.
* Added the setting of element lengths in 'CSA_RPC_AWK' in the
  form of 'WWW_xxx_L' ('L' for Length) variables, especially
  useful when traversing XML-RPC arrays.
  Added message '0081' and the ':n' syntax for arguments in
  rc(1) function 'csaStatus'.
  Amended 'lib/include/_rcget.awk' to account for environment
  variables which names begin with an underscore '_' .
  Extended 'lib/include/_rcget.awk' to return the last element
  in an rc(1) list when a negative element number is specified.
* Amended 'lib/csaMainlib.rc' to use 'CSA_TIME_LOG' when logging
  to 'var/log/csa/stderr.log'.
* Fixed issue in 'lib/include/_rcget.awk' that was causing the
  function not to detect environment rc(1) variables with names
  beginning with multiple underscores '_' .
* Added option '--resync' as an alias of '--reset' in 'csaSetTime()'.
* Fixed option '-l' of 'src/csa-escape.c'.
* Non-portable mawk(1) '\134' turned into '\\' to make it work also
  with gawk(1).
* Fixed typo in message '0011'.
* Added option '-S' to 'mawk/csa-tbl2rc'.
* Fixed 'lib/csaEmaillib.rc' which was failing to use a local setting
  of the 'CSA_CMD_SENDMAIL' configuration variable.
* Added support for local NLS string overrides to be loaded from
  '$CSA_ROOT/local/i18n/$CSA_LANG.awk' if available.
* Fixed 'csaIsFullPath' to make options '--exists' and '--test'
  order-independent.
* Amended 'lib/csaMainlib.rc' and 'lib/csaCgilib.rc' to use the
  '--test' option when calling 'csaIsFullPath' against directories
  that are expected to possibly be densely populated, such as
  'TMPDIR' and possibly others.
* Additional usage notes for the 'csaUnlock' rc(1) function.
* Fixed issue in 'lib/csaCgi.awk' that was occasionally setting
  'CSA_RANDOM' as an exponential notation string like "12345e+06"
  rather than a plain integer, thus causing frequent loss of
  authenticated HTTP sessions.
* Added global variable 'CSA_CKPT_ROOT'.


Versions 1.1.12 and 1.1.13 not documented.


Version 1.1.11, July 13th 2016:

* The previous change to 'rc/csa-commit' prevented the possibility
  for the command to contain unescaped redirection '>' and unnamed
  pipes '|', now this should be fixed, but more bugs may pop up
  with this stuff.
* Fixed one typo in comments of 'lib/csaMainlib.rc'
* Fixed misuse of CSA_LOCK_REALM in 'csaLock'.
* 'eval' is now a keyword in recent GAWK versions, so I changed
  it to 'ev' in all CSA AWK files.
* Changed 'rc/csa-commit' for safer eval of commit lists containing
  certain special characters in file names, in particular the '='
  sign in Base64-encoded file names.
* Added option '--no-audit' to 'csaOpen' and related support code
  to 'rc/csa-commit'.
* Removed old(1) -based locking due to it's cumbersomeness.
* Removed global variables 'CSA_LOCK_REALM', 'CSA_LOCK_HOST' and
  'CSA_LOCK_SALT', and added new global variable 'CSA_LOCK_ROOT'
  and related support code.
* Fixed typo in a couple of English messages.
* Changed 'ci' into 'rcs ci' in 'rc/csa-commit', because ci(1) is
  a wrapper shell script of rcs(1).
* Fixed an issue in '_gregorian.awk' with seconds=60 not causing
  the minutes to tick forward by one.
* Added global variable 'CSA_CMD_CI' and related support code.
* Added global variable 'CSA_SYSLOG' and related support code.
* Added global variable 'CSA_SYSLOG' and related support code.
* Added back the global variables 'CSA_RESP_CHARSET' and '_RESP_CHARSET'.
* Added option '-t' to the 'csaIsFullPath' library function.
* Added option '-l' to the 'csa-escape' utility.
* Added provisions to increase the usefulness of stderr.log .
* Amended 'lib/csaCgilib.rc' to account for the fact that '/dev/stdout'
  is not available to CGI programs when running under Apache.
* Added support for the 'OPTIONS' HTTP method to 'rc/CSA.cgi'.
* Amended 'csaTrue' to take any positive integer as 'true'.
* Added creation of optional *.try files to help debugging dot-locking
  issues.
* Added milliseconds to 'CSA_TIME_LOCAL' and 'CSA_TIME_UTC'.
* Added real timestamp in messages when 'CSA_AUDIT' is set to true.
* Added global variable 'CSA_AWK_INCLUDE'.
* Versioning moved from SVN to GIT.


Version 1.1.10, June 6th 2014:

* Added the new global variable 'CSA_RPC_MODE' and the related new URL
  argument "x-csa-mode", to try and fix other IFRAME-related session
  issues beside those that were (hopefully) fixed in version 1.1.9 .
* Dropped the global variable 'CSA_SESFILE_REUSE'.
* Added options '--lists', '--union', '--no-count' and '--break'
  to 'mawk/csa-tbl2rc'.
* Added UTF-8 support to 'src/csa-space.c'.
* Added special value "..NONE.." for option '--prefix' of 'mawk/csa-tbl2rc'.
* Fixed a couple of bugs in 'lib/csa-soap2rpc.awk'.
* Changed 'csaExit.session' to send the SSF content as text/plain.
* Changed 'csaExit.fault' to automatically ignore the optional "back"
  argument of CSA_EXIT_SCRIPT if non-interactive mode is detected.
* Changed 'lib/include/_parsecpi.awk' to always call _usercpi() on
  the data that is to be returned.
* Added message no. '0080' to the message tables.
* Added basic support for the Russian language ('ru_RU').
* Added basic support for the Simplified Chinese language ('zh_CN').
* Added basic support for the French language ('fr_FR').
* Introduced the new "$[program|]" tag in templates, and the associated
  new global variable 'CSA_TPL_TMP'.
* Added function 'csaRenameVar', based on 'csaSetClear'.
* Added option '-H' to 'csaCookie.set'. See the following link:
  http://www.codinghorror.com/blog/2008/08/protecting-your-cookies-httponly.html


Version 1.1.9, September 13th 2010:

* Added provisions for the special value "noskip" of CSA_CONFIRMED
  (currently not enabled).
* Fixed _request(..., _O_ATTACH) to make it ALWAYS return a
  filename, either a real or a dummy one (/dev/null).
* Added the 'csa-urldecode' utility, and modified 'csa-escape',
  csaCgi.awk and _uncgi() to store large URL-encoded stuff into a file
  rather than in memory. This was done to prevent mawk(1) from occasional
  segfaults in the _uridecode() function on large input payloads submitted
  by clients through the usual application/x-www-form-urlencoded POST action.
* Minor changes to 'csaGetArgs' and 'csa-buffer.awk' to make the HEAD
  method work also with a patched version of thttpd(8).
* Default HTML templates adapted to HTML5.
* Added new global variable 'CSA_XMLISH'.
* Added new encoding flag 'w' to '_envtoxml.awk', specifically meant to
  encode white-space to "+" in URLs.
* Added new global variable 'CSA_RPC_FLAG'.
* Added new global variable 'CSA_XMLTOP'.
* Added basic support for the German language ('de_DE').
* Added optin "fold" to '_sort()' and '_uniq()' AWK library functions.
* Replaced the '_userencode_[1-3]()' AWK library functions with a more
  generic '_userencode()'.
* Fixed exposure of CSA_AUTH_PW by 'csaExit.env'.
* Fixed special case where CSA_RWA content would erroneously be stored
  to a file.
* Added supporto for IPv6 to the '_isipaddr.awk()' AWK library function.
* Minor change to the 'csaExit.session' library function.
* Added optional reuse of session file, along with the associated global
  variables 'CSA_OLDSES_PROP' and 'CSA_SESFILE_REUSE'.
* Added a few provisions for cookie and P3P issues related to the use of
  IFRAMEs by a CSA application.


Version 1.1.8, September 18th 2009:

* Added optional argument 'ignore-list' to 'csaStatus' .

* Extended '_isuri()' to optionally distinguish between URIs and URLs,
  and to identify also CURIEs and Blank Node (bnode) CURIEs. See the
  following links:

  http://en.wikipedia.org/wiki/CURIE
  http://www.w3.org/MarkUp/2009/rdfa-for-html-authors

* Several tweaks to _mrwresponse(), unfortunately the new function
  call syntax is not backward-compatible, but I really had no choice.
  Applications that call this function will have to be adapted, but the
  changes are trivial.


Version 1.1.7, August 11th 2009:

* Fixed a typo in a comment line of CSA.cgi.
* Fixed an ISINDEX-related bug that was preventing the user from
  logging-out. This was a consequence of the new extended RPC
  URL semantics.
* Modified _envtoxml() to accept "+" characters in file inclusion tags.


Version 1.1.6, August 3rd 2009:

* Fixed a subtle bug in CSA.cgi, that was triggered by very
  specific URLs.


Version 1.1.5, August 3rd 2009:

* Fixed time-consuming repeated invocations of cp(1) on
  $PREFIX/lib/include/ in install-sh .
* Slight (backward-compatible) change to CSA_EXIT_SCRIPT invocation
  in csaCgilib.rc.
* Array _LANG[] moved from csaCgi.awk to BEGIN.awk, to make it really
  global.
* Global variable 'CSA_SEND_REPORT' replaced with the new global
  variable 'CSA_BUGS_TO' .
* Re-introduced optional dot-locking as an alternative to the
  default old(1)-based mechanism, through the new global variable
  'CSA_CMD_DOTLOCK' .
* Added global variables 'CSA_LOCK_REALM', 'CSA_AUTH_REALM',
  'CSA_RPC_URI', 'CSA_RPC_URI1' and 'CSA_RPC_URI2'. The old variables
  'CSA_RPC_URL*' are still supported but are now deprecated.
* Increased XHTML compliancy of the 'csa-tbl2select' utility.
* Added global variables 'CSA_RPC_CALLER' and 'CSA_AUTH_POOL'.
* Added the 'csaCgi.sed' script, to make it possible to have
  multiple CSA application on the same Web server, i.e. with
  the same host fully-qualified domain name (FQDN), without
  having the respective HTTP cookies interfere with each other.
* Added the 'csaSetClear' function.
* Added the (:LANG:) CSA Processing Instruction to _parsecpi.awk
* Added the 'csaExit.session' function to csaCgilib.rc .
* Fixed argument-handling bug in 'csaSetClear'.
* Added the '_userencode_[1-3]()' AWK library functions.
* Added global variables 'CSA_REQ_CHARSET' and 'CSA_RESP_CHARSET'.
* Added global AWK variables '_REQ_CHARSET' and '_RESP_CHARSET'.
* Added option '-f' to 'csaMkTemp'.
* Added the 'csa-uriencode' and 'csa-uridecode' ecperimental utilities.
* Changes due to the introduction of the new SWU_AWK_OPTS global variable
  in the SWU prerequisite package.
* Added "on" to the list of synonyms for "true" in 'csaTrue' and '_bool()'.
* Fixed duplicated "charset=" attribute in 'CSA_MIME_HEADER'.
* Fixed a couple of pattern matching expressions in _rdfprint() that
  were not accounting for possible ^M at end of lines.
* Added dash(1) to the list of shells to look for during install.
* Fixed unexpected charset specification in Content-Type HTTP request header.
* Fixed bad setup of global csa.rc by 'install-sh' on new installation.
* Fixed syntax error in the '_bool()' AWK function.
* Added the '_isutf8()' AWK library function.
* Fixed bad setting of 'CSA_RPC_HREF'.
* Changed the filename separator in CSA_COMMIT from ":" to "\r", to
  make CSA handle also file names containing the ":" character, such
  as session files and shopping cart files.
* Moved the '_isutf8()' AWK library function from CSA to SWU.
* Library 'csa-iso-8859-1.awk' moved from CSA to SWU.
* Switched the default character set from ISO-8859-1 to UTF-8.
* Removed global variables 'CSA_CHARSET' and 'CSA_RESP_CHARSET'.
* Removed global AWK variable '_RESP_CHARSET'.
* Added optional argument 'immediate' to 'csaSession.set'.
* Added global variable 'CSA_BEEN_HERE'.
* Added optional "fileid" argument to 'csaExit.session'
* Turned 'csa-soap2rpc.awk' into a generic XML-to-XMLRPC converter.
* Changed 'csaCgi.awk' to support URL-based target method name also
  with XML-RPC and SOAP request semantics.
* Added "+" to the set of allowed characters for tag names in the
  '_envtoxml()' AWK library function.
* Added option '--back' to 'csaExit.fault'.
* Added global variables 'CSA_TIME_ISO8601' and 'CSA_LANG_ISO'.


Version 1.1.4, September 24th 2007:

* Added option 'noenc' to '_mrwresponse()'.
* Added missing encoding of "'" into %27 to '_uriencode()'.
* Added option 'short' to '_isdate()'.
* Made '_localdate()' provide "HH:MM:SS" if missing.
* Minor tweaks to _MAPCHAR[] and _CHARMAP[] and to the AWK functions
  that use them.
* Made '_isodate()' resilient with respect to day, month, hours, minutes
  and seconds specified on one single digit (i.e. 24/1/2000 and that).
* Removed the dependency on mawk(1); now the installation program looks
  for mawk(1) first, and then for gawk(1) if it cannot find the former.
* Added trapping of stale hexBinary.* temporary files caused by fault 413.
* Minor tweaking of _rdfprint() to make it handle templates which lines
  end with CR+LF as opposed to plain LF, and also to acconunt for bugs
  with MSIE 5/6 and documents beginning with '<?xml ...?> .
* Fixed a bug in CSA.cgi triggered by an empty (but defined) QUERY_STRING
  with the Apache web server.
* Added function '_parsecpi()', the new encoding flag "C", the global
  variable CSA_ENABLE_CPI and the AWK variable _NOCPI, along with a first
  implementation of CSA Processing Instructions (CPI) in the form of
  special (:xxx:) directives in [X]HTML responses.
* Changed '_xmlencode()' to prevent the injection of unescaped CSA tags
  in the request data entered by clients. The change has unfortunately
  made necessary to make the CSA tag marker fixed to their canonical form,
  that is '$[' and ']' respectively, eliminating the possibility of
  customizing them by means of CSA_TPLTAGO and CSA_TPLTAGC. The change
  breack the compatibility with previous CSA versions, but this is
  of relevance only where custom tags are being used.
* Changed the default encoding flag for CSA_RDF_ARG and CSA_FORM_RWADIV
  from "c" to "C" in templates. This introduces some degree of incompatibility
  with previous CSA versions, whereby if data contains valid CSA processing
  instructions and the encding is not changed from "c" to "C", they will
  be parsed. Given the rather unique structure of such tags, though, they
  should not normally occur in the data.
* Added the '_bool()' AWK function, to make it easier for AWK programs
  to test for variables that can be set to either '1' or 'true'.
* Added the 'csaTrue' function.
* Added the '_XMLTOP' global AWK variabled and improved '_rdfprint()' for
  better handling of HTML response templates that do not parse as well-
  formed XML.
* Added the new CSA_EXIT_SCRIPT global variable.
* Added the '_usercpi()' AWK function.
* Changed 'csa-buffer.awk' to account for the w.bloggar blogging client
  (www.wbloggar.com) that gets confused by URLs in the form href='...'
  and wants href="..." instead. The workaround that I have introduced
  now will possibly be extended in the future to account for more buggy
  HTTP clients.
* Added the '_O_PATHINFO' option to '_uridecode()'.
* Added the the '_UPLOAD' global AWK variable.
* Added the new CSA_RDF_ORB global variable.
* Added a very basic support for SOAP 1.1 method calls and responses.
* Renamed a few libraries, variables and functions related to the
  CSA client facility.
* Added the new CSA_RPC_UPLOAD global variable.
* Added the new CSA_LIBS global variable and the 'csaTplProc' function.
* Added the new global AWK variables _TMPSTEM, _ARGSIZE, _MAXARG,
  _MAXSIZE and _TOOBIG.
* Added the ability to cope with large input arguments without risking
  to blow the rc(1) shell environment.


Version 1.1.3, April 5th 2007:

* Minor changes to CSA.cgi.
* Added option '-c' to 'csaPrintMsg'.
* Added the CSA_XMLNS_RDFS and CSA_XMLNS_DEFAULT global variables.
* The CSA namespace is no longer necessarily the default one in RDF requests
  and responses. This was done to make the default template available for
  the appliction program, in case the CSA application needs to produce
  responses suitable for clients with poor/no namespace support.
  For example, if the CSA response needs to be in RSS 1.0 format,
  not all RSS clients support, say, '<rss:channel>', and get confused
  if they do not see a plain '<channel>' element.
* Minor fix to '_mrwresponse()' to allow for multiple response ontologies
  inside the same response document.
* Added support for result listings in RSS 1.0 format.
* AWK functions '_b64encode()', '_b64decode()', '_and()', '_asc()',
  '_lshift()' and '_rshift()' moved to the Shell-Ware Utilities package.
* Added new function '_buffer()' and related global AWK variable _BUFFER.
* Added new function '_html()'.
* Print the Content-Location HTTP header only with idempotent requests.
* Added the Content-Length HTTP header to template-based responses.
* Added the new 'csaAwk.cgi' library function.
* Added the new global variables CSA_PRG_URL and CSA_AFTERCOMMIT.
* Adopted the PRG scheme for any template-based response to non-idempotent
  CGI requests, both for positive completions and for faults. Note that
  this is experimental and needs more testing.
* Added the 'CSA_SESSION' and 'CSA_SESSION_NEXT' variables and the
  associated 'csaSession.set' CGI function.
* Remove variables 'CSA_SESSION_[1-9]', 'CSA_CMD_ENCRYPT',
  'CSA_CMD_DECRYPT' and 'CSA_CRYPTKEY'.
* Added option '-h' to 'csaExit.bdata'.
* Added the 'CSA_PBC' experimental variable.
* Added the 'CSA_RPC_MAXARG' global variable.
* Fixed badly-broken handling of multipart/form-data binary input in
  the CSA.cgi front-end.
* Modified uploaded temporary file names to include a URI-encoded version
  of the original file name set by the client, and added the removal of
  any uploaded files on exit.
* Added the _uridecode() AWK function.
* Added the _O_UPNAME flag and the relevant code in '_request()'.
* Added the 'CSA_RANDOM' global variable.
* Re-written '_uriencode()' function to encode all special chars.
* Patched _envtoxml() to prevent file inclusion loops.
* Fixed a bug in _rwa2csa() that was causing the input data to go
  lost if it contained empty XML tags, such as <br/> and the like.
* Modified _pathinfo() to make it easier writing REST remapping
  rules involving special characters.
* Fixed a MIME-Type handling issue in the new PRG mechanism.
* Fixed reversed _TRUE/_FALSE results from the '_csa()' function.
* Fixed a bug in CSA.cgi whereby uploaded binary files were removed
  even in case 'csa-db-repair' failed, making the latter command
  non-repeatable.
* Added new global variables CSA_TPL_ROOT and CSA_TPL_SAFEPATH, and
  the associated AWK variables _INCLUDEPATH and _TPLSTOP.
* Added the additional CSA RPC invocation names CSAR and CSAS.
* Added the additional CSA RPC invocation name CSA2, along with
  basic support for XML-RPC requests and responses.
* Added the 'CSA_RPC2_OK' and 'CSA_RPC2_ERR' global variables.
* Modified the 'csaOk.html' and 'csaError.html' default templates
  to include an RDF-compliant XML-RPC response section.


Version 1.1.2, September 29th 2006:

* Added the capability of prevent commits if CSA_TESTMODE contains
  the token 'nocommit'.
* Added new variable 'CSA_RPC_GUID'.
* Default output prefix value for 'csa-tbl2rc' changed from 'c' to 'c_',
  to make it less likely that it intereferes with environment variables
  having names that begin with 'c'.
* Made '_envtoxml()' honour the '_RDFPRINT' switch also when including
  external binary files with 'csa-encdec'.
* Functions _ctime(), _isdate() and _adddays() were relying on
  system() and have been removed. I may provide entirely AWK-based
  re-implementations of the same functions in the future.
* Added functions _julian() and _gregorian(), along with a new
  implementation of _isdate() based on them.
* Added new variable 'CSA_DEBUG_STEP'.
* CSA now depends on the external package SWU (Shell-Ware Utilities),
  to which a few former CSA commands and libraries have been moved.
* The '_strip()' AWK function was moved to the Shell-Ware Utilities.
* Fixed a bug in '_gregorian()', whereby the julian equivalent of
  '2006-09-13 16:12:00' became '2006-09-13 16:11:60'.
* Fixed a bug in the handling of '--eval' option in 'csaSendMail'.
* Fixed a bug that was causing '_sendmail()' not to accept relative
  file inclusion tags.
* Added missing printing of deferred HTTP headers in 'csaExit.location'.
* Added functions 'csaTest.set' and 'csaTest.unset'.


Version 1.1.0, August 29th 2006:

* Added *very basic and experimental* support for responses
  in MRW (Machine-readable Web, AKA Semantic Web) format. These
  are the relevant new objects:
  - the '_mrwresponse()' AWK function and the associated _MRW[] array.
  - the CSA_RDF_MRW global variable.
* Added option '-B' to the 'csa-encdec' utility, and the new encoding
  flag 'B' to file inclusion template tags.
* Fixed wrong invocation syntax of 'csa-encdec' in '_envtoxml()', which
  caused the response stream to hang on Base64 output.
* Fixed 'enc' var not cleared on every loop in '_envtoxml()'.
* Added the ability to override the encoding flags in eval'ed template tags.
* Added the 'csaIsIdempotent' library function, and changed 'csaExit.ok'
  for (experimental) automatic PRG (Post-Redirect-Get) behavior.
* Fixed obsolete code in the '_sendmail()' function.
* Removed obsolete XML_,URI_,ISO_,URP_ and TXT_ encodings from '_response()'.
* Added the 'CSA_SESSION_[1-9] generic session variables.
* Added the 'CSA_CMD_ENCRYPT' and 'CSA_CMD_DECRYPT' variables.
* Variable 'CSA_PGPPASS' renamed into 'CSA_CRYPTKEY'.
* The interface of csaCookie.set has changed: now cookie name and value
  must be passed as two separate arguments, and the value is always Base64-
  encoded, and can optionally be encrypted if option '-E' is specified.
* Fixed a naming issue with TMPDIR, so that different CSA application
  that run with the same user ID do not share the same TMPDIR, with
  potential fncache.awk content problems.
* Added function 'csaBugReport' and the associated 'CSA_SEND_REPORT' variable.
* AWK function '_rcmsg()' fixed and renamed to '_wbmsg()'.
* Removed obsolete functions _fault(), _redirect(), _wwwexit(), _rcassign(),
  and _wwwargs(), the _EXIT* global AWK variables.
* Added the _MSG[] global AWK array.
* Added function '_isipaddr()'.
* Changed the locking progam from lockfile(1) to the Open Locking Daemon.
* Variable CSA_LOCKFAULT renamed to CSA_LOCK_FAULT.
* Variable CSA_VERBOSE_LOCKING renamed to CSA_LOCK_VERBOSE.
* Added variable CSA_LOCK_SALT.


Version 1.0.3, July 12th 2006:

* Added support for loading of multiple NoSQL tables in response
  templates, through the new AWK arrays _TBLS[] and _TBLSH[].
* Added the '_sort()' and '_uniq()' AWK functions.
* Added automatic URL syntax detection to '_tabletordf()'.
* Added the '_isuri()' AWK function.
* Added library 'csaMainlib.js' (very experimental and unstable).
* Changed attachment resource names from "attachment:" to "file:"
  in the CSA RwA message structure, to abide by standard URI schemes
  (see http://www.iana.org/assignments/uri-schemes.html).


Version 1.0.2, April 24th 2006:

* Slight improvement of CSA_GUID's default format.
* Added options '-c' and '-C' to 'csa-tbl2rdf'.
* Added global AWK variable _ERRNO.
* Added more input sanitizing in _rwa2csa() when using
  attachment names to build temporary file names.
* Changes to the RwA parsing code to detect also RDF descriptions
  identified by other than <rdf:Description ...>...</rdf:Description>.
* Added the CSA_SSL_MODE global variable.
* Minor stuff.
* Version control switched from cvs to subversion.


Version 1.0.1, March 10th 2006:

* Fixed false positives from function 'csaIsFullPath -e'.
* Fixed 'base href' in HTML templates.
* Added option '-f' to 'csaSum'.
* The '_b64decode()' AWK function was buggy in a way that it was very
  difficult to fix. I replaced it with a different implementation,
  kindly provided by Peter van Eerten. Also, the '_b64encode()', '_and()'
  '_asc()' '_lshift()' and '_rshift()' AWK functions were added, from the
  same author.
* Hopefully fixed CGI program hangs due to trailing garbage in the data
  posted by some web browsers, most notably of the MSIE family.
* Added 'no-replace' mode to file tags in _envtoxml().
* Added CSA_TPL_ALLOW and CSA_TPL_DENY global variables.

* Licensing: due to the current debate on the upcoming GPLv3 vs. GPLv2,
  I have decided to amend the CSA copyright terms to explicitly state
  that the the only valid version of the GPL as far as CSA is concerned
  is GPL version 2 dated June, 1991 (ie GPLv2, not v2.2 or v3.x or whatever),
  unless explicitly otherwise stated. This change is effective starting
  with CSA version 1.0.1-20060226, February 26th 2006.



Version 1.0.0, January 10th 2006:

* Major renaming of several library files; backward compatibility lost.
* Added the CSA_CONCEAL global variable.
* Added function 'csaConceal'.
* Fixed a bug in _rdfprint() when producing RDF-only responses.
* Changed global var CSA_RDF_XSD into CSA_XMLNS_XSD and introduced
  a bunch of additional CSA_XMLNS_xxx variables.
* Fixed RDF-based DRM/DRL sections in templates.
* Minor changes to HTML templates.
* Added template-specific application code capability.


Version 0.9.8-20051026, October 26th 2005:

* Some "cosmetic" changes to mainlib.rc.
* Renamed the 'csa-hashkey' utility into 'csa-genkey'.
* Introduced the CSA_CHARSET global variable.
* Changed the old CSA_CMD_MD5 variable into the more
  general CSA_CMD_MD (generic msg-digest command).
* Added function 'csaSystem'.
* Removed the .data' extension from message table files.
* Introduced the CSA_LOGDIR global variable.
  Both default to $CSA_ROOT/var/ if unspecified.
* Modified the application-level REST URL rewriting code to no longer
  use the application ID in the rewriting rules.
* Added the generic AWK error flag _EFAULT.
* Added the 'append' parameter to the _rcassign() AWK library function.
* Added function 'csaCollapse'.
* Added functions 'csaIsInteractive' and 'csaIsConfirmed'.
* Introduced the CSA_CONFIRMED global variable.
* Added option '-P' to 'csaOpen' and 'csaMkTemp'.
* Added function 'csaIsWeb'.
* All the NoSQL-dependent stuff was moved to 'nosqlmain.rc'
  and 'nosqlcgi.rc'.
* Application-level NLS files moved from $CSA_ROOT/lib/ to
  $CSA_ROOT/lib/i18n/.
* Added functions 'csaCheck.special' and 'csaAssign'.
* Added function 'csaHttp.referrers'.
* Introduced the CSA_HTTP_URL global variable.
* Minor changes to 'cgi.awk', 'CSA' and 'csa-escape.c' to
  work-around a couple of bugs of MSIE 5.0x that were
  causing problems with thttpd/2.24.
* Added AWK NLS support to 'csaTemplate'.
* Introduced the CSA_FORM_RWADIV global variable and related stuff.
* Added the family of functions 'csaDb.*' to the NoSQL interface
  library nosqlmain.rc.
* Added option '-c' to 'csaIndex'.
* Added AWK functions _request(), _response(), _rcset() and _rcget().
* Added option '-n' to 'csaAssign'.
* Added function 'csaExit.value'.
* Added global variable CSA_RPC_RESULT.
* Added AWK function _wsresponse().
* Minor naming convention change in 'csaDb.open'.
* Added global variable CSA_TPLWB and associated support code.
* Added AWK function _sendmail().
* Added global variable CSA_CMD_SENDMAIL and associated support code.
* Added basic table audit-trail handling to 'nosqlmain.rc'.
* Added option '-d' to 'csaHttp.header'.
* Fixed wrong handling of the DELETE request method in cgi.awk.
* Fixed a bug in 'csaExit.value' when the function was passed an
  empty name.
* Added global variables CSA_RDF_DOC and CSA_RDF_ARG2, and associated
  support code.
* Added AWK functions _sys(), _fault() and _redirect().
* Added message 0075.
* Added variable CSA_MSG_OK.
* Added support for the 'method.BEGIN' function.
* Fixed an error in 'csaPrintMsg' for non-existent messages.
* Fixed a bug in the argument-handling code of 'csaExit.bdata'.
* Fixed several bugs in nosqlmain.rc.
* Added variables CSA_BASELIBS and CSA_CGILIBS.
* Added variable CSA_RDF_TYP.
* Made _rdftype() accept 123456+10 as a valid integer.
* Added variables CSA_DUMP and CSA_DUMP_FILE.
* Added variables CSA_INPUT_FILE, CSA_ENV_FILE and CSA_ARGS_FILE.
* Removed most of the time-related variables, and itroduced
  CSA_TIME_LOCAL and CSA_TIME_UTC for greater flexibility.
* Added variable CSA_REQUEST_URI.
* Added variable CSA_RPC_HREF.
* Added function 'csaExit.table'.
* Added variable CSA_LOCKFAULT.
* Added variable CSA_VERBOSE_LOCKING.
* Added option '-S' to 'csaMkTemp'.
* Added the csaAwkCmd function.
* Made '_envtoxml()' accept rc-encoded dots in tag names.
* Added support for Access Control Lists.
* Default templates fixed for XHTML 1.0 compliancy.
* Fixed a bug in '_envtoxml()' regarding an orphan 'tagc' occurring
  before 'tago'.
* Fixed a PATH_INFO rewriting bug in '_pathinfo()'.
* Added AWK function '_jsencode()'.
* Introduced encoding flags in templates also for scalars.
* Minor adjustments to the RDF section in templates.
* Added the CSA_CGI_STDIN environment variable.
* Added handling of '?' as a QUERY_STRING assignment separator
  in addition to the usual '&'.
* Added the CSA_TPL_EVAL environment variable.
* Major renaming of several library files; backward compatibility lost.


Version 0.9.7, August 11th 2004:

* Fixed a typo in example/csa.rc
* Fixed a missing workfile-removal on exit in csaExit.bdata()
* Added the ability for different parts of the same CSA application
  to use (moderately) different CSA versions.


Version 0.9.5, August 8th 2004:

* Added recursion capabilities to envtoxml()
* The official CSA documentation is now available in the form of
  a Wiki site at the following URL:
  http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/CSA
* Added the library files rdf2csa.awk and rdfclient.rc, for basic
  CSA-RPC client support.
* Removed dependency upon the 'metamail' utility.
* Added the CSA_TPLRDF variable.
* The basic csaExit* functions have been moved to exitlib.rc.
* Added options '-r', '-s' and '-a' to 'escape'.
* Added initial support for PUT/DELETE actions (see REST)
* Changed the behavior of 'escape -z' to improved the reliability of
  urlencoded.awk in detecting trailing newlines in the input stream
  (needed by PUT).
* Added the CSA_RPC_PUT global variable.
* Added the csaExit.push experimental library function. This is *higly*
  experimental, i.e. *do not* use it, unless you know what you are doing.
* A few changes to make CSA work with thttpd/2.3x (thttpd/2.2x does not
  work anyway, as it is broken on POSTs)
* CSA_PGM turned into a list.
* urlencoded.awk and multipart.awk merged into cgi.awk
* Added AWK functions qpencode() and qpdecode() to csalib.awk.
* Added support for application-specific rest.map file.
* Added the 'usleep' and 'line' utilities.
* Added support for multiple files to 'cpmv.
* Introduced overridable AWK functions.
* Many changes to the CSA-RDF DTD and the relevant support code.
* The doc/ subdirectory now contains only sample stuff. The CSA
  official documentation is now the CSA Wiki site (see doc/README)
* Introduced the CSA_RDF_XSD environment variable.
* Added support for RwA (RDF with Attachments).
* Changed function escape() to work around a buuffer overflow
  in mawk's fin.c
* Introduced the CSA_AWK_NEWCACHE environment variable.
* Added options '-q' and '-Q' to 'escape'.
* Added option '-q' to 'unescape'.
* Changed CSA_CMD_PS to use pgrep(1) instead of ps(1).
* Added the extract() AWK function.
* Performed a massive renaming of CSA AWK functions and global variables.
  Compatibility with previous CSA versions lost again.
* exitlib.rc renamed into batchlib.rc.


Version 0.9.4-rc3-20030907, 7 September 2003

* Revisited the structure of the var/ directory.
* Added initial support for the REST architectural style.
* HTML templates are now considered a special case of XML.
* Introduced a cleaner policy for reserved CSA identifiers.
* Adopted standard HTTP status codes wherever possible.
* Added initial support for CSA-managed HTTP authentication.
* Added symbolic message group names.
* Performed a number of REST-oriented and backward-incompatible changes.
* Messaging scheme largely revisited.
* The XML-RPC support has been dropped, in favour of a basic
  REST+RDF approach to Web Services.
* Added the csaAwk() function and the possibility for user-level
  programs to override any CSA library functions with csaLoadLib()
* Documentation licensing switch from FDL to GPL.


Version 0.9.3 - 19 April 2003, by Carlo Strozzi

  * Re-introduced the ChangeLog, for GNU compliancy.
  * Added support for application data conveyed through HTTP 
    custom headers X-something.


Version 0.9.2 - 28 March 2003, by Carlo Strozzi

  * Started a clean CVS trunk.
  * Included GNU-FDL.txt in the documentation.
  * Removed the ChangeLog file, and introduced the NEWS file.
  * The main documentation has been turned into SGML, and
    the old documentation in groff_mm(7) format has been dropped.

