2020-02-03 Massimo Manghi <mxmanghi@apache.org>
    * src/request/: Update obsolete copyright statements
    * src/mod_rivet_ng/rivetCore.c: update comments to upload command
    * tests: changed upload file test

2019-12-30 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivetCore.c: fixed bug in 'upload filename' that
    caused segfaults instead of Tcl errors when called without arguments
    * src/request/: Adding latest Copyright statements to files in this
    directory
    * tests/upload.rvt,upload.test: revised upload tests (need expansion
    to test multiple uploads)

2019-12-12 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/apache_config.c: copying also upload_files_to_var in
    Rivet_MergeConfig

2019-12-06 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivetCore.c: expanded error info data in Rivet_Upload
    * doc/rivet.css: new color scheme for docbook manual

2019-12-04 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivetCore.c: new branch uploadcmdfix with improved
    argument checking in Rivet_Upload that was the cause of random crashes

2019-11-29 Brice Hamon <bhdec@apache.org>
   * src/mod_rivet_ng/mod_rivet_cache.h: added RivetCache_DeleteEntry
   * src/mod_rivet_ng/mod_rivet_cache.c: 
   * src/mod_rivet_ng/rivetCore.c: fixed crash when rvt file not readable

2019-10-13 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/directives.xml: configuration directives table expanded
    * doc/examples/

2019-09-30 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivetCore.c: revised argument checking

2019-09-29 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml: Completed manual page for command ::rivet::thread_id
    * src/mod_rivet_ng/rivetCore.c: Rivet_GetThreadId rewritten. Now the
    command accepts an optional argument to select decimal or hexadecimal (default)
    output 

2019-08-05 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/directives.xml: Documenting SingleThreadExit directive

2019-07-27 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml,src/mod_rivet_ng/rivetCore.c: Add ::rivet::thread_id
    manual page

2019-06-25 Massimo Manghi <mxmanghi@apache.org>
    * : Single thread exit implementation for mod_rivet 3.2
    * src/mod_rivet_ng/rivet_[.*]_mpm.c: further simplified code by removing 
    redundant flags. Changing function names scheme

2019-05-24 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivetCore.c: Add Tcl_DecrRefCnt after
    RivetCache_StoreScript as this function itself calls
    Tcl_IncrRefCnt to preserve the Tcl_Obj with the script code
    
2019-04-13 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml: Correct wrong header in ::rivet::http_accept code example

2019-04-12 Massimo Manghi <mxmanghi@apache.org>
    * INSTALL: wrong references corrected

2019-02-19 Massimo Manghi <mxmanghi@apache.org>
    * .appveyor.yml: merging from master in order to have new tags generate
    artifacts

2019-02-16 Georgios Petasis <petasisg@apache.org>
    * .appveyor.yml: Added support for creating a zip with the installed rivet
    files (both module and library), and create an artifact. If a tag is added
    (in all branches), the zip will be added to the release.

2019-01-21 Massimo Manghi <mxmanghi@apache.org>
    * src/rivet.h: Add error message buffer size definition (was still hardcoded
    here and there)
    * src/mod_rivet_ng/rivetCore.c,rivet_worker_mpm.c: hardcoded buffer size
    into their correct macro definitions

2019-01-14 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivetCore.c: add experimental ::rivet::thread_id
   command

2019-01-05 Massimo Manghi <mxmanghi@apache.org>
    * doc/: merging from 3.1 fixes to various broken docbook elements
    and new entities to external resources' URLs

2018-12-24 Georgios Petasis <petasisg@apache.org>
    * README.md: Added badges also for the GitHub fork at:
    https://github.com/petasis/tcl-rivet.

    * .appveyor.yml: Enhancements to not rely on hard-coded paths.

2018-12-23 Massimo Manghi <mxmanghi@apache.org>
    * cmake/CMakeLists.txt: starting with rivet 3 we need Tcl > 8.6.1

2018-12-20 Georgios Petasis <petasisg@apache.org>
    * cmake/CMakeLists.txt: Set policy behaviour of CMP0074, only if policy is
    defined (i.e. cmake version >= 3.12).

2018-12-19 Georgios Petasis <petasisg@apache.org>
    * cmake/CMakeLists.txt: Added support for regenerating pkgIndex.tcl in the
    installation directory of rivetlib, after files have been installed.
    This executes "tclsh".

2018-12-17 Georgios Petasis <petasisg@apache.org>
    * Readme.md: Added a separate badge for winbuild branch.

2018-12-17 Massimo Manghi <mxmanghi@apache.org>
    * src/request/apache_request.c,src/request/apache_multipart_buffer.[c|h]: 
    explicit cast to int wherever needed by calls to Tcl_* functions and
    changed int to size_t wherever required 
    * src/mod_rivet_ng/rivet_types.h,rivetCore.c: field 'size' in structure
    typed as size_t
    * src/mod_rivet_ng/TclWebapache.c: argument to Tcl_ReadChars explicitly
    cast to int 

2018-12-16 Georgios Petasis <petasisg@apache.org>
    * Readme.md: Added a Markdown README file, which shows the build status
    from Appveyor, for Windows.

    * .appveyor.yml: Started a build configuration for Appveyor:
    https://ci.appveyor.com/project/petasis/tcl-rivet

    * cmake/CMakeLists.txt: Set policy CMP0074 to new behaviour. Rivet version
    is read from file VERSION.

    * cmake/README.cmake: Some changes in directories used.

    * src/mod_rivet_ng/mod_rivet.h: Removed statement "APLOG_USE_MODULE(rivet);"
    from the module header file.

2018-12-07 Massimo Manghi <mxmanghi@apache.org>
    * rivet/pkgIndex.tcl: completed with actual list of packages

2018-12-04 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: now infer the version number from VERSION.
    * doc/rivet.xml,doc/xml/examples.xml: modified example "color table"

2018-12-03 Massimo Manghi <mxmanghi@apache.org>
    * cmake/CMakeList.c: we infer the version number from the file
    VERSION assumed to reside in the project root directory
    * src/parser/rivetParser.c: 
    * src/mod_rivet_ng/mod_rivet_common.c: type cast of pointer
    arithmetics into int

2018-11-23 Massimo Manghi <mxmanghi@apache.org>
    * VERSION,configure,ac: version number bumped to 3.2.0 as we created
    3.1 out of branch 3.0 in order to highlight possible regressions that
    may surface as a consequence of fixing bug #62926

2018-11-20 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivetCore.c: patching from 3.0 to fix bug #62926
    * tests/post.rvt,fqrivet_var.tcl: add tests to prevent post and get
    variables crosstalk (bug #92926)
    * doc/rivet.xml.in: displaying full version associated to the manual

2018-11-11 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: correct macro description
    * src/mod_rivet_ng/rivetChannel.c: new copyright notice
    * doc/xml/commands.xml: correct sentence in ::rivet::exit manual page

2018-11-02 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/mod_rivet.[c|h]: add macro RIVET_MPM_BRIDGE to
    compose rivet bridge names

2018-10-17 Massimo Manghi <mxmanghi@apache.org>
    * tests/commands.tcl: changing test on self closing element
    * [doc/rivet.xml.in|doc/rivet.xml]: removed delimiters of
    symbols expanded by svn
    * doc/xml/commands.xml: fixed entities in ::rivet::xml manual page

2018-08-16 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/xml.tcl: changing form to support single self
    closing XML elements such as <tag attr1="val1" attr2="val2".... /> 
    when if the text string is empty
    * tests/commands.tcl: changing ::rivet::xml test accordingly
    * doc/xml/commands.xml: documenting new ::rivet::xml feature

2018-08-07 Massimo Manghi <mxmanghi@apache.org>
    * VERSION,configure.ac: first commit after svn to git migration.
    The trunk branch is now the master branch of the git repository.
    setting the master branch version as 3.1.0.
    * .gitignore: untracking Makefile.in and putting in .gitignore
    autools generated files
    * doc/rivet.xml.in: removing references to now unsupported 
    svn keywords substitutions

2018-06-25 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl.in: the error handler of error scripts requires
    ::Rivet::script to keep the actual 'script' being run 
    (reintegrated into trunk from branches/3.0)

2018-06-18 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/*.tcl: fully qualifying calls to ::rivet::lempty

2018-06-14 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl: fixed bug in error scripts' error handling (the
    case of handling an error that occurs in the default error script may
    need the introduction of a new test

2018-04-09 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/mod_rivet.h: changing argument list of function
    *mpm_thread_interp in the bridge interface. It must work
    as an accessor to the interpreter database when both getting
    and storing an interpreter pointer

2018-02-28 Massimo Manghi <mxmanghi@apache.org>
    * Makefile.am: default_request_handler.tcl and init.tcl can be
    installed without the exec bit set

2018-02-17 Massimo Manghi <mxmanghi@apache.org>
    * NOTICE: update copyright statement
    * src/mod_rivet_ng/worker_prefork_common.c: Rivet_CleanupProcessor
    to call RivetCache_Cleanup
    * doc/rivet.xml: new version in docs

2018-02-08 Massimo Manghi <mxmanghi@apache.org>
    * VERSION,configure.ac: bumping version to 3.0.2

2018-02-08 Ronnie Brunner <ronnie@apache.org>
    * doc/apachetest.tcl: make independent from TclX adding
    our own 'kill' procedure. Changing signal to stop the
    http webserver as KILL
    * doc/runtests.tcl: removing depend on the prefork module

2018-02-03 Massimo Manghi <mxmanghi@apache.org>
    * src/librivet/rivetPkgInit.c: changing way we determine the
    namespace pointer in order to avoid the necessity of gaining 
    access to the module globals and therefore avoid including 
    mod_rivet.h. The macro APLOG_USE_MODULE introduced in
    mod_rivet.h makes the library load fail outside
    mod_rivet and Apache
    * rivet/pkgIndex.tcl: recreated from scratch

2018-01-23 Massimo Manghi <mxmanghi@apache.org>
    * VERSION,configure.ac: bumping version number to 3.0.1
    * doc/rivet.xml.in,doc/xml/request.xml: wrong links and information
    about MPM support fixed
    * src/mod_rivet_ng/mod_rivet.h: add APLOG_USE_MODULE
    macro
    * src/mod_rivet/ng/rivet_worker_mpm.c: number
    of threads waited on exit by the supervisor was wrong
    and it's now the acutal number of threads available,
    variable uninitalized in loop fixed 

2018-01-23 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/lazybridge.xml: more improvements and
    inclusion of new comments to the code
    * doc/xml/commands.xml: rather cosmetic improvment 
    to the page of ::rivet::try
    * src/mod_rivet_ng/rivet_lazy_mpm.c: more comments

2018-01-19 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/installation.xml: various broken links fixed
    * doc/xml/internals.xml: expanding some explanations and changing
    links to the Apache server from version 2.2 to 2.4
    * doc/xml/lazybridge.xml: expanding code explanations
    * src/mod_rivet_ng/rivet_lazy_mpm.c: commenting code in
    various functions

2018-01-17 Massimo Manghi <mxmanghi@apache.org>
    * : Released as 3.0.0

2018-01-09 Massimo Manghi <mxmanghi@apache.org>
    * tests/virtualhost.test,tests/channel.test: changed
    virtual hosts declarations. Now accepting '*' as host
    name prevents test from failing with certain set ups (a
    DNS related problem)
    * doc/xml/intro.xml: add ackowledgements to George
    * win/: old Windows scripts removed
    * src/mod_rivet: old mod_rivet code removed

2018-01-01 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/: more error checking and several improvements to
    the manual

2017-12-29 Massimo Manghi <mxmanghi@apache.org>
    * doc/rivet.xml.in: more entities to extend documentation
    * doc/xml/intro.xml: introduction revised and extended
    * doc/xml-2: files used to generate the manual removed or
    moved into doc/xml
    * doc/rivet.css: changed color palette

2017-12-22 Massimo Manghi <mxmanghi@apache.org>
    * doc/: more changes to manual pages

2017-11-29 Massimo Manghi <mxanghi@apache.org>
    * NOTICE, README: expanded and obsolete information amended 

2017-10-31 Massimo Manghi <mxmanghi@apache.org>
    * merging branch cmake back into trunk
    * tests/broken.test: the error message form has changed with
    the Tcl based new request handling procedure

2017-10-28 Massimo Manghi <mxmanghi@apache.org>
    * docs/xml/cmake.xml: draft manual page for cmake build system

2017-10-22 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl.in: Following Jeff Lawson's suggestion we check
    if init.tcl is loaded from within mod_rivet. If we're not running
    from it we don't divert the [exit] command 
    * src/librivet/rivetPkgInit.c: removing code kept in the file 
    that had been commented because not needed. 

2017-10-18 Massimo Manghi <mxmanghi@apache.org>
    * doc/: add new cmake.xml file, further manual developments

2017-10-12 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/mod_rivet.c: add preprocessor test on
    variable declaration for the WIN32 build
    * src/librivet/rivetWWW.c: fixed subtle buffer overflow
    mistakenly assuming snprintf printed a byte less than
    * doc/xml/processing.xml,command.xml: further elaboration of the
    Rivet 3.0 manual. Update ::rivet::redirect manual entry
    * tcl/rivet-tcl/redirect.tcl: now handling generic boolean arguments
    or any integer > 0 (as for the HTTP status codes)

2017-09-17 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/examples.xml: moved into final directory

2017-09-15 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio.tcl: new version 1.1 of class Database
    new method mkdir for class Result
    * docs/Makefile.am: removed automatic manual creation upon installation

2017-09-03 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio_Mysql.c: unqualified string command conflicted
    with Database class same method 

2017-08-18 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio.tcl: method build_where_clause treated
    single value key differently, but this failed to remove braces
    for the representation of a single element list containing space
    characters. The method has been changed the have an uniform
    way to handle this

2017-08-12 Massimo Manghi <mxmanghi@apache.org>
	* src/mod_rivet_ng/mod_rivet.c: moving to 
	Rivet_RunServerInit the call to the bridge specific
	server initialization script. Confining compilation
	of the code checking AP_PARENT_PID to Windows
	systems

2017-08-10 Georgios Petasis <petasis@apache.org>
    * cmake/CMakeLists.txt: Modified also variable CMAKE_PREFIX_PATH, as
    TCL_ROOT and TclStub_ROOT are specific to CMake 3.9.0, and will be
    removed. See https://gitlab.kitware.com/cmake/cmake/issues/17158.
	
2017-08-11 Massimo Manghi <mxmanghi@apache.org>
	* src/mod_rivet_ng/mod_rivet.c: add check on 
	environment variable AP_PARENT_PID to prevent
	server Tcl init script from running in winnt
	controlled child processes (as per Apache HTTP 
	server documentation)
	
2017-08-10 Georgios Petasis <petasis@apache.org>
    * src\mod_rivet_ng\apache_config.c:
    * src\mod_rivet_ng\mod_rivet.c:
    * src\mod_rivet_ng\mod_rivet_common.c:
    * src\mod_rivet_ng\mod_rivet_generator.c:
    * src\mod_rivet_ng\rivet_lazy_mpm.c:
    * src\mod_rivet_ng\worker_prefork_common.c: Locally declared symbol
    rivet_module as extern (DLLIMPORT).

    * branches\cmake\src\mod_rivet_ng\mod_rivet.h: Symbol rivet_module
    removed from header file.

    * branches\cmake\src\mod_rivet_ng\mod_rivet_common.c: Used ckalloc() instead
    of apr_pcalloc() for variable globals, in Rivet_PerInterpInit().

    * cmake\README.cmake:
    * cmake\CMakeLists.txt: Added support for picking a Tcl installed at a
    non-standard location. Updated README.cmake with an example. Also disabled
    the switch to export all symbols from mod_rivet.so
    (WINDOWS_EXPORT_ALL_SYMBOLS).

    * src\mod_rivet_ng\mod_rivet_common.c:
    * src\mod_rivet_ng\rivetCore.c: Fixes in DLLEXPORT.

2017-08-07 Massimo Manghi <mxmanghi@apache.org>
	* src/mod_rivet_ng/mod_rivet.c: Rivet_ServerInit is now implementing
	the recommended mechanism to avoid the double load of external
	modules
	
2017-08-05 Georgios Petasis <petasis@apache.org>
    * cmake\CMakeLists.txt: rivetparser/rivetlib shared libraries now have the
    prefix "lib" under all platforms.

    * cmake\cmake_extra_modules\rivet_config.h.cmake: RIVET_RIVET_CORE or
    RIVET_CORE? Added also support for RIVET_CORE, but disabled, as it causes
    compilation errors (in C preprosessor, two strings are compared, which is
    not supported).

    * rivet\pkgIndex.tcl: Dropped ".so" in favour of "info sharedlibextension".

    * src\librivet\rivetCrypt.c:
    * src\librivet\rivetList.c:
    * src\librivet\rivetPkgInit.c:
    * src\librivet\rivetWWW.c: Definition of EXTERN and exported symbols through
    DLLEXPORT.

    * src\mod_rivet_ng\mod_rivet.c:
    * src\mod_rivet_ng\mod_rivet_cache.c:
    * src\mod_rivet_ng\mod_rivet_common.c:
    * src\mod_rivet_ng\mod_rivet_generator.c:
    * src\mod_rivet_ng\rivetCore.c:
    * src\mod_rivet_ng\rivetCore.h:
    * src\parser\parserPkgInit.c: Definition of EXTERN and exported symbols
    through DLLEXPORT.

2017-08-05 Georgios Petasis <petasis@apache.org>
    * src\mod_rivet_ng\rivet_lazy_mpm.c:
    * src\mod_rivet_ng\rivet_prefork_mpm.c:
    * src\mod_rivet_ng\rivet_worker_mpm.c: Added DLLEXPORT for the symbol
    defined with RIVET_MPM_BRIDGE macro.

    * cmake\CMakeLists.txt: Exported all symbols for mod_rivet.so under Windows,
    to copy the behaviour in UNIX systems (where all symbols are exported from
    shared libraries).

    * cmake\cmake_extra_modules\checks.cmake:
    * cmake\cmake_extra_modules\config.h.cmake:
    * cmake\cmake_extra_modules\rivet_config.h.cmake: Under VC11, round()
    has not been implemented. Added checks in CMake build, for detecting
    round()'s absence.

    * src\mod_rivet_ng\rivetCore.c:
    * src\mod_rivet_ng\rivet_lazy_mpm.c:
    * src\mod_rivet_ng\rivet_prefork_mpm.c:
    * src\mod_rivet_ng\rivet_worker_mpm.c:
    * src\mod_rivet_ng\worker_prefork_common.c:
    * src\parser\parserPkgInit.c: Changes for avoiding link error under Windows
    (mostly) related to importing exported symbols from  mod_rivet.so.

2017-08-05 Georgios Petasis <petasis@apache.org>
    * src/mod_rivet_ng/mod_rivet_common.c: Reordered header files, so
    <unistd.h> (and its check) to come after "mod_rivet.h" that includes
    "rivet_config.h".

2017-08-04 Georgios Petasis <petasis@apache.org>
    * cmake\CMakeLists.txt:
    * cmake\cmake_extra_modules\FindAPR.cmake:
    * src\mod_rivet_ng\TclWebapache.c:
    * src\mod_rivet_ng\mod_rivet.c:
    * src\mod_rivet_ng\mod_rivet.h:
    * src\mod_rivet_ng\mod_rivet_cache.c:
    * src\mod_rivet_ng\mod_rivet_common.c:
    * src\mod_rivet_ng\mod_rivet_generator.c:
    * src\mod_rivet_ng\rivetCore.c:
    * src\parser\rivetParser.c: Changes for fixing compilation errors under
    Windows.

2017-08-04 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivetCore.c: changes demanded by windows compiler
    * rivet/pkgIndex.tcl: recreated with a up to date list of packages

2017-08-04 Georgios Petasis <petasis@apache.org>
    * cmake\CMakeLists.txt: Various changes for better support build under
    Windows.
    
    * cmake\README.cmake: Added a section for building under Windows.
    
    * cmake\cmake_extra_modules\FindAPACHE.cmake: Enhanced customisability.
    The user can guide detection with variables APACHE_INCLUDE_DIR_HINTS,
    APACHE_MODULE_DIR_HINTS, APACHE_LIB_DIR_HINTS, APACHE_ROOT.
    
    * cmake\cmake_extra_modules\FindAPR.cmake: Enhanced customisability.
    The user can guide detection with variables APR_INCLUDE_DIR_HINTS,
    APACHE_INCLUDE_DIR_HINTS, APACHE_ROOT, APR_LIBRARY_HINTS,
    APRUTIL_INCLUDE_DIR_HINTS, APRUTIL_LIBRARY_HINTS.

2017-08-03 Georgios Petasis <petasis@apache.org>
    * CMake build system: Removed "lib" prefix from some libraris.

2017-08-03 Georgios Petasis <petasis@apache.org>
    * CMake build system: Added support for installing Rivet. Added more
    checks for various definitions in config.h/rivet_config.h.

2017-08-03 Georgios Petasis <petasis@apache.org>
    * CMake build system: Added missing source files, enabled as default
    the build of shared libraries, added needed link libraries. Also
    extended build system for all Rivet libraries (librivetlib.so,
    librivetparser.so, librivet_worker_mpm.so, librivet_prefork_mpm.so,
    librivet_lazy_mpm.so), and checked their linked libraries and missing
    symbols with their versions when build with autoconf.

2017-08-02 Massimo Manghi <mxmanghi@apache.org>
	* Changed references in cmake/CMakeList.txt to build with
	code in src/mod_rivet_ng.

2017-08-02 Georgios Petasis <petasis@apache.org>
    * Created a new branch (cmake) for the CMake build system.

2017-07-24 Massimo Manghi <mxmanghi@apache.org>
	* xml/rivet.xml.in: reflects rivet.xml having been moved to doc/xml
	* rivet/default_request_handler.tcl: code of the default 
	request handler read by mod_rivet
    * Makefile.am: now installing also rivet/default_request_handler.tcl
    * src/mod_rivet_ng/mod_rivet.c: add function for creation of 
    the module_globals strucuture. This structure is not assumed anymore
    to be inherited through a fork operation and it's now in case 
    re-created at child process initialization
    * src/mod_rivet_ng/rivet_lazy_mpm.c: removing
    reference to unused global variable
    * src/mod_rivet_ng/mod_rivet_common.c: Rivet_RunningScripts
    handling default request procedure specified in the configuration
    
2017-07-20 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/formbroker/formbroker.tcl: now using Tcl
    [string is boolean ...]
    
2017-07-19 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/internals.xml: moving the internals chapter
    to its final directory
    * doc/xml/processing.xml: more proof reading corrections

2017-07-13 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/: further developments of the 3.0 manual
    * src/mod_rivet_ng/mod_rivet.c: better coding of
    bridge module search and determination
    * rivet/default_request_handler.tcl: proposed file
    to store the actual request handling code

2017-06-22 Massimo Manghi <mxmanghi@apache.org>
    * doc/rivet.xml.in: introducing rivet.xml.in for
    automatic and consistent definition of versioning entities
    * doc/xml/commands.xml: moved into final directory
    * doc/xml/processing.xml: add new file to separate request
    processing from MPM bridge interface documentation

2017-06-19 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/directives.xml: first rewriting into a new page.
    Still more directives to be documented
    * doc/convert_examples.tcl.in: changed message
    * doc/rivet.css: add directives for styling the
    directives page

2017-06-09 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/: manual rewriting started

2017-06-07 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml-2/: XML manual moved to xml-2 to make
    rewriting easier

2017-05-15 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivet_prefork_mpm.c: server root 
    interpreter needs to re-seed the random number generator

2017-05-11 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl.in: apply Damon's patch concerning
    some tests and error handling. Removed call to the
    undocumented procedure ::Rivet::cleanup_request
    * configure.ac: better wording of some configure
    messages

2017-04-07 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivetCore.c: Fixed bug
    in argument list passed to RivetCache_MakeKey

2017-04-06 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivet_lazy_mpm.c: server_rec
    argument in error logging changed to global
    root server. Passing the virtual host server rec 
    makes the call to ap_log_error quiet and
    if something goes wrong in the thread's Tcl interp
    initialization we don't read anything!

2017-04-05 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/formbroker.xml: better wording of a few
    concepts. Add documentation for the boolean data type
    * doc/xml/internals.xml: fixed incomplete sentence

2017-02-10 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/formbroker/formbroker.tcl: now
    handling natively also boolean in the form y|n or
    0|1

2017-02-01 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: defining and substituting
    RIVETLIB_VERSION
    * rivet/init.tcl.in: the ::rivet namespace is
    created already in src/mod_rivet_ng/mod_rivet_common.c
    Package rivetlib is loaded here now 
    * src/mod_rivet_ng/mod_rivet_common.c: in
    function Rivet_PerInterpInit more code is 
    devolved to the Tcl initialization

2017-01-18 Massimo Manghi <mxmanghi@apache.org>
    * doc/Makefile.am: integration of the automake
    infrastructure and rules
    * src/Makefile.am: removed prefixing of
    library names with DESTDIR

2017-01-17 Massimo Manghi <mxmanghi@apache.org>
    * Makefile.am: removing the mpm shared library
    directory only if exists (it's removed by
    the libtool generated rules by the src/Makefile.am)
    * src/Makefile.am: installation directories
    have been prepended by DESTDIR

2017-01-16 Massimo Manghi <mxmanghi@apache.org>
    * Makefile.am: removing the _configs.sed file generated
    by configure in distclean target rule fulfills now
    entirely the 'distcheck' target
    
2017-01-04 Massimo Manghi <mxmanghi@apache.org>
    * Makefile.am,src/Makefile.am: now handling the 'dist'
    and 'distcheck' targets of the automake generated
    Makefile
    * configure.ac: add RIVET_CORE definition
    * src/mod_rivet_ng/rivetCore.c: now calls
    the alternate form of RivetParse
    * src/parser/parserPkgInit.c: altenate form of
    function Rivet_Parser elimianates the need of
    enclosing the code in the namespace ::request

2016-12-19 Massimo Manghi <mxmanghi@apache.org>
    * rivet/mod_rivet_ng/mod_rivet_cache.c: better wording of cache 
    functions names. 

2016-12-12 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl.in: [url_script] now evaluated
    explicitly in the ::request name space. We
    don't need the Rivet parser to place a script
    in this namespace
    * rivet/mod_rivet_ng/rivetCore.c: now Rivet_GetRivetFile
    is called with the flag 'toplevel' set to zero. The
    code handling this flag could be removed if we 
    abandoned the traditional mod_rivet core

2016-12-07 Massimo Manghi <mxmanghi@apache.org>
    * src/librivet/rivetWWW.c: enlarging buffer 
    allocated in ::rivet::escape_sgml_chars
    * configure.ac: removed test on the apache
    version (we don't support apache-1 anymore)
    
2016-12-06 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: mod_rivet_ng now default for
    builing mod_rivet
    * src/mod_rivet_ng/rivetCore.c: safer condition
    testing should avoid assumptions about how
    the compiler builds pointer comparisons
    * src/mod_rivet_ng/worker_prefork_common.c: 
    before running the child init script the
    running configuration pointer is the thread
    private data has to be set
    * tests/broken.test: new error message structure
    * tests/checkfails.tcl, failtest.tcl: changed
    value returned by one of the tests

2016-12-05 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/session/session-class.tcl: new
    method synch saves in the session cache data
    coming from form
    * src/mod_rivet_ng/mod_rivet_common.c: more
    careful design assign to a single function
    the task of determining the current configuration
    when an interpreter is initialized

2016-11-30 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivet_lazy_mpm.c:
    * src/mod_rivet_ng/worker_prefork_mpm.c: setting
    the running_conf pointer in the thread private
    data enables ::rivet::inspect to return 
    meaningful data even outside of request processing (in
    the forms that make sense)
    * src/mod_rivet_ng/rivetCore.c: more accurate
    determination of the rivet_server_rec makes
    possible to determine the pointer also
    outside a request processing

2016-11-28 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/: new configuration directives
    RequestHandler (request handling procedure), ImportRivetNS
    and ExportRivetNS (override parameters for
    build options). RequestHandler enables rivet
    to run an application specific request handler.
    * src/mod_rivet_ng/rivetInspect.c: now runs also
    during the server initialization stage. The whole
    rivet core is setup during that phase but only
    a few commands are actually operational (most
    of them make sense only during an HTTP request processing)

2016-11-23 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/form/form.tcl,form2.tcl: fix full
    qualification of the ::rivet::lempty command
    * src/mod_rivet_ng/mod_rivet_common.c: changed or removed
    old comments that don't apply to the current code
    * configure.ac: now quoting strings when passed 
    to macro AC_MSG_CHECKING

2016-11-22 Damon J. Courtney <damon.courtney@gmail.com>
    * rivet/init.tcl.it: Rewrite init.tcl.in from the top down

2016-11-22 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/session/session-class.tcl:
    * rivet/packages/form/form.tcl,form2.tcl: now
    fully qualifying mod_rivet commands, fixed
    'file' method that emits an 'email' HTML input element
    * doc/xml/formbroker.xml: correct coding example

2016-11-19 Massimo Manghi <mxmanghi@apache.org>
    * src/mod-rivet/rivetInspect.c: now returning
    an empty string if a value is undefined
    * configure.ac: now defaults to non automatic
    import of ::rivet namespace into global namespace

2016-11-17 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio_Postgresql.tcl: applied
    consistent single quote character handling by
    calling PgTcl function pg_quote (closes bug #60378)
    * rivet/packages/formbroker/formbroker.tcl: fixed
    bug in method response. Package version number
    bumped up to 1.0
    * doc/xml/formbroker.xml: first draft of the
    manual page of package formbroker with example
    of implementation of a validator
    * doc/xml/commands.xml: fixed type in page
    of ::rivet::xml

2016-11-15 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl.in: trimming error buffer
    to make test message matching easier
    * rivet/rivet-tcl/catch.tcl|try.tcl: better
    script evaluation is catch/try construct, complete
    error codes in case ::rivet::abort_page is to be
    handled
    * src/mod_rivet_ng/rivetCore.c: direct
    result object handling in [::rivet::inspect script]
    * try.rvt: changed test expression matching

2016-11-12 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl.in: removed debugging messages,
    request handling made much simpler after
    ::rivet::inspect changed its behavior when
    a script is undefined
    * src/mod_rivet_ng/rivetInspect.c: changed 
    to an empty string the value returned when
    a configuration script is undefined
    * src/mod_rivet_ng/mod_rivet_common.c: we don't
    need to handle at C level the error handler
    and the request cleanup Tcl scritps: they are
    called from Tcl
    * src/mod_rivet_ng/mod_rivet_generator.c: removed
    code unused by this version of the module

2016-11-11 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl.it: further development of the
    url processing procedures allows script level
    overriding of both request handling and error handling
    * src/mod_rivet_ng/rivetCore.c: ::rivet::inspect C code
    argument handling improved

2016-11-09 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet_common.c: the request_rec
    field to be checked in order to determine whether we
    are serving the request is 'header' non 'content_type'.
    This bug didn't surface because it's set to the same
    string when a request is handed down to the module 
    chain, but it's been around ever since.

2016-11-08 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/apache_config.c: fixed conf
    merge that didn't assign the correct cache size
    * rivet/init.tcl: fixed exception scripts checks
    * src/mod_rivet_ng/rivetCore.c: command 'parse -string'
    composes the script and calls directly Tcl_EvalObjEx
    * src/mod_rivet/apache_config.c: fixed same bug
    found in Rivet_MergeConf developing mod_rivet_ng

2016-11-07 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet_ng/rivetCore.c: changed also code
    of command ::rivet::parse, now handling the
    cache and calling directly Tcl
    * src/mod_rivet_ng/mod_rivet_generator.c: now
    calling Tcl_EvalObjEx instead of Rivet_ParseExec
    * src/mod_rivet_ng/mod_rivet_common.c: now initializing
    the thread interpreter private cache with
    the new calls to the cache handler
    * rivet/init.tcl.in: tested also call to AbortScript

2016-11-03 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet_cache.[c|h]: new file
    for the cache code created to have uniform file structure
    in order to build the module
    * src/mod_rivet_ng/mod_rivet_cache.c: completed code for cache management
    * src/mod_rivet_ng/rivetCore.c: new command ::rivet::url_script
    returns the full URL referenced script to be parsed
    subsequently
    * src/mod_rivet/mod_rivet_generator.c: we are now
    calling the cache routines, but it won't be needed any longer
    as the cache control and interaction are devolved to 
    the parse routines
   
2016-10-28 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/[lazy|worker|prefork]_mpm_bridge.c: new
    Rivet_ExecutionThreadInit unifies thread initialization
    common to each bridge
    * src/mod_rivet/apache_config.c: the Rivet_MergeConfig 
    method did not merge the cache size value
    * src/mod_rivet/mod_rivet_common.c: New function
    Rivet_ExecutionThreadInit

2016-10-24 Massimo Manghi <mxmanghi@apache.org>
    * rivet/mod_rivet_ng: new directory to develop new 
    module having a Tcl based content generation script
    * rivet/packages/formbroker/formbroker.tcl: new method
    'reset' restores a form internal status
    * rivet/rivet-tcl/try.tcl: tab expansion to fix
    indentation
    * doc/xml/formbroker.xml: add XML manual page for the
    form broker package

2016-10-20 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/formbroker/formbroker.tcl: new method
    'response' returns an array with the last processed response
    or an array with the defaults value

2016-10-18 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/formbroker/formbroker.tcl: add response copy
    and default value management
    
2016-10-17 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/formbroker/formbroker.tcl: add global
    quoting switch, add method for single form variable method (untested)

2016-10-15 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/formbroker/formbroker.tcl: add quote 
    mechanism

2016-10-12 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/formbroker/formbroker.tcl: removed need
    for a form_name argument. Now forms receive automatic names.
    The list of fields whose validation failed is now
    a flat list of field_name - validation_error pairs suitable
    to be put in dictionary or array

2016-10-11 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/formbroker/formbroker.tcl: first stable
    version of the FormBroker package. The package checks and
    validates form data stored in response array as produced
    by ::rivet::response
    * contrib/validate_mac.tcl: example of validator checking
    and mangling a network mac address. This function is meant
    to work with the FormBroker

2016-10-09 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet_generator.c: improved comments in view of
    branching for new version of content generation script
    * rivet/packages/formbroker/formbroker.tcl: inital reworking for
    a transaction type form broker and validator

2016-09-24 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/formbroker/formbroker.tcl: add proposed form broker
    * rivet/packages/dio/dio.tcl: now returning also results in a dictionary
    * rivet/packages/dio/dio_Mysql.tcl: supporting also NULL as keyword for 
    NULL values of a column
    * doc/xml/commands.xml: further elaboration of ::rivet::exit command
    by adding alink to MaxRequestsPerChild parameter in Apache docs 

2016-09-19 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet.tcl.in,rivet.tcl: fixed errors in comments

2016-09-08 Massimo Manghi <mxmanghi@apache.org>
    * tests/runtests.tcl: support for Apache 1.3 dropped. Add modules needed by
    Apache 2.4
    * tests/apachetests/apachetests.tcl: Dropped support for Apache 1.3
    * tests/shorthand.test: shorthand notation test versioning added
    * tests/virtualhost.test: removed NameVirtualHost directive no longer supported
    * tests/bailout.test: add tests for ::rivet::catch and ::rivet::try
    * tests/catch.rvt,try.rvt: script testing handling various conditions
    * rivet/rivet-tcl/url_query.tcl: add new command ::rivet::url_query
    
2016-09-07 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/catch.tcl: fixed argument management in ::catch call

2016-09-06 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/lazybridge.xml: further lazybridge documentation 
    development

2016-07-11 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/form/form2.tcl,rivet/pkgIndex.tcl: bump up package
    form version to 2.1

2016-07-04 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml: ::rivet::catch man page example corrected
    * rivet/packages/form/form2.tcl: fixed output in code for the 
    <select>...</select> form element method
    * src/mod_rivet/mod_rivet_generator.c: removed code commented away 
    * src/mod_rivet/rivetCore.c: FQ var command name 

2016-06-16 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml: rephrasing the ::rivet::catch manual page

2016-03-18 Massimo Manghi <mxmanghi@apache.org>
    * tclconfig/: reverting to previous release

2016-03-17 Massimo Manghi <mxmanghi@apache.org>
    * tclconfig/tcl.m4,install-sh,ltmain.sh,libtool.m4: updating autotools 
    and libtool macros to the latest versions available

2016-02-16 Massimo Manghi <mxmanghi@apache.org>
    * src/doc/xml/lazybridge.xml: further elaboration of the lazy bridge

2016-02-05 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_worker_mpm.c: removed code implmenting the old
    model of inter thread communication. This should fix the problem of
    redundant mutex/cond variable creation/destruction needed by the former
    model to avoid memory leaks

2016-02-01 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_worker_mpm.c: upon process shutdown thread status 
    has to be set to 'init' to force thread exit

2016-01-25 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivetInspect.c: adding handling of the MpmBridge directive
    to the ::rivet::inspect command
    * doc/xml/lazybridge.xml: more development to lazy bridge manual page
    * rivet/packages/calendar/: preparing new version of package calendar

2016-01-19 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_lazy_mpm.c: removed unused field structures, boolean
    for process shutdown moved to process wide module status
    * doc/lazybridge.xml: started documentation of the lazy bridge

2016-01-17 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_worker_mpm.c: removed variable needed only when built with
    the old thread communication model

2016-01-14 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_worker_mpm.c: new communication method between bridge
    controlled Tcl threads and handler threads. This method was inspired by
    the experiment done with the lazy bridge and proved to have simpler code
    and avoids the need to rely on the handler thread memory pool that gets
    destroyed too often
    * src/mod_rivet/mod_rivet.h: removed definition specific to the worker bridge

2016-01-07 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/: fixed aimed at consistently determining the virtual host
    associated to a thread

2016-01-05 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet_generator.[h|c]: files holding the output generation
    procedures on which all the bridges rely (previously stored in mod_rivet.c)
    * src/mod_rivet/rivet_lazy_mpm.c: purged of redundant locking code and unused variables
    * src/mod_rivet/worker_prefork_mpm.c: new file with thread private data extension to
    bridge status 
    * doc/xml/internals.xml: update to amend out of date explanations

2015-12-28 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_lazy_mpm.c: fixed missing interpreter scripts initialization
    * doc/xml/internals.xml: documenting bridge interpreter accessor function 

2015-12-26 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/worker_prefork_common.c: functions common to both the prefork
    and worker bridges, but not general enough bur rather specific to the worker
    model adopted by them
    * src/mod_rivet/rivet_lazy_mpm.c: further development, now capable of serving
    rivet requests, but needs to be completed.
    * src/mod_rivet/mod_rivet_common.c: more stuff moved from mod_rivet to this file
    * src/mod_rivet/mod_rivet.h: new data organization with bridge specific thread
    private data
    * src/mod_rivet/Tclwebapache.c: API changed from Tclwebreq pointers to 
    thread private data that is supposed to store most of the thread environment

2015-12-22 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_lazy_mpm.c: taking a snapshot of the current development
    as this code proved to be quite robust when stressed using 'ab'

2015-12-20 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_lazy_mpm.c: first prototype of a threaded bridge with
    reduced start up time and thread number optimization

2015-12-15 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_lazy_mpm.c: new lazy MPM bridge with a smoother workload 
    balancing (should work better for low to middle workloads)
    * src/mod_rivet/rivet_worker_mpm.c: improved code comments
    * src/mod_rivet/mod_rivet.c: handling of mpm_bridge configuration parameter.
    New bridge module search method
    * src/mod_rivet/rivet_config.c: new MpmBridge configuration directive

2015-12-13 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_worker_mpm.c: changed in order to have a better handling
    of ::rivet::exit (the call to exit( ) is now carried out from within the
    supervising thread
    * src/mod_rivet/rivet_prefork_mpm.c: Adding exit command handler
    * src/mod_rivet/mod_rivet.c: new central Rivet_Finalize method that calls
    any bridge module finalization. The function deletes the thread key to
    access private data

2015-12-08 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml,asciiglyphs.tcl: adding documentation for ::rivet::try
    and AsciiGlyphs

2015-12-06 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/asciiglyphs.tcl: Package HexGlyphs renamed as AsciiGlyphs

2015-12-05 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/try.tcl: new command ::rivet::try wraps core
    same command to trap ::rivet::abort_code and ::rivet::exit interruptions
    * src/mod_rivet/rivetCore.c: removed semicolons in macro CHECK_REQUEST_REC
    calls
    * rivet/rivet-tcl/catch.tcl: using [uplevel] to control Tcl core [catch] 
    command (as it's been customary with Tcl ever since)

2015-12-03 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/internals.xml: explaining the MPM bridge jump table
    * doc/rivet.css: changing colors adopting 2.3 style temporarily
    * doc/images: new images with new colors
    * doc/xml/intro.xml,install.xml: removing reference no longer
    valid for version 3.0
    * packages/hexglyphs/hexglyphs.tcl: new glyphs for more punctuation
    characters

2015-11-27 Massimo Manghi <mxmanghi@apache.org>
    * VERSION,configure.ac: Major version number increased to 3.0.0

2015-11-25 Massimo Manghi <mxmanghi@apache.org>
    * src/rivet.h: defined RIVET_CMD_EXPORT as wrapper to Tcl_Export
    * tests/bailout.test: redirect.test renamed as bailout.test. It's meant
    to gather all the tests concerning exceptions like abort_page and ::rivet::exit
    * src/librivet/rivet[Crypt|WWW|List].c: command export mechanism changed
    as we are now explicitly exporting commands
    * rivet/rivet-tcl/catch.tcl: new (non-exported) command ::rivet::catch
    * rivet/init.tcl[.in]: command export mechanics changed
    * src/mod_rivet/rivetCore.c: command export made explicit through RIVET_CMD_EXPORT.
    Abort page command now handling also [::rivet::abort_page -exiting] test

2015-10-27 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl.in: actually was this file that had to be changed

2015-10-22 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl: now renaming the [exit] core command into ::Rivet::tclcore_exit
    and replacing with a Tcl scripts that calls ::rivet::thread_exit
    * rivet/packages/hexglyphs/hexglyphs.tcl: package generating ASCII 
    glyphs of hexadecimal characters and punctuation character : and -

2015-10-18 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_worker_mpm.c: returning HTTP_INTERNAL_SERVER_ERROR
    to requests coming in during a process shutdown. This is required
    by the exit command handling
    * src/mod_rivet/mod_rivet.c: changed some log message calls
    in order to have ap_log_rerror when an error occurs during
    a request processing 

2015-10-17 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_worker_mpm.c,rivet_prefork_mpm.c,mod_rivet.c:
    bridge jump table macro definition

2015-10-14 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/hexgliphs/hexgliphs.tcl: new package HexGliphs
    to print hexadecimal character gliphs as ascii art

2015-10-04 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet.c: moving Rivet_ProcessorCleanup in 
    mod_rivet_common.c
    * src/mod_rivet/mod_rivet.h: add exit status code to
    thread private data
    * src/mod_rivet/mod_rivet_common.c: Rivet_ProcessorCleanup now
    in this file
    * src/mod_rivet/rivet_worker_mpm.c: thread exit handling
    now calling the finalize handling function. Functions naming
    scheme reformed. Since the exit_thread command forces
    the whole child process to exit the check on the thread
    counter in the supervisor thread was changed as the thread
    executing thread_exit brings about can't exit before
    the supervisor itself terminates
    * src/mod_rivet/rivet_prefork_mpm.c: function naming scheme
    changed.

2015-09-04 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_prefork_mpm.c: fix message severity
    in finalize method
    * src/mod_rivet/rivet_worker_mpm.c: passing actual error
    code to log message if thread join fails

2015-08-30 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet.c: bringing the request type check
    back to Rivet_Handler shook quite a bit the build process as
    it required to create a new file rivet_types.h to store
    various definitions 
    * src/mod_rivet/TclWebapache.c: changed definition of
    TclWeb_InitRequest. The thread private data must have
    stored the whole request processing status
    * src/mod_rivet/rivet_prefork_mpm.c: Request type check moved
    to mod_rivet.c (Rivet_Handler)
    * src/mod_rivet/rivet_worker_mpm.c: Request type stored
    now in the request private data
    * src/parser/parsePkgInit.c: was still including config.h
    instead rivet_config.h. Add mandatory Apache standard 
    copyright statement
    * src/mod_rivet/mod_rivet_common.c: Rivet_CheckType 
    definition changed to return a rivet_req_ctype value
    * src/mod_rivet/rivet_types.h: add new file with
    definition used by various files that don't need mod_rivet.h
    * src/mod_rivet/apache_request.h: removed definition that
    went into rivet_types.h
    * src/Makefile.am: libparser needed to have also LDFLAGS
    to build correctly
    * src/rivet.h: ASF copyright statement, including also
    rivet_types.h
    
2015-08-18 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet.[c|h]: now calling MPM through
    a bridge_jump_table structure with all the functions exported
    by a bridge implementation. Created default exit handler
    so that only if a special exit handler is needed it has
    to be defined
    * src/mod_rivet/rivet_worker_mpm.c: exporting through
    the bridge_jump_table the names of bridge functions
    * src/mod_rivet/rivet_prefork_mpm.c: export of the
    bridge function through the jump table. Removed the
    empty server init function (it's field in the jump
    table set to NULL). Removed exit handler (we rely on
    the default exit handler)
    * src/mod_rivet/rivetCore.c: using the jump table
    to call the exit handler

2015-07-15 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_worker_mpm.c: when thread private data
    are released the correponding pointer is set to NULL in APR 
    threadkey database. It turned out a thread pool is very often
    deleted and data allcoated from it invalidated
    * src/mod_rivet/mod_rivet.c: handler private data key is
    now local to rivet_worker_mpm.c

2015-07-07 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_worker_mpm.c: hopefully a method to 
    determine the thread id portable across Apache versions

2015-06-30 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_worker_mpm.c: thread id determination 
    method changed to support Apache 2.2

2015-06-28 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet.c: fixed errors in comments
    * src/mod_rivet/rivet_worker_mpm.c: Binding release of mutex and
    condition variable to MPM thread pool cleanup, hopefully fixing
    this potential memory leak

2015-06-21 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: add creation of config variable RIVET_CONFIGURE_CMD
    * src/mod_rivet/mod_rivet_common.c: add RIVET_CONFIGURE_CMD handling
    in 'server' array

2015-06-06 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_worker_mpm.c: found a solution for determining
    the current thread pool. Mutex and cond variable are allocated from it
    but never destroyed. Still have to understand if letting the pool go
    is enough for a clean deletion of them
    * src/mod_rivet/rivetInspect.c: a pesky 'static' declaration of
    a local variable was still existing and under intense request firing 
    threads stumbled on it.

2015-06-03 Massimo Manghi <mxmanghi@apache.org>
    * doc/rivet.css: changing selector for namespace table as DocBook
    seems not to honor the id attribute anymore
    * doc/xml/request.css: changing the id "namespaces" as class

2015-05-25 Massimo Manghi <mxmanghi@apache.org>
    * src/Makefile.am: disabled build of aprthread experimental bridge 
    * src/mod_rivet/mod_rivet.h: introduced opaque datatype mpm_bridge_status
    and removed bridge specific variables from mod_rivet_globals. 
    * src/mod_rivet/mod_rivet.c: removed handling of bridge specific status
    * src/mod_rivet/rivet_worker_mpm.c: devolving to this file all the handling
    of its internal status
    * src/mod_rivet/rivet_prefork_mpm.c: changes imposed by modification
    of the APIs and also new responsabilities devolved to Rivet_CreatePrivateData.

2015-05-21 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_prefork_mpm.c: child processes created by fork calls
    inherit an interpreter that needs to import the ::rivet namespace when
    configured that way

2015-05-19 Massimo Manghi <mxmanghi@apache.org>
    * src/rivet.h: macro THREAD_PRIVATE_DATA now simply casts ClientData
    pointer to a rivet_thread_private pointer
    * src/mod_rivet/mod_rivet.h: type vhost_interp renamed as rivet_thread_interp
    * src/mod_rivet/mod_rivet.c: Server root interpreter not initialized
    with mod_rivet core as it's pointless to have the rivet commands
    for a ServerInitScript. Rivet core deferred to child process initialization
    for the same interpreter when the OS supports the fork system call, thus
    to rivet_prefork_mpm.c. Changed argument list of Rivet_PerInterpInit in 
    that the function handles a whole rivet_thread_interp object.
    New function Rivet_RunServerInit controls and runs ServerInitScript.
    Thread private key creation devolved to child process initialization
    * src/mod_rivet/rivet_prefork_mpm.c: Rivet_MPM_ServerInit emptied
    Rivet core commands initialized in Rivet_MPM_ChildInit 
    * src/mod_rivet/rivetCore.c: removed dependence from rivet_interp_globals,
    status devolved to rivet_thread_private as it's thread specific not
    interpreter specific. Pointer to the rivet_thread_private cast as
    client data when core commands are create calling Tcl_CreateCommand (see
    macros THREAD_PRIVATE_DATA and RIVET_OBJ_COMMAND)

2015-05-18 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet_common.c: fixed call to apr_palloc which
    allocated dirty ram, changed as apr_pcalloc

2015-05-15 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet.h: further reorganization removes duplication
    of status variables between rivet_thread_worker and rivet_interp_globals
    * src/mod_rivet/rivetCore.c: completed transition from interpreter globals
    to thread private data which now stores per request status 
    * src/mod_rivet/mod_rivet.c: removed globals variable initialization
    * src/mod_rivet/TclWebapache.c: charset determination stored now done in
    TclWeb_InitRequest

2015-05-14 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet.h: removing redundant variable from handler_private
    structure
    * src/mod_rivet/rivet_worker_mpm.c: removing unnecessary call to
    TclWeb_InitRequest which is called in Rivet_SendContent.    

2015-05-12 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet.[c|h]: moving some request processing status
    objects (request_rec, TclWebapache etc) from the interpreter
    globals (mod_rivet_globals) to the thread private data (rivet_thread_private)
    * src/mod_rivet/rivet_[prefork|worker]_mpm.c: Rivet channel creation
    is now removed from Rivet_CreatePrivateData, Private data
    must be allocated indipendtly from the RivetChannel
    * src/mod_rivet/rivetCore.c: setting up status variables storage 
    transition from mod_rivet_globals to rivet_thread_private
    * src/rivet.h: Rivet command macro changed to accept a new
    argument to be passed to a command implementation as ClientData.
    Currently the value passed must be the pointer to the thread private
    data
    * src/mod_rivet/mod_rivet_common.c: New function Rivet_ReleaseChannel
    and initialization of status variables moved to thread private data
    * src/mod_rivet/rivetCore.c:
    changes needed after we moved to rivet_thread_private fields
    driven by C code implementing ::rivet::abort_page.
    Adding bridge name to server array variables.
    * src/librivet/rivetCrypt.c:
    * src/librivet/rivetWWW.c:
    * src/librivet/rivetList.c:
    * src/parser/parserPkgInit.c: Changing command creation macro
    to follow new 3 arguments form

2015-05-05 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet.c: porting error and 
    abort_page handling implemented in branches/2.2 (fixes bug #57501). 
    * src/mod_rivet/mod_rivet.h: abort_page related fields
    moved to rivet_thread_private from interpreter globals
    
2015-04-16 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/rivet_worker_mpm.c: now we assume thread private data
    exist already
    * rivet/init.tcl.in,rivet/init.tcl: new method Rivet::exit now
    replaces Tcl ::exit and calls ::rivet::exit_thread which has 
    an implementation in the MPM bridges 
    * docs/xml/install.xml: removed documentation for obsolete
    configure switch --with-apache-version

2015-03-28 Massimo Manghi <mxmanghi@apache.org>
    * src/mod_rivet/mod_rivet.[c|h]: moved Tcl panic procedure data from
    mod_rivet_globals to rivet_thread_private
    * src/mod_rivet/mod_rivet_common.[c|h]: new procedure Rivet_SetupTclPanicProc
    and Rivet_PanicProc fixed to handle thread private data to get valid
    and thread safe information about the module status. New procedure
    Rivet_CreatePrivateData should provide a common method for all bridges
    to create thread private data
    * src/mod_rivet/rivet_[prefork|worker]_mpm.c: exploiting
    Rivet_CreatePrivateData and Rivet_SetupTclPanicProc makes code
    more localized, removes redundancy and improves readability

2015-03-18 Massimo Manghi <mxmanghi@apache.org>
    * INSTALL: update installation and configuration examples

2015-03-11 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/internals.xml: Improved paragraph on how to extend mod_rivet
    * src/apache-2/mod_rivet.c: Improper handling of 'HTTP_NOT_FOUND' and
    HTTP_INTERNAL_SERVER_ERROR caused mod_rivet to access a non existing 
    memory location (Bug #57686)

2015-02-20 Massimo Manghi <mxmanghi@apache.org>
    * INSTALL: updating examples and version
    * src/mod_rivet/mod_rivet.c: Restoring usual Rivet/VERSION signature

2015-02-07 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/: removed, now maintained only in branches/2.2
    * src/mod_rivet: new directory with code for MPM aware mod_rivet
    * src/experimental: removed

2015-02-03 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/rivet_worker_mpm.c: assigning to base server interpreter
    the channel referenced in private->channel (was dangling and caused segfaults)

2015-02-02 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/rivet_worker_mpm.c: removing commented code and adding
    new function Rivet_MPM_Shutdown aimed at forcing ancillary thread to exit
    * src/experimental/rivetCore.c: in Rivet_Parse returned value of 
    Rivet_ParseExecFile is propagated up to the caller. Probably unnecessary
    now, but just in case we want to have special handling of TCL_CONTINUE or
    TCL_BREAK
    * src/experimental/mod_rivet.c: moving call to after_every_script out
    of Rivet_ParseExecFile and into Rivet_SendContent. Any call to 
    ::rivet::abort_page is now trapped by abort_script
    * src/experimental/TclWebapache.c: if charset is set in the configuration
    then it's set in the headers just before HTTP headers are sent (moved
    from mod_rivet.c

2015-01-19 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: Channel ref count fixed

2015-01-13 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c,mod_rivet_common.c: improved some comments
    * rivet_worker_bridge.c: fixed channel wrong handling 

2015-01-12 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c,mod_rivet_common.c,rivet_[prefork|worker]_bridge.c: fixed
    various bugs with separate channel handling
    * tests/channel.test,channel.tcl: adding test for SeparateChannels 

2015-01-11 Massimo Manghi <mxmanghi@apache.org>
    * tests/redirect.test,redirect.rvt: adding test for command ::rivet::redirect

2015-01-08 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/rivetInspect.c: add SeparateChannels directive introspection
    * doc/xml/command.xml,directives.xml: add explanation of new command
    ::rivet::redirect and new directive SeparateChannel

2015-01-06 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: handling separate_channels flag for virtual host
    private Rivet Channels
    * src/experimental/mod_rivet_common.c: new function Rivet_CreateRivetChannel
    * src/experimental/apache_config.c: Conf directive SeparateChannels
    * src/experimental/rivet_worker_mpm.c,rivet_prefork_mpm.c: Channel creation code
    moved to mod_rivet_common.c
    * configure.ac: apache utils configuration split from APR configuration
    * Makefile.am: new symbols APU_INCLUDES and APU_LDFLAGS

2014-12-21 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/redirect.tcl: passing a meaningful dictionary as error descriptor
    * src/experimental/rivetCore.c: supporting also method 'get'
    * src/experimental/Tclwebapache.c: new function TclWeb_OutputHeader[Get|Set] to
    explicitly suggesting they are accessing the output headers

2014-12-17 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/rivetCore.c: new 'headers sent' introspection command to
    understand whether headers have been sent already
    * rivet/rivet-tcl/redirect.tcl: command didn't fail with a meaningful message
    if headers had been sent already because of ::rivet::no_body that blocks output
    to the socket. The procedure now returns an error if ::rivet::headers sent 
    returns 1

2014-12-16 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: bumping version number to 2.3.0
    * rivet/init.tcl: recreated by automake
    * rivet/rivet-tcl/redirect.tcl: add new command ::rivet::redirect
    * src/experimental/mod_rivet.c: Tcl_Flush call moved from Rivet_ExecuteAndCheck to 
    the very end of Rivet_SendContent, also TclWeb_PrintHeader is now unique just before
    the I/O buffer is flushed

2014-12-06 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c,src/apache-2/mod_rivet.c: Rivet init package bound to
    be $(RIVET_MAJOR_VERSION).$(RIVET_MINOR_VERSION) and defined in autotool variable
    INIT_VERSION (to be transformed into RIVET_INIT_VERSION for C code includes)
    * rivet/rivet-tcl/read_file.c: argument lists admit a variable number of extra arguments
    to be evaluated as argument of 'fconfigure' call
    * configure.ac: Macro symbol TCL_PACKAGE_VERSION renamed as INIT_VERSION

2014-11-28 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: Rivet channel is set as stdout and as such is released
    when its refCount drops below 2. Therefore we cannot unregister it for each interpreter
    unless we remove it as stdout when terminating the thread just before unregistering
    the channel and deleting the intepreters

2014-11-05 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: fixed wrong call to Tcl_GetString passing a void argument
    that actually wasn't a Tcl_Obj pointer

2014-10-28 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/form/form2.tcl: how comes the method 'file' emits the same output of method
    email and nobody noticed it?

2014-10-06 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: handling exception generated by ::rivet::exit_thread
    * src/experimental/rivetCore.c: adding experimental ::rivet::inspect exit form for
    detection of ::rivet::exit_thread call
 
2014-09-29 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: adding mpm_exit_handler function pointer handling. Completed 
    draft solution for RivetUserConf directives. Scripts cannot be cached though and the whole
    mechanism has to be redesigned
    * src/experimental/rivetCore.c: Add new command ::rivet::exit_thread
    * src/experimental/rivet_prefork_mpm.c,rivet_worker_mpm.c: add function for mpm_exit_handler
    hook definition

2014-09-26 Massimo Manghi <mxmanghi@apache.org>
    * tests/apachetest/apachetest.tcl: phasing out TclX calls as the web server seems not to respond
    to QUIT signals sent by Tclx's kill. Likewise in apachetcl the httpd binary is used to control
    execution

2014-09-26 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: Add user scripts handling. Fixed bug in per dir and per user
    scripts when virtual interpreters are off.
    * src/experimental/mod_rivet.h: add macros for user configuration flags handling
    * src/experimental/apache_config.h: add user configuration handling
    * tests/inspect.test: trimming tests in order to make them independent for the final CR. 
    Carriage returns should now be appended when needed
    * tests/virtualhost.test: adding returned string space class character trimming
    * tests/rivet.test: changing localhost into 127.0.0.1 as it breaks in certain cases
    
2014-09-08 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: handling per dir configurations that have no Rivet directives
    in them, thus leaving the 'path' field NULL.
    * src/experimental/TclWebapache.c: reenabling CACHE_SIZE and CACHE_FREE in the environment
    array

2014-09-07 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.h: add field path to rivet_server_conf. This field carries
    a copy of the 'path' field in cmd_parms. This field is NULL for global and <VirtualHost>
    sections whereas for <Directory> sections points to the argument (the pattern matching
    a certain directory)
    * src/experimental/mod_rivet.c: handling of rdc->path to store configuration scripts
    * src/experimental/rivet_prefork_mpm.c: defining request_init and request_cleanup in the
    thread private data
    * src/experimental/apache_config.h: handling of the path field in rivet_server_conf

2014-09-05 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/apache_config.h: removed handling of lines unneeded by this version of mod_rivet
    * src/experimental/rivet_worker_mpm.c:
    * src/experimental/rivet_aprthread_mpm.c: 
    * src/experimental/rivet_prefork_mpm.c: moving reference to configurations
    scripts into their new location on rivet_thread_private
    * src/experimental/mod_rivet.h: running_scripts object defined to store running configurations 
    script wrapped in Tcl_Obj instances and allow construction of database of Tcl scripts bound
    to per-directory configuration. Adding variables for storing running configuration in rivet_thread_private.
    Configuration records now store references to pristine char* buffers for scripts
    * src/experimental/mod_rivet.c: changed referenced to configured scripts to their new location,
    removed redundant calls to Rivet_GetConf. Configuration is now built and stored in thread private data
    * src/experimental/rivetInspect.c: code in Rivet_ReadConfParameter adapted to reflect changes
    in configuration record definitions

2014-08-31 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/rivet_prefork_mpm.c: removing commented code
    * src/experimental/mod_rivet.c: removing unnecessary Tcl mutex declaration
    * src/experimental/mod_rivet.h: adding new aggregate structure for conf scripts

2014-08-29 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: added control on Tcl object stored in the variable auto_path and duplicate
    it in case it's shared. Removed callback to Rivet_ProcessorCleanup: this call back is called by APR
    in a thread different from the one that allocated a specific private data record. Thus Tcl thread specific
    data cannot be released consistently when calling Tcl_DeleteInterp. 
    * src/experimental/rivet_worker_mpm.c: request_init and request_cleanup made thread private. Supervisor
    wait time definition moved here. 

2014-08-27 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.h: request_init and request_cleanup moved from static into rivet_thread_private
    * src/experimental/rivet_aprthread_mpm.c,rivet_worker_mpm.c: request_init and request_cleanup are initialized
    during thread private data set up

2014-08-19 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: mutex serializing request processing now controlled by 
    RIVET_SERIALIZE_HTTP_REQUEST. 
    * src/experimental/mod_rivet.h: mutex req_mutex conditional to definition of RIVET_SERIALIZE_HTTP_REQUESTS.
    Also defined macro HTTP_REQUESTS_PROC macro to protect execution of code by module_globals->req_mutex
    * src/experimental/rivet_aprthread_mpm.c: new simplified bridge rivet_aprthread_mpm.c which creates
    Tcl interpreters within thread private data.
    * configure.ac: introducing HTTP_REQUESTS_MUTEX for handling of request serialization

2014-08-18 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: fixed old symbols now renamed as 'module_globals'

2014-08-16 Massimo Manghi <mxmangho@apache.org>
    * src/experimental/mod_rivet.c: reinstated big mutex aroud Rivet_SendContent (where originally 
    Tcl_Mutex lock/unlock were called. The module is usable but way too slow wrt prefork because
    of the locking
    * configure.ac,src/apache-2/Makefile.am: fixed mismatch between symbols 

2014-08-15 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: Tcl protecting mutex localized in order to restrict as much as possible
    the protected code and reduce the size of the bottleneck. Still, this is not OK and the current implementation
    is going to be kept to provide functionality of mod_rivet with the worker MPM. We have to explore
    the possibility of calling directly Tcl threading functions.

2014-08-14 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: implemented automatic bridge load mechanism.
    * src/experimental/rivet_worker_mpm.c: starting maximal number of threads (as per mpm_worker configuration)
    * configure.ac: automated parameters when build experimental module.

2014-08-12 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/rivet_[prefork|worker]_mpm.c: bridges integrated. Removed substantial code
    from rivet_prefork_mpm.c and merged with the current approach handling hosts interpreters using
    vhost_interp objects and storing everything in a child process/thread private data
    * src/experimental/apache_config.[c|h]: eventually these files had to be copied here from common
    and modified to reflect the new model for handling server records
    * src/experimental/mod_rivet_common.c: same for this file
    * src/experimental/mod_rivet.c: further generalization of the code to provide consistent
    support for the bridges. Adding a new hook for mpm_master_interp, a function implemented by
    a bridge responsible for returning the child process/thread master interpreter.

2014-08-11 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/rivet_worker_mpm.c: redesigning virtual hosts resource management for threads
    * src/experimental/mod_rivet[c|h]: implementing thread private interpreters management
    * src/experimental/rivetCore.c,rivetInspect.c: I had to move here these files as some API has changed
    and perhaps it's better if we stick into the interp globals a reference to the thread private data

2014-08-10 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/rivet_prefork_mpm.c: handling also server initialization
    * src/experimental/rivet_worker_mpm.c: doing server initialization from the threaded MPM perspective
    * src/experimental/mod_rivet.c: server initialization loads symbols from the bridge module and
    then defers the initialization task to the specific bridge.

2014-08-09 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: Various functions moved to src/common/mod_rivet_common.c
    * configure.ac: --with-rivet-core switch simplified
    * Makefile.am: preparing for installation of MPM bridges which have not to be scanned for Tcl packages
    * NOTICE: now Apache policy compliant
    * src/apache-2/Makefile.am: reenabled and reworked to make paths relative
    * src/apache-2/mod_rivet.h: reworked to reflect the new code organization. Also some definitions
    moved here from mod_rivet.c
    * src/common/mod_rivet_common.c: this is now the place where mod_rivet implementation independent
    function must go
    * src/experimental/Makefile.am: adding build for rivet_prefork_mpm.so
    * src/experimental/mod_rivet.[c|h]: placing here only the hopefully necessary code. The module
    resolves the bridge module symbols and actually calls those function to initialize, respond to 
    requests and exit child processes
    * src/experimental/rivet_prefork_mpm.c: first sccessful implementation of the prefork bridge
    * src/experimental/rivet_worker_mpm.c: stuffing code into this module. It doesn't build now
    * src/common/mod_rivet_common.h: definitions for functions stored here. 

2014-08-05 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/Makefile.am: build of mod_rivet moved again into the directory containing the code
    * configure.ac: new symbol RIVET_SOURCE_BASE pointing to <rivet-root>/src/, various fixes, 
    generation of Makefile.in in both src/apache-2 and src/experimental
    * src/Makefile.am: still keeping here the magic symbols triggering build of librivetparser and librivet
    build of mod_rivet moved in src/apache-2 and experimental
    * src/experimental/mod_rivet.c: dynamic object load implemented for rivet_mpm_worker. Code handling
    Tcl threads moved to this new shared lib
    * src/experimental/rivet_worker_mpm.c: this file keeps the whole mechanics of handling APR threads
    running Tcl interpreters
    * src/experimental/mod_rivet.h: new fields added to module globals for function pointers to 
    rivet_worker_mpm.so
    * tclconfig/: new version of scripts

2014-08-04 Massimo Manghi <mxmanghi@apache.org>
    * src/common: renaming src/config to a more specific name

2014-07-31: Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.[c|h],rivetChannel.c: better implementation where Tcl interpreters are 
    running within their own threads communicating to a supervisor. Also implemented APR callback functions
    to cleanup memory and interpreters data
    * src/config/parse_exec.c: adding this file which is to hold most of model independent code: 
    Rivet_ParseExecFile, Rivet_chdir_file, Rivet_CheckType, Rivet_ParseExecString
    * src/apache-2/mod_rivet.c: Removed code to be common to the experimental module
    * src/Makefile.am: now compiling also new files needed to build the module.
    * src/rivet.h: adding preprocessor checks to avoid recursive includes

2014-07-14 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental/mod_rivet.c: working toy module capable of running Tcl scripts with a worker MPM
    * src/experimental/rivetChannel.c: now depending on the thread private data

2014-07-17 Massimo Manghi <mxmanghi@apache.org>
    * src/channel/rivetChannel.[c|h]: add preprocessor symbol to prevent multiple includes

2014-07-16 Massimo Manghi <mxmanghi@apache.org>
    * src/experimental: add experimental code for threaded module

2014-07-10 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/apache_config.[h|c]: moved to src/config
    * src/apache-2/TclWebapache.c: this file moved temporarily into src/config to separate it from
    the specific module implementation
    * src/experimental: making room to a new implementation of mod_rivet
    * src/channel/rivetChannel.c: the request_rec pointer is passed through another pointer
    as this channel is now the only channel handled by mod_rivet and it's shared across virutal hosts
    * src/apache-2/mod_rivet.c: now creating only one Rivet channel instance and storing a pointer
    to the current request_rec in the structure mod_rivet_globals, as the running the prefork MPM
    we can only handle a request at a time.
    * src/apache-2/*.tcl: removing obsolete tcl files

2014-07-09 Massimo Manghi <mxmanghi@apache.org>
    * m4/ax_split_version.m4: adding macro for version number manipulation

2014-06-22 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: new macros MOD_RIVET_CORE and RIVET_CHANNEL. Macro APACHE_VERSION preserved but not 
    called anymore
    * rivet/init.tcl.in: Add template for rivet/init.tcl
    * src/Makefile.am: building mod_rivet with code entirely selected by autoconf defined symbols
    * src/apache-2/mod_rivet.c: comments added. Rivet package version depends now on preprocessor
     symbol RIVET_TCL_PACKAGE_VERSION

2014-06-10 Massimo Manghi <mxmanghi@apache.org>
    * tests/rivet.test: removed lang.test as it was testing just a tautology

2014-06-04 Massimo Manghi <mxmanghi@apache.org>
    * doc/images/color-table.png, doc/xml/examples.xml,doc/examples/color-table-tcl: Changing old table.rvt
    example in a more enticing colorful table generation

2014-06-03 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/intro.xml: Acknowledgements reworded into a list
    * doc/images/: logo has now a transparent background, navigation icons colors turned into a greenish tint
    * rivet.xsl,rivet.css: new style based on a green gamut to make pages visually different from Rivet 2.1

2014-06-02 Massimo Manghi <mxmanghi@apache.org>
    * VERSION,configure.ac: tagging this code as 2.2.0
    * src/rivet.h,src/rivetcmds/rivetCore.c: macro CHECK_REQUEST_REC moved from rivetCore.c to rivet.h
    * doc/xml/internals.xml: New section documenting how to extend mod_rivet with new commands written in C

2014-05-22 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/aida.sql: redifining responsability of class Aida (not to be officially released)

2014-04-17 Massimo Manghi <mxmanghi@apache.org>
    * src/: reintegrating modularization branch. Now every subsystem mod_rivet is made of (module, 
    channel, parser, commands, request multipart handling) can be developed separately
    * src/rivetcmds/rivetCore.c: reintroduced handling of the -string argument that disappeared 
    from Rivet_ParseCmd probably because of the merge with modular.
    * src/apache-2/mod-rivet.c: Corrected comments to Rivet_ParseExecString

2014-04-16 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/aida.tcl,dio_Tdbc.tcl,sql.tcl: more methods implemented in aida.tcl
    * doc/xml/commands.xml: new form '::rivet::inspect server' documented
    * src/rivetcmds/rivetInspect.c: adding is_virtual flag to dictionary returned by '::rivet::inspect server'
    * branches/modular: merging latest changes in trunk
    * trunk/src/rivetcmds/rivetInpect.c: adding is_virtual flag to dictionary returned by '::rivet::inspect server'

2014-04-11 Massimo Manghi <mxmanghi@apache.org>
    * src/rivetcmds/rivetCore.c: misplaced check on request_rec in Rivet_InspectCmd
    * tests/failtest.tcl,failtest.test,checkfail.tcl: adding tests for ::rivet::inspect

2014-04-07 Massimo Manghi <mxmanghi@apache.org>
    * tests/failtest.[test|tcl],failcheck.tcl: implementing test for consistent error
    handling by commands that are supposed to refuse execution outside of a request processing
    * tests/inspect.tcl: implementing test of command '::rivet::inspect script'
    * src/rivetcmds/rivetCore.c: typo in command ::rivet::apache_table

2014-04-04 Massimo Manghi <mxmanghi@apache.org>
    * tests/failtest.tcl,failtest.test,checkfail.tcl: adding script for commands that must fail
    outside of a request processing (to be completed)
    * src/rivetcmds/rivetCore.c: comment rephrased

2014-03-30 Massimo Manghi <mxmanghi@apache.org>
    * src/rivetcmds/rivetInspect.c: Add function Rivet_CurrentServerRec returning a dictionary of
    some field values stored in the server_rec object
    * src/rivetcmds/rivetCore.c: Add support for 'server' argument returning the dictionary built
    by Rivet_CurrentServerRec
    * src/TclWeb.h: adding declaration of function constructor of a TclWebRequest object
    * src/apache-2/TclWebapache.c: Add functions TclWeb_NewRequestObject and TclWeb_InitRequest to
    reinitialize a TclWebRequest object on each request
    * src/apache-2/apache_request.[c|h]: API change for ApacheRequest_new taking now an apr_pool_t
    object instance for creating an ApacheRequest oject pointer. Task to reset this object
    to initial values is now delegated to ApacheRequest_init.
    * src/apache-2/mod_rivet.[c|h]: new field in globals stores the current server_rec object pointer.
    This pointer is used in RivetInspect.c to access to field of the object for introspection
    
2014-03-26 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml: wrong example for lassign_array corrected
    * src/apache-2/mod_rivet.c: Adding comment explaining the meaning of setting/resetting globals->r as
    a way to detect if a script is running in the context of a request processing
    * src/rivetcmds/rivetCore.c,rivetInspect.c: Tcl object handling improved. Code simplified and
    ap_assert call added in Rivet_CurrentConfDict if there is no handling of a configuration parameter
    by Rivet_ReadConfParameter (which should never happen)
    * configure.ac, VERSION: version number bumped to 2.1.5

2014-03-16 Massimo Manghi <mxmanghi@apache.org>
    * doc/images/Rivetlogo_small.png: removed because already in doc/ and duplicate to home.png

2014-02-28 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/upgrading.xml: Adding Karl's note about upgrading from NeoWebScript

2014-02-24 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml: completed reworking of manual page for command ::rivet::inspect.
    * .: Preparing RC1 archive for version 2.1.4
 
2014-02-22 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml: further elaboration of the section about command ::rivet::inspect

2014-02-21 Massimo Manghi <mxmanghi@apache.org>
    * tests/inspect.[test|tcl]: adding tests for introspection command

2014-02-19 Massimo Manghi <mxmanghi@apache.org>
    * src/rivetcmds/rivetCore.c: spurious ref count decrement caused random crashes
    * src/rivetcmds/rivetInspect.c: fixed behaviour when inspect is passed with an undefined argument value
    * configure.ac: reindented some function to improve readability and editor independence

2014-02-19 Massimo Manghi <mxmanghi@apache.org>
    * src/rivetcmds/rivetInspect.c,src/librivet/rivetList.c: removing lines of code commented and unused
    * doc/xml/commands.xml: documenting command lremove 
    * tests/rivetlib.test: adding more tests for lremove

2014-02-11 Massimo Manghi <mxmanghi@apache.org>
    * tests/rivetlib.test: adding tests for rivetlib
    * rivet/packages/dio/aida.tcl,sql.tcl: new files for development of DIO compatible interface to tdbc
    * rivet/rivet-tcl/lassign_array.tcl: removed since already provided in rivetlib
    * docs/xml/commands.xml: documenting features of lassign_array.tcl rivetlib version 

2014-02-06 Massimo Manghi <mxmanghi@apache.org>
    * ChangeLog: timestamps of latest entries of this file carried the wrong year (2013)
    * rivet/packages/dio/dio_Mysql.tcl: fixed comment lines placed within the switch construct
    that have become incompatibile with Tcl8.6. 
    * configure.ac: add AC_C_INLINE macro

2014-02-04 Massimo Manghi <mxmanghi@apache.org>
    * src/rivetcmd/rivetCore.c: testing globals->r against NULL and in case return a null string
    * src/apache-2/mod_rivet.c: using only globals->r to flag a request processing under way
 
2014-02-03 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: globals->req had to be set to NULL in Rivet_PerInterpInit!

2014-02-02 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.[c|h]: further optimizing code avoiding to
    allocate a TclWebRequest structure on every request. This structure
    is allocate when the interpreter is initialized and a pointer
    stored in rivet globals
    * src/rivetcmd/rivetInspect.c: impoved consistence if Tcl objects handling

2014-01-30 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: this ChangeLog entry is meant to amend the
    2014-01-27 entry that missed to point out as small still important change
    in mod_rivet.c. Rivet_SendContent is not calling Tcl anymore to coax 
    command 'info script' to return the current Rivet script full path. This
    will soon be solved by adding a new functionality to command '::rivet::inspect' 
    
2014-01-27 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/apache_config.[c|h]: new file with Apache module configuration
    procedures moved here from mod_rivet.c. This code is likely to be Apache 2.x
    but totally independent from the running MPM. Therefore it was moved here
    to improved size and manageability of mod_rivet.c
    * src/apache-2/mod_rivet.c: The module central code, from which configuration
    handling procedures were removed

2014-01-08 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/aida.tcl: adding aida.tcl experimental file
    for a DIO compatible interface to TDBC. 
    * rivet/packages/dio/sql.tcl: now able to produce same basic SQL queries
    ::DIO::Database class is doing now

2013-12-19 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio_Postgresql.tcl: reindented and tabs converted to spaces
    * rivet/packages/dio/sql.tcl: class DIO::Sql now returning basic SELECT SQL statements

2013-12-18 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/sql.tcl: further developments. Class Sql is now able
    to build an abstract representation of a SELECT query
    * rivet/packages/dio/dio.tcl: typo in a comment

2013-12-16 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/sql.tcl: trying to redesign rivet in order to comply with
    Tdbc and aiming at making DIO a pure interface to Tdbc dropping the 
    dependency with DBMS specific drivers

2013-12-13 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio_Tdbc.tcl: first version of Tdbc driver for DIO. This
    class is able to execute basic queries and needs further development

2013-12-08 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: version number bumped up to 2.1.4

2013-12-06 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio_Postgres.tcl: minor changes (code indentation revised)
    * rivet/packages/dio/dio_Tdbc.tcl: experimental support for the tdbc
    abstraction library
    * doc/xml/install.xml: the manual still suggested to call make install-packages,
    whereas 'make install' does everything now as it was before 2.1.2

2013-12-04 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/apache_request.c: log message in ApacheRequest___parse()
    commented out (Bug #55845)

2013-12-03 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: Rivet template preprocessor symbols renamed in
    the more expressive RIVET_TEMPLATE and RIVET_TCLFILE
    * rivet/rivet-tcl/lassing_array.tcl: new command lassing_array taken
    from DIO's result set class (inspired by Tclx)
    * doc/xml/commands.xml: lassign_array documented in the manual
    * rivet/packages/dio/dio.tcl: reformatted during analysis for supporting
    tdbc based driver

2013-11-04 Massimo Manghi <mxmanghi@apache.org>
    * src/Makefile.am: this Makefile.am is now in charge for building mod_rivet
    librivet.so and librivetparser.so. This fixes and problem with the 'distclean'
    target and keeps us from further customization of automake (subdir-objects
    property)
    * src/runtests.tcl: changed path to mod_rivet.so and librivetparser.so

2013-10-15 Massimo Manghi <mxmanghi@apache.org>
    * src/rivetcmds/rivetCore.c: 'headers redirect' used to return TCL_RETURN
    to force the caller to terminate and interrupt the processing. It didn't 
    actually worked exactly that way and starting with Tcl 8.6.1 it also failed
    returning a Tcl invalid error code (Bug #55583). Turning it into TCL_OK
    seems to cure the problem

2013-09-26 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/session.xml: fixed code example indentation
    * rivet/packages/calendar.xml: fixed class and tag for calendar banner

2013-09-23 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/calendar/calendar.tcl: fixed zero length argument list
    calling method emit

2013-09-22 Massimo Manghi <mxmanghi@apache.org>
    * modular: committing changes from last merge

2013-09-21 Massimo Manghi <mxmanghi@apache.org>
    * contrib/tcl.vim: list of subcommands completed

2013-09-20 Massimo Manghi <mxmanghi@apache.org>
    * contrib/tcl.vim: Vim's syntax highlighting extension including also
    rivet's command set (experimental)

2013-09-18 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl: removed paranoid debugging log messages

2013-09-17 Massimo Manghi <mxmanghi@apache.org>
    * src/[parser|apache-2|librivet]/Makefile.am: AM_CPPFLAGS are not
    a transparent replacement for INCLUDES at least when a Makefile.am is
    in a subdirectory. Placing include directory switches in the target
    specific <target>_CPPFLAGS variable
    
2013-09-15 Massimo Manghi <mxmanghi@apache.org>
    * tclconfig/missing: new version of 'missing' taken from automake 1.14
    * src/[parser|apache-2|librivet]/Makefile.am: depracated INCLUDES variables
    replaces with their recommended counterparts AM_CPPFLAGS
    * configure.ac: new message about the notifier failing to start in child
    processes after the child processes fork

2013-09-14 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/calendar/calendar.tcl: too restrictive test on Tcl versione fixed
    * rivet/rivet-tcl/parray_table.tcl: also the parray putting out an HTML table
    is now escaping SGML characters
    * INSTALL: new installation instruction amending the rejected installation 
    approach done in 2.1.2 and restoring old target 'install' to get everything
    moved to their final directory
    * doc/xml/install.xml: same for INSTALL
    * doc/xml/commands.xml: new 'parse -string' form documented

2013-09-13 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio_Mysql.tcl: attempting to correct detection of 
    SELECT query by checking if a SELECT keyword exists at the beginning of
    query either following a '(' or only space characters (their trimmed away
    in any case)

2013-08-30 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/parray.tcl: escaping SGML characters that might appear
    in the output to avoid cross scripting

2013-08-29 Massimo Manghi <mxmanghi@apache.org>
    * branches/modular: merging latest changes from trunk

2013-08-26 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: expanded warning message about broken implementations
    of Tcl when using forks and the event loop
    * Makefile.am: target 'install' now depends on targets install-binaries and
    install-packages, thus install the whole Rivet code as it did before 2.1.2.
    Packagers wanting to separated binary and Tcl code can draw on those 2 
    targets
    * INSTALL,doc/xml/install.xml: changed documentation to reflect the restored
    organization of install targets

2013-08-12 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/form/form2.tcl,form.tcl: form packages called Rivet's command
    '::rivet::env' in its unqualified form. Fixed adding the ::rivet namespace
    specification.
    * src/apache-2/rivetCore.c: errata corrige for entry added on 2013-07-19: 
    command 'parse -string' superseded test command parsestr, thus removed from
    rivetCore.c

2013-08-07 Massimo Manghi <mxmanghi@apache.org>
    * ./: merging changes done in trunk

2013-08-07 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: adding MPM descripting fields to the 'server' array
    * configure.ac: warning message about Tcl version not supporting fork correctly
    moved to the end of configure.ac, so that it's more readable by the user

2013-08-06 Massimo Manghi <mxmanghi@apache.org>
    * rivetcmds/rivetCore.c,rivetInspect.c: moved core commands into this new directory. 
    Their code is (nearly) independent from Apache version and in future it might be shared
    between different versions/branches of the module
    * src/apache-2/Makefile.am: changed reference to rivetCore.c and rivetConf.c to 
    their new position and new names
    * src/apache-2/mod_rivet.c: conditional compilation to Tcl_InitIdentifier might
    help preserving event loop on Unices where no pthreads_atfork call exists (Bug #55153)
    * configure.ac: Tcl version checked to detect when the notifier might
    not be working (Tcl < 8.5.15 and Tcl < 8.6.1). In case a warning message is printed 

2013-07-19 Massimo Manghi <mxmanghi@apache.org>
    * tests/parse.test,parsestring.rvt: adding test for 'parse -string' variant
    to Rivet command 'parse'

2013-07-17 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.[h|c],rivetCore.c: reverting new command 'parsestr' and
    turning string parsing command into the support for the new -string modifier of the 
    ordinary parse command

2013-07-06 Massimo Manghi <mxmanghi@apache.org>
    * src/parser/parserPkgInit.c: commands are created through the RIVET_OBJ_CMD macro
    * rivet/packages/tclrivet/tclrivet.tcl: loading the rivetparser library caused 
    weird side effects and the interpreter failed when this package was required
    by a script. It's still to be understood why librivetparser was loaded using
    command 'load' in tclrivet.tcl
    * src/apache-2/mod_rivet.c: reverting an attempt to include rivetparser
    as package required by default. 

2013-07-05 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: changed the default path for installation dir 
    * doc/xml/commands.xml: add manual page for command ::rivet::xml

2013-06-28 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c,rivetCore.c: command 'parsestr' to parse templates stored
    in Tcl objects coded
    * doc/Makefile.am: 'clean' target made a little terser

2013-06-26 Massimo Manghi <mxmanghi@apache.org>
    * Makefile.am: forcing install/unistall targets to recreate pkgIndex.tcl
    in order to have a coherent directory of packages actually available

2013-06-24 Massimo Manghi <mxmanghi@apache.org>
    * INSTALL: It must be made explicit installation is a two stage operation now

2013-06-24 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/session/session-class.tcl: two new methods 'load' (loads a
    whole package data for a given package and session) and 'clear' (it deletes either 
    a whole package or a single data like for a session)

2013-06-22 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: cleanup of unused code in mod_rivet.c. Adding comments
    to undocumented functions
    * src/parser/rivetParse.c: New TODO comment added 

2013-06-12 Massimo Manghi <mxmanghi@apache.org>
    * Makefile.am: splitting install targets into 'make install' (mod_rivet.so,
    librivet.so,librivetparser.so + Tcl commands in rivet/rivet-tcl) and 
    'make install-packages' (whole content of rivet/packages), thus decoupling
    binary and non binary installs. Notice: 'make install' creates a fully
    functional install of Rivet in case packages such as 'form', 'session', 
    'DIO' aren't needed.
    * rivet/rivet-tcl/xml.tcl: Adding svn:keywords Id to svn properties
    * doc/xml/install.xml: updating manual to document the new installation command
    sequence
    
2013-06-04 Massimo Manghi <mxmanghi@apache.org>
    * tclconfig/* : merging into this branch the latest commits done from trunk

2013-06-03 Massimo Manghi <mxmanghi@apache.org>
    * tclconfig/[ltmain.sh,compile,depcomp]: more libtool scripts updated 

2013-06-03 Massimo Manghi <mxmanghi@apache.org>
    * src/parser/Makefile.am: adding include paths to INCLUDE
    * src/Makefile.am: Rivet library build moved to this script
    * src/librivet/Makefile.am: Rivet library build removed from this file
    
2013-06-02 Massimo Manghi <mxmanghi@apache.org>
    * src/Makefile.am: including librivet.so build in this file
    * src/librivet/Makefile.am: kept for reference but without effective code now
    * tclconfig/[install-sh,config.sub,config.guess]: new versions for script used by
    the autoconf/automake/libtool toolchain

2013-05-24 Massimo Manghi <mxmanghi@apache.org>
    * src/: branching trunk to branches/modular to reorganize mod_rivet in a
    way that should enable the development of single components (apache request,
    Rivet channel, parser) with minimal branching 
 
2013-05-21 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/apache_request.c: ApacheRequest___parse further simplified and
    made less restrictive about the combination of method and mimetype of the request
    * src/apache-2/mod_rivet.c: add debug message in exit handler

2013-05-06 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/rivetCore.c: call to 'panic' changed to fulfill the hardening
    flags that (quite oddly) fail when building against Tcl8.6 on some platforms
    or Linux distros

2013-04-30 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml: improved entry for ::rivet::var with an explanation
    and example provided by Harald
    * configure.ac,VERSION: version number bumped to 2.1.2

2013-02-12 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: To avoid clash on freeing resources Tcl_Finalize
    is removed from child process cleanup (Bug #54162)

2013-02-11 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio.tcl: fixing nasty bug introduced with Rivet 2.1. When
    method 'store' is updating the call to method update needs a flat list as
    last argument, not just a sigle valued list argument
    * doc/xml/commands.xml: Improved explanation for command abort_page
    * src/apache-2/rivetConf.c: corrected typo in header
    * src/apache-2/apache_request.c: new handling of apache requests largely
    relaxes checks on the 'Content-Type' header (Bug #53661)

2013-02-02 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/apache_request.c,src/apache-2/mod_rivet.c: extending request
    handling also for PUT and DELETE. Applied patch provided by Jeff Lawson in
    bug report #53892 

2013-02-01 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/Makefile.am, src/Makefile.am: removed -v flag from rm command
    in install-data-hook: target to avoid incompatibility with same command's
    implementation in Solaris (Bug: #54181)

2013-01-28 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.[c|h],rivetCore.c: removed hardcoded error code 
    generated by abort_page and defined in the preprocessor symbol ABORTCODE.
    
2013-01-25 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/xml.tcl,rivet/rivet-tcl/tclIndex: New command for XML fragments
    composition

2013-01-20 Massimo Manghi <mxmanghi@apache.org>
    * Makefile.am: added removal of libool created .la files for librivetparser and
    librivet

2012-12-30 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/xml.tcl: revised command for simple XML string mark up

2012-12-18 Massimo Manghi <mxmanghi@apache.org>
    * src/librivet/rivetPkgInit.c: package version taken from preprocessor symbol
    RIVET_VERSION so that it's guaranteed mod_rivet.c will get the right library
    version.
    * src/apache-2/mod_rivet.c: removed trailing spaces from various lines (offends
    some patch management tools such as quilt)

2012-12-17 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/install.xml: fixed link to download page on the website
    * rivet/packages/dio/dio.tcl: method store uses internally methods 'insert' or
    'update' (depending on the existence of a row having the same keyfield). The
    latest version of DIO shipped a 'store' method that returns the very same value
    returned either by 'insert' or 'update'. Previous versions of DIO returned
    invariably 1, which was undocumented and not very well thought out (handled 
    errors in 'store' return a -code error, not necessarily 0). Previous behavior
    is reinstated (bug #54313)

2012-12-16 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/session/session-class.tcl: method 'store' had an hardcoded 
    'parray' the ran  when an error occurred. It also printed a message using 
    'puts' instead of 'debug' 

2012-12-15 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/rivetCore.c: command 'headers' returns a meaningful error in case
    a subcommand is invalid

2012-12-12 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: Tcl_PkgRequire for packages Rivet and rivetlib
    are exchanged so that commands in librivet.so can be imported when 
    they are on the export list and a programmer issues a 'package require 
    ::rivet' (fixes bug #54290)
    * rivet/init.tcl: this script is now providing package 'Rivet' instead of
    'RivetTcl'. init.tcl initializes the Tcl core of Rivet and a package rivet
    has to exists for compatibility with version 2.0 where it was provided 
    rather pointelessly by librivet.so.

2012-12-03 Massimo Manghi <mxmanghi@apache.org>
    * doc/Makefile.am: Manual pages output encoding set to UTF-8

2012-11-13 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/form.xml: subcommand 'checkboxes' documented

2012-11-09 Harald Oehlmann <oehhar@apache.org>
    * rivet/packages/form/form2.tcl: Checkboxes with no value and an arbitrary
    default value are initialy checked.
    *** POTENTIAL INCOMPATIBILITY ***
    The default value is not taken as checkbox value any more.
    This was IMHO a security hole.
    (reported on rivet-dev by Jeff Lawson)

2012-11-05 Harald Oehlmann <oehhar@apache.org>
    * rivet/packages/form/form2.tcl: Bug fixed: method textarea did not honor default values.
    (reported on rivet-dev by Jeff Lawson)

2012-10-29 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/session/[session-create-mysql.sql|session-create-sqlite.sql]: index
    riv_sess_cache_ix had a incomplete unique key definition that missed the 'package_' column (fixes bug #54063)

2012-10-28 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml: Manual entry for makeurl extented to clarify how the
    protocol is determined.
    
2012-10-16 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/directives.xml,doc/xml/commands.xml,doc/xml/install.xml,doc/xml/examples.xml,
    doc/xml/request.xml,doc/convert_examples.tcl.in,doc/examples-sgml/hello1.rvt: Trying to
    improve the manual revising and extending it

2012-10-01 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/request.xml,doc/xml/install.xml: attempting to improve the documentation
    * doc/images/: Adding missing icons

2012-09-30 Massimo Manghi <mxmanghi@apache.org>
    * tests/parsepackage.test: changed path to librivetparser.so

2012-09-29 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/xml.tcl: Adding command for simple quick XML fragments generation

2012-09-22 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio.tcl: various methods used as
    accessors to some property variables of the class Database were not returning their values
    as expeected. This also surfaced a bug in method 'string' where a result object wasn't
    used correctly. Method 'count' failed when no keyfield was set. Since it should be possible
    to call this method also when there is no keyfield defined private method table_check is 
    returning specific error codes making possible to catch this error and ignore 
    it in 'count' (fixed bugs #53733 and #53732)
    * rivet/packages/dio/dio_Sqlite.tcl: Class Sqlite did not set the variable 'interface' to
    value 'Sqlite' as expected.

2012-09-21 Massimo Manghi <mxmanghi@apache.org>
    * doc/README: improved instruction for code examples inclusion into XML manual
    * doc/rivet-full.xml: removed

2012-09-18 Massimo Manghi <mxmanghi@apache.org>
    * rivet/pkgIndex.tcl: index file regenerated

2012-09-17 Massimo Manghi <mxmanghi@apache.org>
    * src/librivet/rivet[Crypt|WWW|List|pkgInit].c,src/parser/rivetParser.[c|h],
    src/parser/parserPkgInit.c: files for librivet and the Rivet parser moved into 
    src/librivet and src/parser.
    * src/Makefile.am,src/librivet/Makefile.am, src/parser/Makefile.am: new automake conf files
    reflect libraries reorganization.
    * src/apache-2/Makefile.am: mod_rivet builds from the newly located parser code. Is it 
    sensible to let the module depend on a real package (provided by libparser.c)?
    * configure.ac: add variable substitution for newly created Makefile.am

2012-09-16 Massimo Manghi <mxmanghi@apache.org>
    * tests/runtests.tcl,tests/apachetest.tcl: User and Group directives removed from conffile
    template to make test suite independent from the output of command 'id' from which 
    the values for this parameters were inferred (Bug #53396)
    * tests/shorthand.rvt: oddly enough the template output the same line twice. 

2012-09-03 Harald Oehlmann <oehhar@apache.org>
    * Thank you accepting me as committer

2012-08-19 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: the module returns now a HTTP_INTERNAL_SERVER_ERROR when a request
    namespace cannot be created

2012-08-16 Massimo Manghi <mxmanghi@apache.org>
    * src/rivetPkgInit.c: improved namespace structure pointer handling (contributed by
    Georgios Petasis)

2012-08-15 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio_Oracle.tcl: fixed method makeDBFieldValue in class Oracle (Bug #53703)
 
2012-08-15 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/dio.xml: Fixed wrong declariation of 'insert' subcommand in page manual (Bug #53670)
    * rivet/packages/dio/dio_Postgresql.tcl: method makeDBFieldValue implemented and tested with
    package Sessiona (Bug #53703).
    * rivet/packages/session/session-create.sql: file renamed as session-create-postgresql.sql. 
    Schema tested with package Session. 
    * Changelog: entry of Aug 12 corrected: the method of Database (dio.tcl) in question was 'store' 
    not 'fetch'
    * rivet/packages/session/session-class.tcl: removed 'conf' variable that could clash with
    application code (and in at least one case it did) (Fixes bug #53544) 

2012-08-13 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio_Sqlite.sql,rivet/packages/dio/dio_Mysql.tcl: These connector classes
    didn't compute correctly the number of seconds as unix timestamp to be returned for comparison
    with the same information returned by [clock seconds] (Bug #53703)
    * rivet/packages/session/session-class.tcl: special datetime field were registered associated
    to the rivet_session and rivet_session_cache names, whereas the class has member variables for
    storing these definitions (Bug #53543)

2012-08-12 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio.tcl: Database's class 'store' method was rewritten on a more simple 
    assumption that methods 'insert' and 'update' know how to actually .... insert and update rows
    * rivet/packages/dio/dio_Sqlite.tcl: The class was found to fail in various circumstances 
    determining the number of rows affected  by a query and determining the set of fields in a 
    table involved by a query. Since a 'select' query is treated in a rather distinctive way 
    from other SQL queries, a new public variable 'select' was added to the properties of the
    class in order to handle consistently the 2 cases within SqliteResult. The number of rows
    affected rows is obtained from the 'changes' subcommand of Sqlite3 connector.
    * rivet/packages/dio_Mysql.tcl: wrong special field handling fixed

2012-08-11 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/session/session-create-sqlite.sql: new file with schema of session package tables
    for Sqlite.

2012-08-07 Massimo Manghi <mxmanghi@apache.org>
    * doc/rivet.css: text in monospace characted made a little smaller
    * rivet/packages/form/form.tcl: Workaround to avoid wrong parsing of form data when parameter
    values have spaces in them
    * src/apache-2/mod_rivet.c: 'server' array uses RIVET_VERSION instead of the lengthy RIVET_PACKAGE_VERSION

2012-07-31 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/dio/dio_Sqlite.tcl: Add search case for package sqlite3. Add method makeDBFieldValue
    to handle time and date special fields support. Add method 'quote' which overrides the same method
    in Database, as correct way to escape quotes (') characters for Sqlite is doubling them ('')

2012-07-04 Massimo Manghi <mxmanghi@apache.org>
    * doc/examples/download.tcl: The example has been having ever since an error in calling 'source' 
    instead of 'parse'. The multitude of the userbase never realized.

2012-07-03 Massimo Manghi <mxmanghi@apache.org>
    * CHANGES: file emptied from obsolete notes
    * src/apache-2/mod_rivet.c: Add UploadDirectory to the list of handled options for RivetUserConf

2012-06-27 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: Version number set as 1.2.0b1
    * rivet/packages/form/form.tcl: form package 1.0 taken from branches/2.0
    * doc/xml/commands.xml: improved page manual about incr0 being declared deprecated

2012-06-20 Massimo Manghi <mxmanghi@apache.org>
    * contrib/form.tcl: Requiring package TclOO making explicit it's needed to run this version of form.tcl

2012-06-01 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/form/form2.tcl: New form2.tcl providing form 2.0 package (proposed name for 
    the file)

2012-05-18 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/intro.xml: add acknowledgments for contributions made by Cyril, Jeff and Harald
    * doc/xml/commands.xml: add page manual for ::rivet::inspect 
    * src/apache-2/mod_rivet.c: add handling for Debug, DebugIp and DebugSeparator in 
    user conf table.
    * rivet/rivet-tcl/debug.tcl: Array ::RivetUserConf (which is used to convey control 
    parameters for the command) is now created on demand using command ::rivet::inspect
    * doc/rivet.css: adjustments needed to make characters size consistent and nice looking

2012-05-17 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/examples.xml: "Hello World" example reworked
    * rivet/packages/dio/dio.tcl: fixed SQL syntax that would break compatibility with Oracle (fixes
    reopened bug #53222)

2012-05-15 Massimo Manghi <mxmanghi@apache.org>
    * doc/hello1.rvt: add new "Hello World!" example to explain the new shorthand syntax <?= ... ?>
 
2012-05-14 Massimo Manghi <mxmanghi@apache.org>
    * doc/rivet.xsl,doc/rivet.css,doc/images/[prev.png,next.png,up.png]: new stylesheet and icons for
    the page manual

2012-05-13 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/tclrivet/tclrivetparser.tcl: Tcl parser implements new shorthand echo syntax (closes
    bug #53217)
    * doc/xml/entities.xml: New manual page for package RivetEntities
    * rivet/packages/tclrivet/parse.tcl: auto_path handling improved (closes bug #52898)
    * rivet/packages/form/form.tcl: indentation converted to spaces to improve editing across different
    editors. Fixed problem with variable clash in constructor. Also removed unneeded [expr ...] in conditions
    that prevented byte compiling (Closes bug #52650)
    * doc/xml/commands.xml: improved manual entry for 'var list' (Fixes bug #52911)

2012-05-12 Massimo Manghi <mxmanghi@apache.org>
    * src/rivetParser.c: add shorthand expression <?= ... ?> for <? puts -nonewline "..." ?> (contributed 
    by Jeff Lawson, addresses #53217, tclrivetparser still to be fixed)
    * tests/shorthand.[test|rvt]: add test of shorthand notation for string output 
    * rivet/rivet-tcl/cookie.tcl: add support for HttpOnly flag (contributed by Cyril Shtumf, 
    fixes bug #53224)
    * rivet/packages/session/session-class.tcl: support for HttpOnly flag improves security and reduces
    the risk of cross-site scripting attacks (contributed by Cyril Shtumf, fixes #52224)
    * rivet/packages/dio/dio.tcl: wrong SQL syntax generated in delete method when multiple fields are
    used in the selection clause (contributed by Cyril Shtumf, fixes bug #53222)
    * rivet/packages/dio/dio_Mysql.tcl: Mysql connection must be checked when connection reference is reused
    because it could have dropped (contributed by Cyril Shtumf, fixes #53221)

2012-05-09 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/http_accept.tcl: new command ::rivet::http_accept 
    * doc/xml/commands.xml: new manual entry for ::rivet::http_accept 
    * doc/rivet.xml: Add new file entities.xml describing package 'RivetEntities' (only a 
    stub, to be elaborated)
    * doc/xml/entities.xml: New manual page for package 'RivetEntities'

2012-05-08 Massimo Manghi <mxmanghi@apache.org>
    * src/rivetPkgInit.c: reinstated safe interpreters initialization
    * doc/xml/install.xml: corrections and further elaboration of explanation for
    the --disable-import-rivet-commands

2012-05-07 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/rivetCore.c: new command ::rivet::inspect implementing function
    Rivet_InspectCmd
    * src/apache-2/rivetConf.c: Ancillary functions for instrospection procedure Rivet_InspectCmd
    * src/apache-2/Makefile.am: Added handling of rivetConf.c
    * src/apache-2/mod_rivet.c: Handling of configuration directives restricted to meaningful
    options when RivetDirConf or RivetUserConf directives are set. An error message is printed
    when child process initialization directives are set by RivetDirConf and RivetUserConf.
    Rivet_PropagatePerDirConfArrays and Rivet_PropagateServerConfArray functions disabled as the
    ::rivet::inspect command can work out a better alternative creating the RivetServerConf,
    RivetDirConf and RivetUserConf on demand.
    * src/apache-2/mod_rivet.h: Added declaration for functions in rivetConf.c
    * rivet/rivet-tcl/lassign.tcl: removed, since Tcl 8.5 lassign implements and extends the
    same functionalities 

2012-04-30 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/form/form.tcl: Patch provided by Jeff Lawson to manage -label switches.
    The package now requires package uuid from Tcllib.
    * : Entry of 2012-04-07 amended as the path to mod_rivet.[c|h] was clearly wrong

2012-04-07 Massimo Manghi <mxmanghi@apache.org>
    * rivet/apache-2/mod_rivet.[c|h]: One more change to an ap_log_error call suggested
    by the compilation hardening flags

2012-03-26 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/entities.tcl: new package RivetEntities, replacement for tcllib
    ::html::entities but with no extra dependecies (as a matter of fact it 
    works without Rivet too)

2012-03-13 Karl Lehenbauer <karl@apache.org>
    * configure.ac: Default separate virtual interps to "no".
    (--enable-virtual-interps-separation option implies disabled if not set.)
    * rivet/packages/form/form.tcl: In the forms package, stop bleeding the 
    raw value of radio buttons and checkboxes into the generated HTML.
    * src/apache-2/mod_rivet.c: Rework ap_log_error calls to include the
    mod_rivet module name.  Emit debug-level messages for successful
    execution of GlobalInitScript and ServerInitScript.
    * README.freebsd: Update to reflect the modern world.
    * README.configure: Document how to regenerate the configure script, etc.
    * tclconfig/depcomp, tclconfig/missing, tclconfig/config.guess,
    tclconfig/config.sub, tclconfig/ltmain.sh: Update from newer libtools, etc.

2012-03-08 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/,/rivet/packages/simpledb: various changes suggested by code profiler
    (thanks to Harald Oehlmann)
    * rivet/packages/tclrivetparse.tcl: wrong handling of swich cases made method 'parse'
    unusable
    * src/rivet.h: obsolete comment amended

2012-01-16 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/tclIndex.tcl: regenerated with auto_mkindex.

2012-01-15 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/parray_table.tcl: this file was erroneously introduced as
    tablearray.tcl. Renamed.
    * rivet/rivet-tcl/putsnnl.tcl: experimental putsnnl command rewritten to 
    improve features and make it more flexible by adding option for padding 
    with &nbsp; entities. 

2012-01-10 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/parray_table.tcl: New command parray_table to print the
    content of an array into an HTML table
    * rivet/rivet-tcl/putsnnl.tcl: More consistent form for 'putsnnl'. If the
    second argument is given and it's an integer then the string is at most <nchars>
    characters long. If <nchars> > [string lenghth <output_string>] then the output
    is still <nchars> wide. If <spaces> is a positive integer the string is printed 
    right-aligned, if negative the string is left-aligned

2011-12-26 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/putsnnl.tcl: Add new command 'putsnnl', a wrapper for
    'puts -nonewline' with the extra optional feature of prepending the output 
    with a definite number of spaces (it helps pretty printing of HTML)

2011-12-09 Massimo Manghi <mxmanghi@apache.org>
    * src/rivetPkgInit.c,src/parserPkgInit.c: libs now are fully based on stubs and
    the tcl version parameter passed with Tcl_InitStubs is the same Tcl version their
    linked against. Probably too strict, but a cautious point as we are moving towards
    Tcl8.6 and Tcl9, which will probably require recompilation of the whole Tcl software

2011-12-08 Massimo Manghi <mxmanghi@apache.org>
    * trunk/: Final commit merging changes to scoping commands in the ::rivet namespace

2011-12-07 Massimo Manghi <mxmanghi@apache.org>
    * doc/examples, doc/convert_examples.tcl.in: Add ::rivet namespace to examples and
    examples code converter
    * doc/examples/*.rvt: removed unneeded sgml chars escaping
    * doc/xml/install.xml: removed duplicated entry of a 'configure' switch

2011-12-06 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/tablearray.tcl: new procedure 'tablearray' prints an array content
    in an HTML <table> construct. Test procedure, we maybe want to have something more
    general for printing also dictionaries.

2011-12-06 Massimo Manghi <mxmanghi@apache.org>
    * configure_ac: add new test on Tcl version using AX_VERSION_COMPARE.

2011-12-06 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/request.xml,doc/xml/install.xml: documenting new configure switches

2011-12-05 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: child init sets also the array module_conf to signal the
    compilation flags --enable-rivet-commands-export and --enable-import-namespace-commands
    for the benefit of init.tcl
    * configure.ac: new macro created to handle --enable-rivet-commands-export and 
    --enable-import-namespace-commands
    * rivet/init.tcl: module_conf signals when commands have to be exported from ::rivet
    and when they have to be implicitly imported into the global namespace for compatibility
    with previous versions of Rivet.

2011-11-21 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/directives.xml,doc/xml/commands.xml: removed note about 'rivetlib' package
    no more needed. Notes about ServerInitScript not having effect when virtual hosts
    have their own private slave interpreters.

2011-11-20 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml,doc/xml/install.xml: documentation for building Rivet updated.
    * configure.ac: corrected help message for --disable-rivet-commands-export

2011-11-20 Massimo Manghi <mxmanghi@apache.org>
    * src/rivet.h: Macro definition for Rivet command objects has rolled back to 
    its previous form and doesn't call Tcl_Export anymore. In case commands are
    exported by calling Tcl_Export in rivetCore.c and rivetPkgInit.c
    * tests/*: test suite reviewed for new tests

2011-11-16 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/rivetCore.c: code rationalization. namespace reference will not be
    passed to the RIVET_OBJ_COMMAND macro and commands are exported by calling Tcl_Export
    on the whole command set in ::rivet. The whole process is controlled by the macro
    symbol RIVET_NAMESPACE_EXPORT 
    * src/rivet.h: only one RIVET_OBJ_COMMAND object exists now. Call to Rivet_WWWInit,
    Rivet_CryptInit and Rivet_ListInit haved changed. Rivet namespace pointer in not
    passed around anymore and it's handled only in rivetPkgInit.c
    * src/rivetPkgInit.c: 

2011-11-14 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac:  new switch --enable-rivet-commands-export to enable/disable 
    commands in ::rivet namespace

2011-11-12 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/rivetCore.c: reindented to improve readability.
    * doc/xml/commands.xml: typo corrected
    * tclconfig/ltmain.sh: new script from recently released libtools
    * configure.ac: new macro AC_CONFIG_MACRO_DIR to include macros in m4

2011-10-12 Massimo Manghi <mxmanghi@apache.org>
    * debian/*: actually removed from trunk (yesterday it was removed from branches/2.0)

2011-10-11 Massimo Manghi <mxmanghi@apache.org>
    * debian/*: removed from trunk and moved into parent directory. Maintaining
    scripts and configuration for Debianizing a package in the same package
    repository is deprecated and error prone.

2011-10-09 Massimo Manghi <mxmanghi@apache.org>
    * debian/*: preparing to move the debian stuff away from
    development branches of Rivet. I'm committing the latest
    changes done in the process of releasing the Debian package
    for 2.0.4 

2011-09-26 Massimo Manghi <mxmanghi@apache.org>
    * m4/ax_compare_version.m4: add macro for version comparison from the GNU macro archive

2011-09-23 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/rivetCore.c,src/apache-2/TclWebapache.c: merging changes
    made to fix bugs and requests to command 'makeurl', 'load_env' and 'load_headers'

2011-09-07 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/commands.xml: Add existing undocumented commands 
        - import_keyvalue_pairs
        - lempty
        - lmatch 
        - lassign (consider to remove, as it overlaps for name and features
          with identical Tcl core command)
        - read_file
        - wrap
        - wrapline
    Changed 'makeurl' documentation to account for new features recently committed

2011-09-06 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: Add Id svn keyword.
    * src/apache-2/TclWebapache.c: Command load_env and load_headers now resolve 
    the array name parameter following the default method (removed 
    TCL_NAMESPACE_ONLY flag that prevented creation of an array in a
    proc's scope). Still default values for the arguments create such arrays
    in the ::request namespace 
    * src/apache-2/rivetCode.c: preprocess macros ENV_ARRAY_NAME and HEADERS_ARRAY_NAME
    modified to explicitly put in ::request namespace the default arrays. 
    Procedure Rivet_MakeURL chages so that command 'makeurl' now accepts 
    relative paths and prepends them with the value of the SCRIPT_NAME environment 
    variable. When run without arguments 'makeurl' returns the value in the
    SCRIPT_NAME env variable.
     
2011-06-03 Massimo Manghi <mxmanghi@apache.org>
    * tclconfig/ltmain.sh: new version shipped with libtool 

2011-06-01 Massimo Manghi <mxmanghi@apache.org>
    * tclconfig/libtool.m4: autoconf 2.68 has a new IF..ELSE.. statement in m4 macros and
    libtool.m4 needs to get along it. New version copied into tclconfig.

2011-05-09 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: fixed misleading error message displayed when rivet_abort_script fails

2011-05-05 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: APACHE_VERSION returns an error message for--with-apache-version=1. 
    * src/apache-1/: removed from trunk

2011-04-14 Massimo Manghi <mxmanghi@apache.org>
    * src/Makefile.am,src/apache-2/Makefile.am: Add target install-data-hook with command line for
    removing unneeded .la files from target directories
    * configure.ac: doc/convert_examples.tcl is generated from template: added to AC_CONFIG_FILES 
    * debian/changelog,debian/control: changed to reflect improvement in the script for Debian

2011-06-07 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl: because of bug #3216070 of Tcl we cannot preload rivetlib, so it doesn't make
    sense to import the rivet namespace, because we cannot have all the command set loaded in and
    an import has to be done for them in the application scripts
    * rivet/rivet-tcl/incr0.tcl: Tcl8.5 provides identical functionalities, so this command is
    now aliased in the interpreter by the native incr command.
    * rivet/rivet-tcl/tclIndex: recreated

2011-04-06 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: Added doc/convert_examples.tcl to files created from its .in template

2011-04-03 Massimo Manghi <mxmanghi@apache.org>
    * doc/convert_examples.tcl.in,doc/convert_examples.tcl: Added script to convert code examples
    from their native form to a sgml escaped form.
    * doc/Makefile.am: Target 'examples' added
    * doc/xml/install.xml: Expanded --with-apxs explanation.
    * doc/README: expanded with instructions for adding new examples to the docs.

2011-04-01 Massimo Manghi <mxmanghi@apache.org>
    * doc/: new directory doc/examples-sgml. This is the directory where examples ready for inclusion
    in the manual must stay. The directory doc/examples is now meant to keep examples suitable for
    actual test and exectution
    * doc/convert_examples.tcl: New procedure that check for changes in doc/examples and, if needed,
    creates/recreates the corrisponding file in doc/examples-sgml escaping characters

2011-03-03 Massimo Manghi <mxmanghi@apache.org>
    * rivet/rivet-tcl/*.tcl: all the commands in here moved into ::rivet namespace. File tclIndex
    recreated
    * doc/xml/directives.xml,doc/xml/commands.tcl: Documentation changed to reflect the new scoping of
    the command set. Commands in rivet-tcl/ not yet documented have been briefly explained with some
    examples.
    * src/apache-2/mod_rivet.[c|h],src/apache-2/rivetCore.c: changes in trunk merged into the
    rivet-namespace branch

2011-03-01 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/rivetCode.c: 'abort_code' command is now created through the RIVET_CMD_OBJ macro

2011-02-18 Massimo Manghi <mxmanghi@apache.org>
    * src/rivet.h,src/apache-2/rivetCore.c,src/rivetPkgInit.c: Core commands namespace is now '::rivet' and 
    the package provided by the core module is "::rivet". Also package RivetLib was renamed as 'rivetlib'.

2011-02-14 Karl Lehenbauer <karl@apache.org>
    * src/apache-2/mod_rivet.c: Only create root interpreter once, not twice.  
    In Rivet_CopyConfig cache_size and cache_free were getting copied twice.  
    Only once now.
    * src/apache-2/rivetCore.c: Remove unused command var from Rivet_Upload.
    Remove unneeded loglevel var from Rivet_LogErrorCmd.

2011-02-14 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.[h|c],src/apache-2/rivetCore.c: Removed loading of RivetLib by default. Getting
    RivetLib into the module keeps Apache to segfault in other calls. In order to gain access to commands
    provided by RivetLib (formerly called Rivet) a 'package require RivetLib' must be in a Rivet script or
    in one of the initialization script (e.g. ServerInitScript ChildInitScript or GlobalInitScript). Notice:
    RivetLib exports the commands to the '::Rivet' namespace.
    * src/rivetCrypt.c, src/rivetWWW.c, src/rivetList.c: they now export their commands to the '::Rivet'

2011-02-11 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.[c|h]: new conf scripts rivet_abort_script and rivet_force_script. rivet_abort_script
    is run when an abort_page command is called in the page content generation
    * src/apache-2/rivetCode.c: add new command abort_code that returns the code passed to abort_page

2011-02-08 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/rivetCore.c: call to Rivet_InitWWW to include into Rivet's core the commands provided in
    src/rivetWWW.c
    * src/apache-2/mod_rivet.c: the inclusion into the module of RivetLib through Tcl_PkgRequire proved
    to cause segfaults in Rivet_ServerConf. The commands in rivetWWW.c are temporarily loaded by rivetCore.c
    * src/apache-2/Makefile.am: build of mod_rivet.so includes also code from src/libWWW.o

2011-02-07 Massimo Manghi <mxmanghi@apache.org>
    * branches/rivet-namespace: new branch to experiment with the Rivet namespace and Rivet package 
    * src/rivetPkgInit.c: Provides RivetLib package now when loaded by mod_rivet. Commands are now
    in the ::Rivet namespace
    * src/rivet.h: new macro RIVET_OBJ_CMD creates a command in the ::Rivet namespace
    and puts the command object on the namespace export list
    * src/apache-2/mod_rivet.h: the globals structure now holds a pointer to the Tcl_Namespace object
    representing ::Rivet namespace
    * src/apache-2/rivetCore.c: commands are now created with the RIVET_OBJ_CMD macro 
    * rivet/init.tcl: provides package RivetTcl 2.1. This makes possible to consistently peek the 
    init.tcl associated to the module. Command 'incr0' is now aliased by Tcl standard 'incr'
    * rivet/apache-2/mod_rivet.c: Rivet_PerInterpInit loads package RivetTcl 2.1 and package RivetLib 1.2.
    the latter ships the commands in rivetWWW.c rivetCrypt.c and rivetList.c
    * rivet/rivet-tcl/tclIndex: Command 'incr0' removed (see init.tcl)

2011-01-31 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: default value for directive SeparateVirtualInterps changed to 'yes'.
    * VERSION: version number set as 2.1.0r1 ('r' is for 'revision')
    * doc/xml/directives.xml: New directive ServerInitScript is documented.

2011-01-23 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.[c|h]: Created new ServerInitScript configuration directive: it assigns 
    rivet_server_init_script with a script run in Rivet_InitHandler after configuration has been built and
    before server children are forked. A master interpreter is created in Rivet_InitHandler. Children
    interpreters should hopefully be pure clones of this interpreter created by 'fork'

2011-01-09 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: fixed AC_DEFINE_UNQUOTED macro call for definition of proprocessor symbol RIVET_MAX_POST, 
    an integer valued symbol which was put in quotation marks. File indentation was fixed and tabs replaced with spaces

2010-12-03 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: new macros to set default values of configuration parameters.
    * src/apache-2/mod_rivet.c,mod_rivet.h: Default values are set in rivet_config.h through autotools. The Tcl
    Rivet environment is now loaded from mod_rivet by calling Tcl_PackageRequire("RivetTcl","1.1"); after auto_path
    is properly set. Configuration scripts are now stored in Tcl_Obj objects
    * doc/xml/install.xml: Add documentation for new 'configure' switch.
    * rivet/init.tcl: the path to RIVETLIB_DESTDIR is added to auto_path in mod_rivet.

2010-12-02 Massimo Manghi <mxmanghi@apache.org>
    * debian/libapache2-mod-rivet.*,debian/changelog: removed redundant lines from postist script (Debian package)
    * rivet/rivet-tcl/cookie.tcl: add command "cookie unset"
    * contrib/form.tcl,contrib/README: add a form.tcl based on TclOO. New README explanatory file
    * doc/xml/commands.xml: new command "cookie unset" explained
    
2010-10-27 Massimo Manghi <mxmanghi@apache.org>
    * branches/2_0: changes done in branches 2_0 reintegrated into trunk. This implied the following changes in trunk 
    * debian/[clean,docs,*.substvars,dirs,files,install]: not needed, hence removed from repository
    * debian/[changelog,copyright,rules]: files changed to produce a clean package out of the source tree
    * VERSION,configure.ac: version number bumped up to 2.0.2
    * doc/rivet-chunk.xsl: obsolete and misplaced copyright statement removed

2010-10-20 Massimo Manghi <mxmanghi@apache.org>
    * debian/[clean,install,docs,dirs]: removed because not needed or redundant
    * debian/copyright: completed to include also the Tcl license. Added copyright notes for stuff in win/

2010-10-19 Massimo Manghi <mxmanghi@apache.org>
    * debian/control,debian/Makefile.am: Minor adjustments to debian/control to fulfill Debian policy
    * debian/libapache2-mod-rivet-doc.docs: the 'contrib' directory is installed now in this package.
    * src/apache-2/rivetCore.c: In Rivet_ApacheTable the variable table is initialized to NULL to silence a 
    compilation warning
    * doc/Makefile.am: the 'distclean' target must remove the Makefile
    * Makefile.am: rivet_config.h removal added to 'distclean-local'

2010-10-18 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/tclrivet/parse.tcl: add svn:executable property as suggested by the debian consistency scripts
    * debian/*: more changes to remove unnecessary files from the binary packages of Debian

2010-10-14 Massimo Manghi <mxmanghi@apache.org>
    * debian/: more adjustments in the way of getting a working setup for Debian. Some information was moved to make
    it 'package specific'. More tweaking on debian/control and /debian/changelog

2010-10-13 Massimo Manghi <mxmanghi@apache.org>
    * src/buildscripts: trying to keep the source tree as tidy as possible. src/buildscripts/* are removed because they were\
    then initial and later abandoned Rivet build scripts
    * branches/2_0/src/buildscripts: removed also from the branch development
    * branches/2_0/debian/*: merging the debian scripts largely rewritten in trunk. Added control files to 
    build 2 packages for debian (binary module and docs)

2010-10-11 Massimo Manghi <mxmanghi@apache.org>
    * tclconfig/config.sub,tclconfig/config.guess: Debian package build system signalled that these 2 files were too old
    and suggested to update them with newer versions shipped by automake-1.11
    * debian/*: various stuff was changed trying to shape scripts to make debian packages as uneventful as possible
    * doc/Makefile.am: The 'clean' target in doc/Makefile was renamed as 'distclean'. HTML files are deleted only when
    a deep cleaning is required.

2010-10-07 Massimo Manghi <mxmanghi@apache.org>
    * debian/*: various changes that fix some consistency faults in the debian packages 

2010-10-06 Massimo Manghi <mxmanghi@apache.org>
    * debian/*: most files in this directory have been modified to comply with the latest version of debian packaging 
    system. Some files were deleted because superseded by others which have been added to produce 2 separate
    packages: one for the module and the Tcl library, the other for the html manual.

2010-09-20 Massimo Manghi <mxmanghi@apache.org>
    * debian/*: changing some info in files needed by the debian

2010-09-18 Massimo Manghi <mxmanghi@apache.org>
    * debian/*: files modified and added in the process to build a debian package
    * doc/Makefile.am: comments added. Better target handling

2010-09-15 Massimo Manghi <mxmanghi@apache.org>
    * debian/README.Debian, debian/rivet.load: add files needed to build a Debian package
    * debian/rules, debian/changelog, debian/control: experimental versions of files needed by .deb packages

2010-09-14 Massimo Manghi <mxmanghi@apache.org>
    * doc/html/*: directory removed from repository 
    * doc/Makefile.am: New targets for creating the doc/html/ directory and copying new or modified graphic files from
    doc/images to doc/html/images

2010-08-30 Massimo Manghi <mxmanghi@apache.org>
    * doc/images: Graphics displayed in the manual is copied in this directory. This is a first step in the transition 
    to a manual generation procedure that should achieve a cleaner repository structure

2010-08-26 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac: removed AC_DEFINE(BUILD_rivet....) as the tcl.m4 providing TEA 3.9
    makes redundant this definition. Argument to TEA_INIT changed accordingly
    * tclconfig/tcl.m4: overwritten by the new tcl.m4 and made a couple of adjustments that make it autoreconf/autoheader
    friendly.

2010-07-20 Massimo Manghi <mxmanghi@apache.org>
    * doc/examples/rivet_web_service.tcl,doc/html/*.html: Improved example of Ajax servlet. 
    Manual changed accordingly.

2010-07-18 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: static void ap_chdir_file renamed as static int Rivet_chdir_file. Rivet_chdir_file
    returns the value returned by chdir. This value is checked and in case of error the request
    aborts with an HTTP_INTERNAL_ERROR and a message is printed in the log file.
    * VERSION,configure.ac: version number changes as 2.0.1 (temporarily) 
    
2010-07-13 Massimo Manghi <mxmanghi@apache.org>
    * doc/rivet.xml,doc/html/*.html: Latest minor changes before releasing
    * VERSION,configure.ac: Release number changed as 2.0.1

2010-07-12 Massimo Manghi <mxmanghi@apache.org>
    * branches/2_0: Merge of trunk changes into the 2_0 branch. 

2010-07-12 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/calendar/calendar.tcl: new comments added. Fixed misspelled -errorinfo option
    in a return statement.
    * rivet/packages/session/session-create.sql: columns 'key' and 'package' are renamed as 'key_" and
    'package_'.
    * rivet/packages/dio/dio_Postgresql.tcl: fixed typo in variable name 
    * doc/xml/calendar.xml: More correction made on calendar.xml
    * doc/html/*.html: The whole manual has been rebuilt with the latest changes

2010-07-07 Massimo Manghi <mxmanghi@apache.org>
    * INSTALL: improved installation instructions before merging trunk into branches/2_0

2010-07-03 Massimo Manghi <mxmanghi@apache.org>
    * rivet/package/calendar/calendar.tcl: Add check on tcl version. If Tcl8.4 is being used
    we also need 'dict' backport as Calendar uses a dictionary to store some internal
    data.
    * doc/xml/calendar.xml: Wrong header corrected. Added explicit note about the requirements
    of the package

2010-07-03 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/calendar/calendar.tcl: Fixed indentation in weekdays row
    * doc/html/: Manual pages regenerated to include latest changes in section about package Calendar

2010-07-02 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/calendar/calendar.tcl: Add experimental package Calendar

2010-07-02 Massimo Manghi <mxmanghi@apache.org>
    * doc/html/calendar.html, doc/html/xml_calendar.html: Add html manual pages for Calendar
    * doc/xml/calendar.xml: more changes to calendar.xml

2010-07-02 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/calendar.xml: Add manual page for package Calendar (package still to be
      added to repository)
    * doc/xml/form.xml: Page for package 'form' written with a more structured
      docbook organization that allows finer styling of a manual page.
    * doc/rivet.xsl: Add xsl configurations for elements refsect1,refsect2 and
      refsect3
    * configure.ac: Add message when building for Apache 1.x
 
2010-07-01 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/Makefile.am: removed target 'html/rivet.html" from 'docs' depends. The no-chunks version
    of the manual can be build running 'make docs-nochunk'

2010-06-30 Massimo Manghi <mxmanghi@apache.org>
    * doc/xml/form.xml: Add 'checkbox' subcommand documentation
    * doc/html/*.html: Updated manual pages

2010-06-30 Massimo Manghi <mxmanghi@apache.org>
    * rivet/packages/form/form.tcl: fixed various methods in package form: 'field' method must
    treat checkboxes and radiobuttons alike, so that labels are printed next to the button.
    'radiobuttons' specialized method should not propagate the '-labels' switch to the attributes
    of the tag. 
    * doc/rivet.xml: add new documentation in file doc/xml/form.xml
    * doc/xml/form.xml: add to repository
    * doc/html/form.html,doc/html/form_package.html: add to repository
    * doc/html/*.html: new manual pages including the form package

2010-06-22 Massimo Manghi <mxmanghi@apache.org>
    * Makefile.am: Rivet install target deletes every pkgIndex.tcl file that might have been 
    left around in the Rivet directory tree, before calling pkg_mkIndex.tcl to regenerate 
    the library index file in the root directory.
    * rivet/packages/tclrivet/parse.tcl,rivet/packages/commserver/server.tcl: add existence test on 
    argv variable that wept during the installation process. If not set exits silently (variable is 
    required for a sensible use of the procedures)
    * rivet/packages/tclrivet/tclrivet.tcl: wrong path to librivetparser.[so|dll] corrected
    
2010-06-19 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/mod_rivet.c: filled SERVER_CONF variable in the 'server' array with value generated
    by the build system of the directory holding the conf files. 
    This fulfills a TODO comment in the code. The array server is undocumented and is not clear if it was
    added for the benefit of the programmer or for debugging of the module.
    * src/apache-2/mod_rivet.h: structure definitions beautified and aligned.
  
2010-05-14 Massimo Manghi <mxmanghi@apache.org>
    * BUGS,INSTALL,Changelog: small improvements in the documentation

2010-05-14 Massimo Manghi <mxmanghi@apache.org>
    * tclconfig/install-sh: the install-sh script is replaced with the same script shipped with automake-1.11

2010-05-13 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-1/TclWebapache.c: call to ap_send_http_headers centralized in TclWeb_SendHeaders
    * src/apache-2/TclWebapache.c: bugfix for string assigned to the content_type field that has to
	be duplicated to preserve from memory deallocation by Tcl, includes to modules from apache APR
	library added, call to ap_send_http_headers centralized in TclWeb_SendHeaders
 
2010-04-29 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/apache_multipart_buffer.c: Add include <apr_string.h> to silence a compilation
    warning.
    * src/apache-2/apache_multipart_buffer.h: set svn property to enable $Id: keyword expansion
    * doc/xml/session.xml: Commented line about a 'CookieDomain' command of Session that appears to
    be non coded yet. To be added to the TODO file.

2010-04-29 Massimo Manghi <mxmanghi@apache.org>
    * configure.ac,VERSION: Pre-branching operations: AC_INIT now uses 2.0.0 as version number
    to be used across the build system. Also the file VERSION has been updated to reflect the
    release number.

2010-04-27 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-1/TclWebapache.c,src/apache-1/rivetCore.c,src/apache-1/mod_rivet.c,
      src/apache-1/apache_request.c,src/apache-1/apache_multipart_buffer.c: changes and 
      additions made for apache 2 added to the code for apache 1.x   

2010-04-22 Massimo Manghi <mxmanghi@apache.org>
    * rivet/init.tcl: add to auto_path the directory where init.tcl is located, as this
    is also the directory for package Rivet

2010-04-19 Massimo Manghi <mxmanghi@apache.org>
    * tests/upload.[rvt|test]: fix upload message sent to server. The end boundary
	went undetected and Rivet added it to the uploaded file. Thus the problem
	affected only the test, not the module. Added delimiter to the returned 
	message to allow easy spotting of an empty string.

2009-12-08 Karl Lehenbauer <karl@apache.org>
    * rivet/packages/form/form.tcl, form.txt: Add new form methods for HTML 5
      form elements "color", "date", "datetime", "datetime_local", "email",
      "file", "image", "month", "number", "range", "search", "tel", "time",
      "url", "week"

2009-11-03 Massimo Manghi <mxmanghi@apache.org>
    * src/apache-2/rivetCore.c: in function Rivet_Upload the list of subcommands
    had 2 entries for 'tempname" leading Tcl_GetIndexfromObject to mismatch the entry for
    the 'names' subcommand with its numerical counterpart. 
    This caused the child process to segfault when processing a 'upload names' command.

2009-11-02 Massimo Manghi <mxmanghi@apache.org>
    * tests/apachetest/apachetest.tcl: apachetest::getallincludes failed to
    properly handle glob style file patterns. 

2009-09-17 Karl Lehenbauer <karl@apache.org>
    * rivet/packages/form/form.tcl, form.txt: Add a new form method, "button",
      that's just like "submit" except pressing enter doesn't cause it to be 
      invoked.  Add quick doc, form.txt, on the forms package.

      Terminate <option> with </option> in form selectors.

2009-09-15 Karl Lehenbauer <karl@apache.org>
    * rivet/packages/form/form.tcl: If the array containing default values
      for the form is passed in when the form is created
      (for instance: form myform -defaults response -method post),
      make sure form classes public variable "defaults" is set to
      that array name.

2009-09-03 Karl Lehenbauer <karl@apache.org>
    * src/apache-2/rivetCore.c: Add new command, apache_log_error, which
      allows consistent logging to the Apache error log file.

2009-06-24 Karl Lehenbauer <karl@apache.org>
    * acinclude.m4: Include m4/ax_prefix_config_h.m4 to define the
      AX_PREFIX_CONFIG_H macro.

    * tclconfig/libtool.m4, tclconfig/config.guess, tclconfig/config.sub,
      tclconfig/ltmain.sh: Freshened these files with the latest versions
      from libtool.

    * configure.ac, tclconfig/tcl.m4, tclconfig/ChangeLog,
      tclconfig/README.txt, tclconfig/install-sh: Updated to Tcl Extension
      Architecture (TEA) 3.7.

2009-05-05 Karl Lehenbauer <karl@apache.org>
    * src/apache-2/mod_rivet.c: When Rivet is shutting down and per-vhost
      separate virtual interpreters were in use, the shutdown code deleted
      the master interpreter and all of the slave interpreters using
      Tcl_DepeteInterp().  This was an error as it should only delete the
      mater interpreter, as deleting the master interpreter causes its
      slaves to be deleted. It now does this.  (Had it checked using
      Tcl_InterpDeleted to see if the interpreter was already marked as
      deleted, it probably would have been OK.)

    * src/rivetChannel.c - update Tcl channel handler to channel version 4.

2009-05-05 Karl Lehenbauer <karl@apache.org>
    * Add new Rivet Tcl command,apache_table, which can query, get and set
      values in the Apache "notes", "headers_in", "headers_out",
      "err_headers_out" and "subprocess_env" tables.

    * Add new "upload" option "tempname" that'll return the name of the
      temporary file containing the upload.

    * When instantiating separate virtual interpreters, postpend an interpreter
      count to the self-created slave interpreter name, to keep 
      Tcl_CreateSlave from failing if two or more virtual hosts have the same 
      ServerName and don't have a port defined in the ServerName directive.

    * Detect and report failure of Tcl_CreateSlave rather than assuming it
      succeeded and dereferencing a null pointer when it didn't.  Also added
      asserts to detect null interpreter pointer.

    * Slightly improved error messages when a child init or exit function
      fails.

2009-05-01 Karl Lehenbauer <karl@apache.org>
    * Rename global request rec pointer from globalrr to 
      rivet_panic_request_rec, add rivet_panic_pool and
      rivet_panic_server_rec, grabbing those values from Rivet initialization
      rather than request handling so that they are initialized enough that
      Rivet_Panic can use them.  (Previously Rivet_Panic or Tcl_Panic at 
      initialization time caused a null-pointer-dereference segmentation 
      violation because no request was being served.

      In Rivet_Panic, avoid emitting the unparsed URI unless a request is
      being processed.

2009-04-27 Karl Lehenbauer <karl@apache.org>

    * src/apache-2/mod_rivet.c: In Rivet_SendContent, when checking to see
      if the file doesn't exist, check r->finfo.filetype rather than
      r->finfo.protection.  (The prior check failed to detect that the
      Rivet source file did not exist, causing zero length webpages to
      be sent rather than 404's.)

2009-01-16 Massimo Manghi <mxmanghi@apache.org>

    * Makefile.am: Add DESTLIB variable handling as suggested
    by kikusz@gmail.com and accordingly with Automake directives
    for local install rules.

2008-12-21 Massimo Manghi <mxmanghi@apache.org>

    * src/apache-2/rivetCode.c: add handling for subcommand
    'tempname'

2008-12-15 Massimo Manghi <mxmanghi@apache.org>

    * src/apache-2/TclWebapache.c: fixed test on configuaration
    flag 'upload_files_to_var' 

2008-12-11 Massimo Manghi <mxmanghi@apache.org>
    
    * src/apache-2/mod_rivet.c: fixed call to apr_strcat in function
    Rivet_ExecuteAndCheck (the corresponding call in the apache-1 code
    has been checked and appears to be correct).
    
    * doc/xml/internals.xml: Removed broken external link pointing
    to a no more existing gdb tutorial.

2008-12-03 Massimo Manghi <mxmanghi@apache.org>

    * doc/rivet.xml: document timestamp is generated with the 
    EXSLT datetime() function controlled through the <?dbtimestamp ...?>
    element. The timestamp now reflects the actual time when the xsl
    processor is run, instead of time when the svn commit is carried out.

    * doc/rivet.xsl: customization added to make a list of examples
    appear at the end of the table of contents.

    * doc/html/*.html: manual pages rebuilt and committed to repository

2008-11-21 Massimo Manghi <mxmanghi@apache.org>

    * doc/rivet.xml: file broken up into chunks containing the toplevel
    sections of the manual. For every file an xml entity was created.

    * doc/xml/*.xml: added xml files containing every toplevel section of
    the manual.

    * doc/Makefile.am: added dependency from xml/*.xml for html pages
    generation

2008-11-17 Karl Lehenbauer <karl@apache.org>
    * src/apache-2/TclWebapache.c: Make TclWeb_UploadChannel open the 
    uploaded file and make the file handle available through standard Tcl 
    mechanisms, removing OS depdendencies.

    Make TclWeb_UploadData access the uploaded file through standard
    Tcl mechanisms, making the uploaded data available and also removing
    OS dependencies.

    Add TclWeb_UploadTempname to get the name of the temp file the
    uploaded file was saved to.

    Include apr_strings.h to remove compiler warning of implicit
    definitions of apr_pstrdup and apr_psprintf as well as multiple
    warnings about casts to pointer from integer of different size.

    Force rsc->upload_files_to_var to be set, temporarily, pending figuring 
    out why the configuration directive to set that is not working.

    * src/apache-2/rivetCore.c: Check return from Tcl_GetIndexFromObj call 
    in "upload" command processing (Rivet_Upload command).  Return an error 
    when the subcommand (channel, save, data, exists, size, type, filename, 
    tempname, or names) is invalid.

    Add "tempname" option to "upload" command.  "upload tempname" will
    return the name of the temporary file a file uploaded via a
    POST command was saved to.

    * src/apache-2/mod_rivet.c: Change "char *" arguments to 
    Rivet_ServerConf, Rivet_DirConf and Rivet_UserConf to be
    "const char *" to bring them in line with what Apache expects,
    fixing compiler warnings warnings about "assignment discards qualifiers 
    from pointer target type".

    Use a "void *" argument where expected in calls to AP_INIT_TAKE2
    for Rivet_DirConf and Rivet_UserConf and do an assigment to the
    Rivet-desired types of rivet_server_conf to eliminate
    "initialization from incompatible pointer type" compiler warnings.

    Make Rivet_SetScript's script and string arguments be const char *
    instead of char *.

    * src/apache-2/apache_request.c: Change "char *error[1024]"
    to "char error[1024]" to fix "incompatible pointer type" error
    in the call to apr_strerror.

    * src/apache-2/apache_request.h - make temp_dir be a const char *
    instead of a char *.

    * src/apache-2/apache_multipart_buffer.c: Add include of apr_strings.h
    to remove compiler warning of implicit definitions of apr_pstrcat and 
    warnings about casts to pointer from integer of different size (which
    occurred on 64-bit machines, anyway.)

    * doc/rivet.xml: added the "tempname" option to "upload".

2008-11-13 Massimo Manghi <mxmanghi@apache.org>

	* src/apache-2/rivetCore.c: In function 'Rivet_Parse' the call
	to Tcl_FSStat was turned into the corresponding apr function 
	'apr_stat'. 
	This change was motivated by a possibile mismatch between Rivet's
	allocation of the structure 'Tcl_StatBuf' and the handling
	of the structure done within the Tcl C library. 
	This seems to have healed a pointer corruption that caused 
	segfaults when the 'parse' command was executed.

2008-10-07 Massimo Manghi <mxmanghi@apache.org>

	* src/apache-2/apache_multipart_buffer.c, src/apache-2/rivetCore.c,
	src/apache-2/TclWebapache.c,src/rivetChannel.c,src/rivetCrypt.c: 
    	Inclusion of config.h changed to reflect renaming of config.h.

	* configure.ac: new AX_PREFIX_CONFIG_H added to 'configure' 
	generation. Added switch --enable-display-version for having 
	Rivet's version printed in Apache signature

	* m4/ax_prefix_config_h: added macro for renaming config.h into
	rivet_config.h (or whatever we deem a good name for this file).
	Preprocessor symbols in this file are also prefixed with RIVET_
	
	* Makefile.am: added handling of the macros in the 'm4' directory. 

	* src/apache-2/mod_rivet.h: removed definition of preprocessor
	symbol for hiding version number in apache logs (feature now
	controlled in 'configure')

	* src/apache-2/mod_rivet.c: Changed preprocessor symbols that
	are now prefixed by 'RIVET_'. Moved misplaced #ifdef APACHE2 test.
	Maybe this test is useless as we certainly are building against 
	APACHE2 when compiling this file

2008-09-06 Massimo Manghi <mxmanghi@apache.org>

	* INSTALL: instructions for builing Rivet expanded with
	examples taken from real builds for Debian and Slackware.

	* src/apache-2/apache_request.[c|h]: removed TODO comments
	concerning ap_hard_timeout and ap_kill_timeout as these functions
	doesn't not exist anymore in the apache 2.x api.
	Added the Content-type as a new argumento to
	ApacheRequest_parse_multipart for parts boundary determination.
	The correctness of the content type has to be done before calling
	in order to do the check only once. Commented declarations of variables
	not used. The 'tempname' string is allocated now from the apache pool.
	Changed template for temporary file name generation. If 
	apr_file_mktemp fails a more descriptive error is logged.

	* src/apache-2/apache_multipart_buffer.[c|h]: removed line in
	multipart_buffer_read that lead the buffer pointer to fail following 
	the parsing process. Input buffer size changed to a larger and more 
	common size of 8192 bytes

2008-08-30 Massimo Manghi <mxmanghi@apache.org>

	* doc/rivet.[xml|xsl], doc/html/*.html: changed a couple of rule 
	in rivet.xsl: they basically make example boxes a 
	bit more flexible for html browsing and made their 
	background color a bit more "neutral". I also made the character 
	in them slighly smaller in order to have more 
	space for code lines.

2008-08-28 Massimo Manghi <mxmanghi@apache.org>

	* src/apache-2/mod_rivet.c: using the 'parse' command twice within
	the innermost nested level would trick rivet into 
	treating the second template as a Tcl script. 
	Condition on the flag 'toplevel' has been reintroduced in the
	on the file type (Rivet_ParseExecFile), but the whole mechanism 
	has to be revised. 

	Adopting a reverse logic in this test should achive the same
	result in more linear way
	
	if (Rivet_CheckType(req->req) == TCL_FILE) {
 	    ---> Tcl script
	} else {
	    ---> Rivet template
	}

2008-07-03 Massimo Manghi <mxmanghi@apache.org>

	* src/apache-1/mod_rivet.[c|h]: done modifications needed to replicate
	for the apache 1 code the functionalities added to the apache 2
	module

2008-07-01 Massimo Manghi <mxmanghi@apache.org>
	
	* src/rivet.h: added macro STRNEQU(s1,s2) which efficiently
	compares 2 strings. Unlike STREQU(s1,s2) this new macro compares
	at most strlen(s2) characters.

	* src/TclWeb.h: added charset field to TclWebRequest. This new
	property gets initialized to NULL every time this structure
	is instantiated. If used it stores a pointer to a string that 
	specifies a header value fragment for the page being generated. 

	* src/apache-2/TclWebapache.c: request_rec is treated as an
	opaque structure and the field 'content_type' is set by calling
	the ap_set_content_type apache core function

	* src/apache-2/mod_rivet.h: a 'honor_header_only_reqs' is added
	to the rivet_server_conf for handling of the 
	HonorHeaderOnlyRequests configuration option

	* src/apache-2/mod_rivet.c: Every content_type is checked 
	for possible charset specifications. When found this is 
	stored in the TclWebRequest structure to be processed later. 
	If a script or template doesn't set a content type on its own (with 
	the 'headers type <ctype>' command) the charset is written in 
	the http headers. Added support for the 'HonorHeaderOnlyRequests' 
	switch. Other minor changes include better code formatting 
	in some functions and commenting out some cruft left around.

2008-01-08 Massimo Manghi <massimo.manghi@unipr.it>

	* rivet/packages/dio/dio.tcl: auto_path shouldn't be set 
	or modified outsite init.tcl

	* rivet/init.tcl: We want the Tcl code specific to an
	installation to take precedence over other Tcl packages
	or other versions of the same stuff. Therefore I put 
	the references to the rivetlib directory in the first
	positions in auto_path.

2008-01-07 Massimo Manghi <massimo.manghi@unipr.it>

	* src/apache-2/TclWebapache.c: Fixed timestamp printed in the
	DATE_LOCAL and DATE_GMT fields of the environment table.

	* src/apache-2/mod_rivet.h: Fixed definitions for RIVET_INIT and
	RIVET_DIR. I couldn't fix SERVER_CONF though

2008-01-06 Massimo Manghi <massimo.manghi@unipr.it>

	* Makefile.am: target 'uninstall-local' added. Stuff in
	RIVETLIB_DESTDIR gets removed upon deinstallation

	* rivet/packages/dio/dio_Mysql.tcl: small fixes for 
	2 methods. In method 'open' the switch '-host' was
	not handled. In method 'exec' the handling of 'select'
	queries has been changed because the previous method
	failed in certain circumstances (queries build with lists)

	* src/apache-[1|2]/mod_rivet.c: Status returned by Tcl_EvalFile 
	is now checked explicitly against TCL_ERROR

	* doc/html/*.en.html: Html pages regenerated after changes in rivet.xml

	* src/rivetCore.c: Moved into src/apache-1. This file was compiled by 
	src/apache-1/Makefile.am, whereas src/apache-2 had its own 
	rivetCore.c module. 

	* src/apache-1/Makefile.am: Changed to reflect rivetCore's new location.
	rivetWWW.c removed from module's compilation: stuff in it has to be loaded
	into the interpreter with 'package require Rivet'

	* src/apache-2/Makefile.am: Reordered list of files to allow better
	comparison with apache-1 build.

2008-01-05 Massimo Manghi <massimo.manghi@unipr.it>
	
	* src/apache-[1|2]/mod_rivet.c: Added comments as per
	David Welton's suggestion.

2007-12-03  Valery Masiutsin <val.masutin@gmail.com>

	* tests/apachetest/: multiple changes has been made to tests
	to get them working with apache2
	* src/apache-2/mod_rivet.c, src/apache-2/apache_multipart_buffer.c:
	fixes for  issues that has been discovered with tests, mostly
	there were problems with multipart buffer parsing during POST
	* configure.ac: minor issue with apache includes handling has been
	fixed

2007-11-18  Massimo Manghi <massimo.manghi@unipr.it>

	* doc/rivet.xml: note added to description of
	commands listed in the 'Rivet' package.

2007-11-05  Massimo Manghi <massimo.manghi@unipr.it>

	* configure.ac: the macro rivet_target_dir was added 
	to 'configure'. This macro generates a name for the 
	directory where Rivet libraries must be copied during 
	the installation phase. User is enabled to change
	the default value by feeding 'configure' with the switch
	'--with-rivet-target-dir'. This macro defines also the
	variable RIVET_TCL_TARGET and calls AC_SUBST on it.
	The target directory gets inserted also in the 
	auto_path list variable of every script run by 
	the module. Defined configuration symbol 
	RIVETLIB_DESTDIR in config.h.

	* Makefile.am,src/Makefile.am: RIVET_TCL_TARGET variable
	propagation.

	* src/apache-1/Makefile.am: rivetWWW.c removed from 
	linking into mod_rivet.so (this requires docs to 
	be updated, as commands in this file have to be 
	loaded explicitly using 'package require Rivet')

	* src/apache-1/mod_rivet.c: Tcl_DeleteInterp called
	upon child exit. ${RIVETLIB_DESTDIR)/init.tcl is 
	run during the interpreter initialization.
	
	* src/apache-2/mod_rivet.c: Exit handler reenabled,
	and Tcl_DeleteInterp called upon child exit. 
	${RIVETLIB_DESTDIR)/init.tcl is run during the 
	interpreter initialization. Code clean up in 
	Rivet_GetConf. Minor changes in order to get rid
	of some compilation warnings.

	* src/apache-2/TclWebapache.c: Test checking for 
	null values in the table of environment variables
	has been extended to the value field. Failure to
	do so caused a child to segfault when rivet was
	used in conjuction with dir_module

2007-10-19  Massimo Manghi <massimo.manghi@unipr.it>
	
	* src/apache-2/mod_rivet.c: Included a more correct
	statement in aknowledgement of mod_ruby (BSD license)
	for the code in ap_chdir_file.

	* ChangeLog: the whole batch of patches described in 
	the previous entry (2007-10-17), came from Valery 
	Masiutsin <val.masutin@gmail.com>. I forgot to mention
	it in this document. My fault.

2007-10-17  Massimo Manghi <massimo.manghi@unipr.it>

	* configure.ac: added APACHE2 define to config.h,
	added also a message when the apxs program is found.

	* doc/Makefile.am: 'clean' target fixed

	* src/apache-2/Makefile.am: added -I"." to the INCLUDE symbol

	* src/apache-2/mod_rivet.c: Changed function that determines
	if this is a request rivet must serve. We now correctly 
	rely on the module configuration and on the headers handed
	on to us by apache. Added also a ap_chdir_file implementation.
	This function was dropped by the apache developers: we are
	reintroducing it using a code snippet inspired by mod_ruby.

	* src/apache-2/apache_request.h: Changed prototype of
	ApacheRequest_tmpfile function to return apr_file_t instead 
	of FILE, also modified ApacheUpload structure 

	* src/apache-2/apache_request.c: ApacheRequest_tmpfile
	rewritten using calls to apr_* functions

	* src/apache-2/TclWebapache_c: TclWeb_UploadSave in
	a more robust way using apr_* calls 


2007-10-14  Massimo Manghi <massimo.manghi@unipr.it>

	* doc/rivet.xml: Front page updated, page for the
	'load_response' command updated and extended, link to the 
	Italian and Russian translations removed, html pages
	in Italian and Russian removed from repository

	* rivet/rivet-tcl: new 'load_response.tcl'. This
	version deals in a more consistent way with the case
	of parameters that receive multiple values (see docs)

2007-10-12  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Fixed "dio" id's.

2007-10-11  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Added missing ID's.

	* doc/Makefile.am (docs): Removed Russian and Italian
	translations from the build.

	* doc/norefchunk.xsl, doc/refentry.xsl: Ditch fancy-pants XSLT
	stuff.

2007-09-19  Massimo Manghi <massimo.manghi@unipr.it>

	* configure.ac: TEA_INIT argument was changed to 3.6 to match 
	the new TEA version in the tcl.m4. Macro for --with-apache was
	simplified. Macro for --with-apxs changed in order to check for 
	possible multiple version of apxs installed.
	Defined compilation parameters generated by apxs.
	Same for apr-1-config that returns compilation parameters for apr.

	* Makefile.am src/Makefile.am src/apache-[12]/Makefile.am:
	changed to handle new symbols and parameters

	* src/apache-1/mod_rivet.[hc] rivet version logging enabled:
	I enabled this to check if I was loading the expected module
	but maybe can be used to generate, at least for the code in
	trunk, more refined version numbers to be used in the
	development cycle.

	* src/rivetCore.c: added call to initialize commands
	in rivetWWW.

2007-09-09  David N. Welton  <davidw@dedasys.com>

	* src/apache-2/Makefile.am: Another patch from Valery Masiutsin
	<val.masutin@gmail.com>: Propagated variables from configure.ac,
	did some cleanups.

	* src/apache-1/Makefile.am: More of Valery's patch: Propogate
	variables from configure.ac.

	* configure.ac: More of Valery's patch: Separated cases for
	apache-1 and apache-2 in APACHE function.  Added handling for
	apache-2 for platforms i am developing on.  Probably it will need
	to be unified later.  Touched CHECK_APXS a bit.  Replaced
	APR_INCLUDES function with APR_HANDLING, now we are requiring full
	path for apr-1-config and getting cppflags and includes from
	it. APR tool has platform specific set of cppflags, just includes
	is not enough.  Added GET_RIVET_BASE function, which allows us to
	get rid of relative pathes in include flags.  Rearranged functions
	a bit - mostly to find out version of apache we are building for,
	before doing any substitutions.

	* src/Makefile.am: More of Valery's patch: Propagated variables
	introduced in configure.ac.

	* src/apache-2/mod_rivet.c (Rivet_TranslateUri): More of Valery's
	patch: Changed a bit Rivet_ParseFileArgString a bit, it fixed
	segfaults, but still needs some work. I've added apr_pool_t
	pointer to parameters we are passing to function.

2007-08-29  David N. Welton  <davidw@dedasys.com>

	* src/apache-1/Makefile.am: Another patch from Valery correcting
	a mistaken application of his patches on my part.

2007-08-27  David N. Welton  <davidw@dedasys.com>

	* configure.ac: Added missing quote.

	* configure.ac: Another patch from Valery, making compilation
	smoother on Debian.

	* src/apache-1/Makefile.am: Accepted patch from Valery for
	improved compilation.

	* src/apache-1/apache_multipart_buffer.c: Accepted patch from
	Valery to make this file compile.

	* tclconfig/tcl.m4: Moved to latest tcl.m4 at Valery's suggestion.

2007-08-22  David N. Welton  <davidw@dedasys.com>

	* configure.ac: Added patch from Valery Masiutsin
	<val.masutin@gmail.com> improving the configure setup.

2006-07-03  Karl Lehenbauer  <karl-rivet@sc.com>
        * rivet/packages/dio/dio_Postgresql.tcl: when handling a PostgreSQL
	  result, if numrows is zero, see if cmdTuples
	  (Pg_result $resultHandle -cmdTuples) contains anything, and if it 
	  does, put that in of numrows, hiding a PostgreSQL interface
	  quirk from DIO.

2006-06-07  David N. Welton  <davidw@dedasys.com>

	* rivet/packages/session/session-create-mysql.sql: Minor update
	from Massimo Manghi for Mysql 4.

	* rivet/packages/session/session-class.tcl: Minor update from
	Massimo Manghi.

2006-05-14  David N. Welton  <davidw@dedasys.com>

	* rivet/packages/session/, rivet/packages/dio/: Added Mysql and
	Oracle session creation packages.  Updates to dio and session
	packages.  Modifications to the Mysql driver.  Added an Oracle
	driver. Thanks to Arnulf Wiedemann (arnulf@wiedemann-pri.de) and
	Massimo Manghi (manghi@biol.unipr.it).

2006-02-03  Karl Lehenbauer  <karl-rivet@sc.com>
	* rivet/packages/dio/[dio,diodisplay].tcl: Uncovered a serious flaw
	  in DIO -- there is no way to update a row in a way that changes
	  the key value.  As a result, DIOdisplay punts and deletes the
	  row then reinserts it with the new key.  This is not the same
	  thing as the delete can trigger integrity checks that fail because
	  of constraints from other tables.  Added the somewhat kludgey
	  update_with_explicit_key method to let us specify the key rather
	  than having the key always be dug out of the data array (so that
	  the key in the data array can be different) and altered the
	  row edit code in DIOdisplay to use this rather than doing the
	  delete/insert thing.

2006-01-25  Karl Lehenbauer  <karl-rivet@sc.com>
	* rivet/packages/dio/diodisplay.tcl: When editing, made select boxes
	  have the current value selected by default.

2006-01-14 Eckhard Lehmann  <ecky.l@gmx.de>

	* configure.ac: edited for 2 directories src/apache-1 and
	src/apache-2 to be the source directory for either Apache1.x or
	Apache2.x. Added new autoconf macros to check for apache base
	directory, apache/apr include directories (on debian for instance,
	they are in /usr/include/apache1.3 resp. /usr/include/apache2 and
	/usr/include/apr-0) and apache version ( --apache-version=1 or
	--apache-version=2). According to the macros, the sources either
	in src/apache-1 or src/apache-2 are compiled.

	* src/: put all sources for rivet for Apache1.x into a
	subdirectory apache-1, left the Makefile.am unchanged. Copied the
	files to a subdirectory apache-2 and started port of rivet to
	Apache2.2 with these files.

	* Checked in by davidw.

2005-12-12  Karl Lehenbauer  <karl-rivet@sc.com>
	* rivet/packages/dio/dio.tcl: Reverted change to "store" method
	  that removed fields from the store array that were part of the
	  key and took out this behaviour from the update method.

	  The problem was that "DIO store" or "DIO update" could cause
	  fields to disappear from the data array as a side effect, and
	  the caller had no reason to expect that, hence it broke some
	  code.

2005-11-08  Karl Lehenbauer  <karl-rivet@sc.com>

	* rivet/packages/dio/dio.tcl: Add new "update" method that works
	  just like "store" except that it assumes you're doing an update
	  and, unlike store, does not check to see if the row is already
	  there or not.  

	  Also modified the "store" method, when doing an update, to not 
	  attempt to change row fields that are specified in the where clause.

	* doc/rivet.xml: Documented all undocumented public DIO methods, such 
	  as count, db, forall, interface, insert, makekey, quote, search
	  and update.

2005-11-08  Pat Thoyts  <patthoyts@users.sourceforge.net>

	* win/makefile.vc:      Update for new version.
	* win/Rivet.nsi:        Update for new version.
	* src/apache_request.c: Cast aways some warnings.
	* src/rivetCore.c:      Make it work with MSVC (wierd bug).
	* src/TclWeb.h:         Declare TclWeb_GetRawPost (MSVC complains).

2005-11-03  David N. Welton  <davidw@dedasys.com>

	* src/Makefile.am (lib_libexecdir): Install everything to
	rivet@VERSION@.

	* tests/runtests.tcl (runtests_usage): Check for utf-8 environment
	- this causes some problems with a number of tests.  I'm not sure
	precisely why, but it causes a large portion of otherwise
	successful tests to choke.

2005-10-31  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Woops, fix spelling error: Seperate->Separate.

2005-10-01  David N. Welton  <davidw@dedasys.com>

	* rivet/pkgIndex.tcl: Added a package index here so that when used
	for tests, something exists.

	* tests/runtests.tcl: Add local path to TCLLIBPATH, add
	CoreDumpDirectory so that we can get any core files generated by
	bad tests.

	* src/mod_rivet.c (Rivet_PerInterpExit): Run any per-interp child
	exit things that need taking care of.
	(Rivet_ChildExit): Walk through the list of interpreters and do
	any shut down work necessary prior to shutting the whole thing
	down.

	* src/rivetChannel.c (outputproc): If the AssocData is NULL, we
	don't try and output anything.  This is probably some residual
	data stuck in the channel.

2005-09-29  Karl Lehenbauer  <karl-rivet@sc.com>

	* rivet/packages/dio/dio.tcl: Fix typo in "DIO insert" method

2005-09-25  Karl Lehenbauer  <karl-rivet@sc.com>

	* src/rivetCore.c, src/mod_rivet.c, src/mod_rivet.h: Updated
	code comments.  In particular, every function in src/mod_rivet.c
	now has a standard header.

	* rivet/rivet-tcl: README, cookie.tcl, debug.tcl, html.tcl,
	import_keyvalue_pairs.tcl, import_switch_args.tcl, incr0.tcl,
        lassign.tcl, lempty.tcl, lmatch.tcl, load_cookies.tcl,
        load_response.tcl, parray.tcl, random.tcl, read_file.tcl,
        rivet_command_document.tcl, wrap.tcl: Updated code comments
	and added subversion "Id" tags where they weren't present.

2005-09-23  David N. Welton  <davidw@dedasys.com>

	* genconf.sh: Added autoheaders.

	* doc/Makefile.am (docs): Documentation is now its own target -
	this means it doesn't get run as part of 'all'.

2005-09-22  Karl Lehenbauer  <karl-rivet@sc.com>

	* rivet/packages/dio/dio.tcl: "DIO insert" method is much more 
	efficient than "DIO store" when you know you want an insert and
	not an update and now actually works.

	* README.MacOSX:  GNU autoconf/configure script does not actually 
	work to make the Rivet module on Mac OS X so the README has been
	reverted to show it the old-school way using the Tcl build scripts.

2005-08-21  David N. Welton  <davidw@dedasys.com>

	* doc/html/rivet.css: CSS tweaks for documentation.

	* doc/rivet.xml: Updated build directions to ./configure ; make ;
	make install.

	* src/rivetCore.c (Rivet_Upload): Fixed a line that is complained
	about in newer GCC's (casting lvalues).

2005-08-19  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_InitTclStuff): Use both the hostname and
	the port in creating names for the slave.  This fixes a bug where
	you have different virtual hosts running on the same server name
	but different ports.

2005-08-13  David N. Welton  <davidw@dedasys.com>

	* tests/apachetest/apachetest.tcl: Make sure we get our own
	version of http.tcl.  Tcl Feature request 928154 means that we
	need our own copy of http.tcl for now.

	* tests/runtests.tcl (runtests_usage): Print out an error message
	if the arguments aren't right. Fixed paths to load .so files, as
	the auto tools put them in a different place.

	* tests/apachetest/apachetest.tcl (apachetest::getbinname): Check
	to make sure the server is executable.

	* src/apache_request.c (ApacheRequest_parse_urlencoded): Patch
	from Arnulf Wiedemann to allow XML POST data.

	* src/rivetCore.c (Rivet_RawPost): Tcl command implementation to
	fetch raw POST data or an empty string if none is available.

	* src/apache_request.h: Added element to struct, and accessor
	function.

	* src/apache_request.c (ApacheRequest_parse_urlencoded): Save a
	pointer to the raw data.

	* src/TclWebapache.c (TclWeb_GetRawPost): Added a raw POST data
	fetcher here.

2005-08-12  David N. Welton  <davidw@dedasys.com>

	* configure.ac: Bump the version to 0.6.0.

	* src/apache_request.c (ApacheRequest_parse_multipart): Added code
	from httpd-apreq that supposedly deals with a problem in Opera
	file uploads.

2005-08-01  Karl Lehenbauer  <karl-rivet@sc.com>
	* : abort_page was, for all intents and purposes, completely and utterly 
	  broken -- it forced a return from whatever called it, as if it was 
	  a "return" statement, but it didn't stop evaluating Tcl beyond that, 
	  which was broken, and it discarded output by setting an "aborted"
	  flag in Apache which, under certain circumstances caused browsers 
	  to render blank pages, apparently related to keep-alive connections.
	  It now works correctly by causing the interpreter to stop 
	  interpreting, and doesn't mess up keep-alive connections, etc.  
	  How it does this is it unwinds the interpreter by generating an 
	  error with the errorCode set to "RIVET ABORTPAGE".  The error 
	  handling code in Rivet checks for this, and if this is received, it 
	  completes the page in the normal manner without executing the 
	  user-registered or built-in error handlers.

	  One potential incompatibility is that abort_page's execution
	  can now be caught with Tcl's "catch" routine, although this could
	  also be considered a feature -- Rivet coders who use "catch"
	  should check errorCode to see if the first element of the list
	  is RIVET and the second is ABORTPAGE and either regenerate the 
	  abort_page, pass the error up, or handle it in some custom manner
	  in their catch handler.

2005-07-15  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_ServerConf): Use Tcl_GetBoolean on the
	*val*, not the *var*.  Big difference!

2005-06-14  Karl Lehenbauer  <karl-rivet@sc.com>
	* configure.ac, src/Makefile.am, tclconfig/config.guess, 
	  config.sub, ltmain.sh: Updated with libtoolize 1.5.18 -- Rivet 
	  now builds cleanly under Mac OS X.

2005-06-06  Karl Lehenbauer  <karl-rivet@sc.com>

	* rivet/packages/dio/dio.tcl: Delete now returns the number of
	  records that were deleted rather than just a 1 if it deleted
	  one or more and a 0 if it didn't.  The forall method now does
	  the forall on the result handle prior to checking for an error,
	  in case an error occurs inside the forall.  From Peter da Silva.

	* rivet/packages/dio/dioSQLite.tcl: SQLite implementation for DIO.
	  From Peter da Silva.

2005-04-14  Pat Thoyts  <patthoyts@users.sourceforge.net>

	* win/Makefile.vc: Update the makefile and installer script
	* win/Rivet.nsi:   for the 0.5.0 release.

2005-03-24  David N. Welton  <davidw@dedasys.com>

	* Makefile.am (EXTRA_DIST): Added the doc, rivet and debian
	directories to the distribution.

2005-03-23  David N. Welton  <davidw@dedasys.com>

	* doc/norefchunk.xsl: Removed chunk-first-section-with-parent and
	chunk-all-sections.

	* genconf.sh: Updated to use 1.8 autotools.

2005-03-12  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_SendContent): Use static objects for
	scripts that are used for each request, in order to keep reusing
	them.
	(Rivet_PerInterpInit): Switch back to using Tcl_PkgRequire.

2005-01-08  Karl Lehenbauer  <karl-rivet@sc.com>

	* rivet/packages/dio/diodisplay.tcl: Accept arguments to the
          showform_prolog method that are passed through to the form's
	  start method.  This allows things like naming the form and
	  accessing the fields from javascript by name.

	* rivet/packages/form/form.tcl: Allow start method to take key-value
	  arguments that will be expressed in the <form> tag.

2005-01-07  Karl Lehenbauer  <karl-rivet@sc.com>

	* /rivet/packages/dio/diodisplay.tcl: Factor showform prolog and
	  epilog code into showform_prolog and showform_epilog methods
	  so that when a derived DIODisplay class is overriding, for 
	  example, an Add or Edit method, the author doesn't have to 
	  dup all of showform's functionality.

	* rivet/packages/form/form.tcl: Commented the package.

2005-01-03  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Use 'mail-archives' instead of nagoya.

2004-12-22  David N. Welton  <davidw@dedasys.com>

	* Makefile.am (install-data-local): Added this target to install
	the Tcl packages and generate a pkgIndex.tcl file.

2004-12-16  David N. Welton  <davidw@dedasys.com>

	* src/Makefile.am (lib_libexecdir): Did some rearanging of things
	to get the directories in a better state.

	* configure.ac: Added TCL_PACKAGE_PATH.

2004-12-14  David N. Welton  <davidw@dedasys.com>

	* doc/Makefile.am: Added html doc targets.

2004-12-08  David N. Welton  <davidw@dedasys.com>

	* Makefile.am, configure.ac: Added the doc/ directory.

2004-12-07  Karl Lehenbauer  <karl-rivet@sc.com>
        * rivet/packages/dio/dio.tcl: "DIO delete" method now return the
	  number of rows affected.

2004-12-03  Karl Lehenbauer  <karl-rivet@sc.com>

	* rivet/packages/dio/dio.tcl: Cause fatal database errors such
	  as bad syntax, etc, to raise a Tcl error in many methods that
	  used to just return 1 or 0 (like DIO store).

	* configure.ac: Remove superfluous commented-out lines

	* Add BUGS file.  Update STATUS and VERSION files.

2004-12-02  David N. Welton  <davidw@dedasys.com>

	* Removed libtool - it appears to be under the GPL!

	* Removed aclocal.m4 configure Makefile.in src/Makefile.in to avoid
	CVS churn.

	* configure.ac: Commented out AC_DEFINE(USE_TCL_STUBS), as it was
	  causing some problems for mod_rivet.so.

2004-12-02  Karl Lehenbauer  <karl-rivet@sc.com>

	* Collected some build notes in README.configure

	* : Clean up presentation of --with-apxs and --with-tclsh and
	  have them show up when configure --help is run.

	* tclconfig/tcl.m4, configure.ac, config.h, src/*.c:
	  Switch most autoconf-generated elements that get put on 
	  compiler command lines as -DHAVE_NET_ERRNO_H, etc, to put 
	  that stuff in config.h instead.  This included altering
	  all AC_DEFINE and AC_DEFINE_UNQUOTED macros to have three 
	  arguments, where the third argument is a description, so that 
	  autoheader can generate the config.h.in, significantly 
	  decluttering the compiler command lines.
	  tcl.m4 changes should be fed back to the TEA project,
	  as well as the technique for using automake to simplify
	  the build

	* Move aclocal.m4 to acinclude.m4 -- we need the aclocal command
	  to generate acinclude.m4 based on aclocal.m4 and stuff it gleans
	  from the configure.ac script, etc.

	* configure.ac: A path to tclsh is automatically figured out by the 
	  TEA 3.1 build stuff.  However it is also possible to override
	  with --with-tclsh, and the configure script also makes sure
	  there at least is a file there as well.

	* src/configure.ac et al: Get automake, aclocal, and autoconf to run 
	  without complaint, generating the configure script, Makefile.in 
	  files, etc.

	* configure.ac: Propagate the NAMEOFEXECUTABLE define via the 
	  autoconf scripts
	  src/Makefile.am: (same)

	* configure: check in configure script, it's hard to make unless
	  you have everything just right.  We will probably revisit this
	  later.
	* src/Makefile.in: (same)
	* Makefile.in: (same)

	* libtool:  Added libtool and friends in tclconfig dir using
	  libtoolize -- this is what figures out how to build shared
	  libraries, etc.

2004-12-01  Karl Lehenbauer  <karl-rivet@sc.com>

        * Update autoconf build to TEA 3.1

        * configure.am: Automatically locate apxs in the PATH if it hasn't
	  been overridden by --with-apxs.  Likewise automatically locate
	  tclsh if it hasn't been overridden by --with-tclsh.

	* Add of README.freebsd for FreeBSD.

2004-11-17  Karl Lehenbauer  <karl-rivet@sc.com>

        * rivet/packages/dio/dio.tcl: Fixed comments incorrectly placed 
	  outside of a switch body.

2004-11-11  Karl Lehenbauer  <karl-rivet@sc.com>

        * rivet/packages/dio/dio.tcl: Added "insert" method that
	  doesn't try to see if it's there already all the other
	  stuff that "store" does.

	* doc/rivet.xml: Documentation for above.

2004-11-05  Karl Lehenbauer  <karl-rivet@sc.com>

        * rivet/packages/session/session-class.tcl: Quote backslashes when
	  storing so they won't be stripped by the database.  Needs to
	  be tested for MySQL and SQLlite.

2004-11-04  Karl Lehenbauer  <karl-rivet@sc.com>

        * rivet/packages/dio/*.tcl: Documented the code for
	  DIO and DIOdisplay.

2004-11-04  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_ServerConf): Use Tcl_GetBoolean, at
	Karl's suggestion.

2004-11-03  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_ServerConf): Instead of just "on", accept
	"yes" and "1" as well.

2004-10-29  Karl Lehenbauer  <karl-rivet@sc.com>

        * rivet/packages/dio/dio_Mysql.tcl: The "DIO handle" method, which
	  returns the underlying database's connection handle, now forces
	  the database connection to be made, if it hasn't already been
	  made, just like DIO exec.

        * rivet/packages/dio/dio_Postgresql.tcl: (same)

2004-09-29  David N. Welton  <davidw@dedasys.com>

	* src/rivetCore.c (TestpanicCmd): Added command to test panics.

	* src/mod_rivet.c (Rivet_Panic): Added panic proc that tries to
	log the error to disk.

2004-09-20  David N. Welton  <davidw@dedasys.com>

	* rivet/packages/rivet_ncgi/rivet_ncgi.tcl: Compatibility layer
	for tcllib's ncgi package.

2004-09-20  Karl Lehenbauer  <karl-rivet@sc.com>
	* src/mod_rivet.c (Rivet_PerInterpInit): Load the init.tcl file
	with an explicit path rather than using Tcl_PkgRequire.  Previously, 
	if Rivet was installed with a PREFIX/lib that wasn't already in
	Tcl's package search path (auto_path, probably because it was the
	same lib directory as Tcl used, typically /usr/local/lib), Tcl
	startup is unable to find the RivetTcl package, and Rivet is
	unable to start.  

2004-09-17  Karl Lehenbauer  <karl-rivet@sc.com>
	* rivet/packages/rivet/pkgIndex.tcl:  Removed.  It had a hard-coded
	assumption about the shared library extensions (.so).  This file is
	now generated in the target directory by the install node of make.tcl.

	* rivet/pkgIndex.tcl: Removed.  It is generated by the make.tcl
	install process, as above.

	* src/make.tcl: The above changes, specifically the install node 
	now generates the target rivet/pkgIndex.tcl and 
	rivet/packages/rivet/pkgIndex.tcl file using pkg_mkIndex, 
	causing all Tcl-defined and shared-library-defined packages to be 
	discovered and generated into the pkgIndex.tcl.

2004-09-16  Karl Lehenbauer  <karl-rivet@sc.com>
	* src/parserPkgInit.c: Added a Rivetparser_SafeInit so the
	C-based standalone Rivet parser library can be loaded
	from safe interpreters.  After inspection, we believe that
	rivet::parserivetdata can be loaded into safe interpreters
	without compromising their security.  rivet::parserivet
	definitely cannot be made available to a safe interpreter --
	it could be manipulated to read files.

	* src/rivetPkgInit.c: Added a Rivet_SafeInit so lib can
	be loaded from safe interpreters, which also makes it work
	better under Mac OS X.

	* src/rivetCrypt.c: Added function header to init routine.
	* src/rivetList.c: (same)
	* src/rivetWWW.c: (same)

	* README.MacOSX: Temporary file to document Mac OS X build quirks.

	* src/configure.tcl: If a configuration variable in
	  tclConfig.sh ever had an equal sign in the "value"
	  portion of the key=value pair, configure.tcl would
	  malfunction.

	  A missing variable caused a variable referencing that
	  missing variable to be silently dropped.  We now
	  complain, although the right answer is probably to
	  substitute an empty string for all missing variables.
	  Still, this way at least gives a hint as to the problem.

	* src/Makefile: Add simple rules for "clean", "distclean",
	and "install" that simply invoke make.tcl appropriately.

2004-08-07  David N. Welton  <davidw@dedasys.com>

	* rivet/packages/dtcl/dtcl.tcl (hgetvars): Added code from Arnulf
	Wiedemann <arnulf@wiedemann-pri.de> to set up VARS array.

2004-08-03  Pat Thoyts  <patthoyts@users.sourceforge.net>

	* win/Rivet.nsi: Added a NSIS script. This is used with the
	Nullsoft scriptable installer system to create an installer for
	Rivet to install onto a Windows system.
	* win/makefile.vc: Added htmlhelp and installer targets.

2004-06-25  Pat Thoyts  <patthoyts@users.sourceforge.net>

	* src/rivetCrypt.c: Fix const-ness of resultBuffer to match 
	apache's crypt function.
	* win/makefile.vc: Fixed the version string to match rivet project
	version. Support use of MSVC.NET or VC++Toolkit compilers.

2004-06-04  David N. Welton  <davidw@dedasys.com>

	* contrib/two-mode-mode.el: Updated two-mode-mode.

2004-06-02  David N. Welton  <davidw@dedasys.com>

	* src/buildscripts/aardvark.tcl: Use 'Output' instead of puts.  It
	might be useful were we ever to do something like make an aardvark
	GUI.

2004-06-01  David N. Welton  <davidw@dedasys.com>

	* Following changes by Pat Thoyts  <patthoyts@users.sourceforge.net>:
	* win/makefile.vc: Updated to deal with the START_TAG END_TAG
	macros.
	* src/rivetParser.h: Declare missing prototype.
	* tests/binary.rvt: The stdout channel under Windows needs to be
	told to use translation binary for binary data.

2004-05-18  David N. Welton  <davidw@dedasys.com>

	* src/make.tcl: Quote Tcl argument.

	* doc/rivet.xml: Added clearer instructions for mailing list
	subscription.

2004-05-05  Karl Lehenbauer  <karl-rivet@sc.com>

	* src/rivetWWW.c: Made the escape_string command map spaces
	to plus signs (+) rather than %20.  They're equivalent and
	unescape the same, but the plus signs are visually easier
	to take.

2004-05-05  Karl Lehenbauer  <karl-rivet@sc.com>

	* /rivet/packages/dio/diodisplay.tcl: Got "-type boolean"
	working.  There's some problem with using a method that
	uses configvar to set a var as a method in a class where
	the class is being inherited by a subclass that redefines
	the variable.  I had to substitute "cget -varName" style
	to get it to work.

2004-05-05  Karl Lehenbauer  <karl-rivet@sc.com>

	* /rivet/packages/dio/diodisplay.tcl: Added "-type select"
	option to DIOdisplay fields, and a new option, "-values $list"
	which takes a list of values to be made available with a form
	selector.

2004-05-05  Karl Lehenbauer  <karl-rivet@sc.com>

	* /rivet/packages/dio/diodisplay.tcl: When adding a new record,
	if they've typed anything into the "is" field, set the default
	value of the field specified in the "where" part to match.

2004-05-05  Karl Lehenbauer  <karl-rivet@sc.com>

	* doc/rivet.xml: Documented the escape_string, unescape_string,
	escape_sgml_chars, and escape_shell_command functions.

2004-05-04  Karl Lehenbauer  <karl-rivet@sc.com>

	* rivet/packages/dio/diodisplay.tcl: Added enhancements from 
	Peter da Silva (peter@taronga.com): Add support for hidden variables.
	(This is so that you can have state variables that are maintained by 
	the function outside of DIOdisplay, retained as you jump through 
	DIOdisplay.) Added DIORowHeader to the style sheet.  Turned the search 
	table into a navigation bar.  Added a filter method that allows you 
	to edit the display of fields on the fly, for example, you have a 
	time in integer seconds since 1970 and you can add a filter that 
	does a "clock format" using -filter, or, for example, it can look 
	up an IP address from a table.

	* rivet/packages/dio/dio.tcl: Added enhancements from 
	Peter da Silva (peter@taronga.com): New "forall" method will apply
	a result across a code body for each record returned in the result
	and then delete the result handle, all in one fell swoop.

2004-04-24  David N. Welton  <davidw@dedasys.com>

	* src/buildscripts/aardvark.tcl (aardvark::runbuildcommand): If
	the node doesn't exist, always "rebuild" it.

	* src/make.tcl: Make sure make install message is only printed
	when the correct target is called.

2004-04-21  David N. Welton  <davidw@dedasys.com>

	* rivet/packages/dio/pkgIndex.tcl: Add sqlite interface.

	* rivet/packages/dio/dio_Sqlite.tcl: Added incomplete sqlite
	interface to DIO.

2004-04-14  David N. Welton  <davidw@dedasys.com>

	* rivet/packages/dio/dio.tcl: Removed mysql and postgres specific
	code from main DIO package, which now loads the subclass package
	automatically.

	* rivet/packages/dio/dio_Mysql.tcl: Added new package to remove
	separate mysql DIO interface.

	* rivet/packages/dio/dio_Postgresql.tcl: Added new package to
	separate postgres DIO interface.

2004-04-12  Andy Doerr	    <andydoerr@swbell.net>

	* rivet/packages/dio/diodisplay.tcl:
	- Modified searchBy form field to use the -labels and -values
	parallel lists in form.tcl class method (select).
	- Modified Search proc to not use FieldTextMap as the search
	now does not need to look up the db field name.

2004-04-05  David N. Welton  <davidw@dedasys.com>

	* tests/docroot1/ tests/docroot2/: Files used to test virtual
	hosts with.

	* tests/virtualhost.test: New file: tests for virtual hosts.

	* tests/apachetest/apachetest.tcl: Require our own version of
	http.tcl, due to Tcl feature request #928154 (it's impossible to
	set the Host header).
	(apachetest::start): We now take 3 arguments.  The new one is
	'conftext', which is used to write to the test.conf file before
	running the test.

	* tests/runtests.tcl: Changed test config to add an "Include
	test.conf" directive.  We can write out our own configs for each
	test with that.

	* src/mod_rivet.c (Rivet_PerInterpInit): New function that groups
	together everything that has to happen when a new interpreter is
	created - either the main one, or for virtual hosts.
	(Rivet_InitTclStuff): Redid the way virtual hosts are treated
	here: make sure there is a unique rivet_server_conf for each one,
	either because MergeConfig has been called, or we create one
	ourselves.
	(Rivet_CreateConfig): We don't initialize objCache and outchannel
	members of rivet_server_conf here anymore.  They are now taken
	care of in Rivet_InitTclStuff.
	(Rivet_MergeConfig): Either take care of all members of
	rivet_server_conf struct, or include a comment explaining why it's
	not there.
	(Rivet_ChildHandlers): New function - takes care of either child
	init or exit scripts, depending on how it's called.

	* doc/rivet.xml: Describe how each RivetServerConf directive
	interacts with virtual hosts.

2004-02-26  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Added DIODisplay section.

2004-02-25  David N. Welton  <davidw@dedasys.com>

	* src/rivetParser.h: start/end tags removed from here.

	* src/make.tcl: START_TAG and END_TAG are now defined here, so
	that they are easier to configure at build time.

	* doc/rivet.xml: Initial cut at including DIO docs in the main set
	of docs.

2004-02-23  David N. Welton  <davidw@dedasys.com>

	* LICENSE: Switch to Apache 2.0 License.

2004-02-20  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c (TclWeb_SetHeaderType): strdup object's
	string value so we have our own copy of it.

2004-02-19  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Added some additional comments regarding the
	installation.  Thanks to Tom Krehbiel for the suggestions.

2004-02-17  David N. Welton  <davidw@dedasys.com>

	* src/make.tcl: Created better dependency system for DocBook docs.

	* doc/html/rivet.*.html: Added non-chunked versions of the docs.

	* doc/rivet-nochunk.xsl: Change include of docbook.xsl to an
	import at the top of the file.  Seems to make things work ok.

2004-02-11  David N. Welton  <davidw@dedasys.com>

	* src/make.tcl: Don't delete rivet packages directory during
	install.  This used to happen in order to keep things clean, but
	people are using this directory for local packages/modifications,
	so this is not a good thing to have.

2004-02-06  David N. Welton  <davidw@dedasys.com>

	* tests/headers.test: Include current version of http package in
	result automatically, so as to avoid having to update it by hand.

	* tests/apachetest/apachetest.tcl (apachetest::getallincludes):
	Create function to fetch a conf file and all the files Included it
	from it.

	* doc/rivet.xml: Add section for session package.

	* doc/rivet.xml: Added SESSION documentation.

	* rivet/packages/session/README.txt: Removed text, indicate
	HTML/XML docs - I don't want to maintain the same docs in two
	places.

	* src/make.tcl: Create directory before installing.

2004-01-20  Karl Lehenbauer  <karl-rivet@sc.com>

	* rivet/packages/dio/diodisplay.tcl: Removed calls to abort_page
	when relatively benign conditions like no records matching a
	search occur.  This allows us to emit all the code we need, like
	closing the table (</table>) and emiting our page trailer, etc,
	instead of having the page cut off somewhere in the middle.

2004-01-15  David N. Welton  <davidw@dedasys.com>

	* rivet/rivet-tcl/load_response.tcl (load_response): Fixed a bug
	in load_response that was tickled by calling it multiple times.
	Thanks to Brad for catching it.

2004-01-15  Brad Morrison  <brad@sc.com>

	* rivet/rivet-tcl/load_response.tcl: Changed behavior from
	appending discovered values to existing elements in the
	response array to simple assignment.

2004-01-15  David N. Welton  <davidw@dedasys.com>

	* rivet/packages/simpledb/simpledb.tcl (simpledb::synctostorage):
	Added fix from Massimo Manghi <manghi@biol.unipr.it> for bug in
	procedure to write database to disk.

	* rivet/packages/simpledb/simpledb.test (populatetables):
	Commented out stuff to add into the test later.

2004-01-08  David N. Welton  <davidw@dedasys.com>

	* src/make.tcl: Added warning to default make.tcl target in order
	to encourage people to run ./make.tcl install.

2004-01-08  Karl Lehenbauer  <karl-rivet@sc.com>

	*  src/buildscripts/findapxs.tcl: When the apxs program cannot
	be located, the message now mentions that the location of apxs
	can also be specified using the "-with-apxs" option on the
	command line.

2004-01-05  Karl Lehenbauer  <karl-rivet@sc.com>

	*  rivet/packages/session/*: Checkin of session management code.
	This is a from-scratch rewrite of Superconnect's session
	management code, donated to Rivet under the terms of the
	Apache Software License. See rivet/packages/session/README.txt 
	for details of what it does and how it works.

2004-01-02  Karl Lehenbauer  <karl-rivet@sc.com>

	*  src/buildscripts/findapxs.tcl: Added /usr/local/bin and
	/usr/local/sbin to the directories that Rivet configuration
	looks in to find apxs, when the path to apxs wasn't specified
	on the configure command line.

	Changed findapxs::FindAPXS to generate an error if it couldn't 
	find a working apxs utility, rather than just returning an empty 
	string.  Previously if apxs could not be found, the error message 
	emitted by configure.tcl was: "Error in CFLAGS test: couldn't 
	execute "": no such file or directory"  Now it says it couldn't
	find the Apache Extension Tool apxs and lists everywhere it looked.


2003-12-20  David N. Welton  <davidw@dedasys.com>

	* tests/parsepackage.test: Added tests for the Rivet parser
	standalone package and pure Tcl Rivet parser.

	* INSTALL: Added basic configuration directives to INSTALL file.

	* rivet/packages/tclrivet/tclrivetparser.tcl: Added pure Tcl Rivet
	parser.  This doesn't have all the Rivet commands available, it
	just parses a <? ?> style Rivet file into the corresponding Tcl
	script.

	* src/parserPkgInit.c (Parse_RivetData): We no longer
	automatically add the namespace.  The user ought to be able to add
	that should they so choose.  This makes the command more flexible.

	* src/rivetParser.c (Rivet_Parser): Removed an unnecessary
	Tcl_UtfNext from the parser.
	(Rivet_GetRivetFile): Removed useless 'inside' variable from this
	function.

	* doc/rivet.xml: Add abort_page, no_body and env commands,
	reordered the load_* commands.

	* doc/rivet.it.xml: Updated author.

	* doc/rivet.ru.xml: Updated author.

	* doc/rivet.xml: Changed documention author to "The Rivet Team".

	* src/rivetCore.c (Rivet_NoBody): Return an error if content has
	already been sent.

	* src/rivetCore.c: Added fancy headers to all functions.

2003-12-13  David N. Welton  <davidw@dedasys.com>

	* tests/broken.test: Updated test results for what is actually
	returned on error.

	* src/rivetParser.c (Rivet_Parser): "export" function in that it's
	no longer static.

	* src/parserPkgInit.c (Parse_RivetData): New alpha-ish command to
	parse data passed to the script.

	* src/configure.in.tcl: Merge apxs and Tcl CFLAGS in order to
	include what we need from both.  Hopefully there won't be any
	conflicts.

2003-11-27  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Added information about debugging Apache/Rivet.

2003-11-20  David N. Welton  <davidw@dedasys.com>

	* src/make.tcl: Changed xsltproc lines to deal with new link
	styles.

	* doc/rivet.xml: Changed links as in Russian translation.

	* doc/rivet.it.xml: Changed links as in Russian translation.

	* doc/rivet.ru.xml: Changed links to use "en.html" style instead
	of "html.en".  This will make google pick up the pages.

2003-10-22  David N. Welton  <davidw@dedasys.com>

	* win/: Numerous updates from Pat Thoyts
	<patthoyts@users.sourceforge.net>.

2003-09-30  David N. Welton  <davidw@dedasys.com>

	* src/rivetCore.c (Rivet_Include): More ref count management.

	* src/mod_rivet.c (Rivet_PropagatePerDirConfArrays): Added more
	ref count management.

	* src/rivetParser.c (Rivet_GetRivetFile): Add ref counting for
	'inbuf'.

	* src/mod_rivet.c (Rivet_ParseExecFile): Manage ref count for
	outbuf better.
	(Rivet_SendContent): Clean up 'info script' code.
	(Rivet_InitTclStuff): Rework 'if' to eliminate double assignment.

	* src/TclWebapache.c (TclWeb_GetEnvVars): Add ref counting for
	envvar.
	(TclWeb_GetHeaderVars): Fix ref counting for headersvar.

	* tests/headers.test: Added test for load_headers.

	* src/apache_request.h: Updates from httpd-apreq.

	* src/apache_request.c: Updates from httpd-apreq.

2003-09-29  David N. Welton  <davidw@dedasys.com>

	* rivet/packages/commserver/server.tcl: Exit 1 on failure.

	* rivet/packages/commserver/commserver.tcl: Check to make sure the
	server is really running before returning from commserver::start.

	* rivet/packages/simpledb/simpledb.tcl: Added 'simpledb', although
	it's not ready for production use.

	* src/mod_rivet.c (Rivet_ChildInit): If we don't have separate
	virtual servers, we only need to run the ChildInitScript once.  If
	we do have interpreters for each virtual server, each one gets to
	run the script.

	* doc/rivet.ru.xml: Big update of the Russian translation by
	Dmitry the Zuryanovich <dtz@XEPb.ru>.  Thanks!

2003-09-26  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c: Spelling check: seperate->separate.

2003-09-24  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Mention the global command in the 'internals'
	section.

2003-08-30  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Added var_qs and var_post cmdsynopsis's.

2003-08-29  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Use refentry and sub-elements instead of
	variablelist.  This is more correct.

	* doc/norefchunk.xsl: New file - handle refentries without making
	them new files.

	* doc/rivet.xsl: Scratch the last changes and go with refentry's
	for all commands.  This is a more difficult solution to parse, but
	in the end is more correct.

	* doc/refentry.xsl: New file to handle refentry stuff.

2003-08-28  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xsl: Minor changes to look and feel.

	* doc/rivet.xml: Added <indexterm> tags for commands, in order to
	create the index.

	* doc/rivet.xsl: Added XSL to parse <index>, needed to create an
	index of commands on the index page.

2003-08-26  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Added section to documentation about emacs and
	vim modesl for Rivet files.

	* src/configure.in.tcl: -with-apxs option no longer takes a
	default.  It should work that out on its own using the
	findapxs.tcl script.

2003-08-23  David N. Welton  <davidw@dedasys.com>

	* src/configure.in.tcl: Remove test for broken Tcl installations
	on FreeBSD and MacOS X.  Apparently, things work ok with 8.4.

2003-08-22  David N. Welton  <davidw@dedasys.com>

	* src/configure.in.tcl: Add test for broken Tcl installations on
	FreeBSD and MacOS X.

	* doc/rivet.xml: Added installation instructions corresponding to
	the new ./configure.tcl system. Ran the spellchecker.

	* src/buildscripts/aardvark.tcl (aardvark::runbuildcommand):
	Rebuild only if file depended on is newer than the target, rather
	than >=.  This prevents some files from being remade if make is
	run again.

	* src/configure.tcl (configure::ProcessOptions): Added 'verbose'
	flag to configure.
	(configure::test): Exit on tcl failure in test procedures.
	(configure::assert): Added assert command.  Fail on error or 0.

2003-08-21  David N. Welton  <davidw@dedasys.com>

	* src/configure.in.tcl: Changed INC variable to use
	TCL_INCLUDE_SPEC.

	* INSTALL: Updated instructions.

	* src/configure.tcl (configure::parsetclconfig): We need access to
	previously parsed variables, so we do this in the ::configs
	namespace.

2003-08-20  David N. Welton  <davidw@dedasys.com>

	* src/buildscripts/aardvark.tcl (aardvark::getconfigs): Added new
	function to fetch the config info out of configs.tcl.

	* src/make.tcl: Removed debinstall target, because we can now
	accomplish the same thing by overriding configure options on
	make's command line.   Removed the configure-style code at the top
	of the file.

	* src/configure.in.tcl: Specify the variables to test for/create,
	as well as some command line options specific to Rivet.

	* src/configure.tcl: Added new configure-like system to obtain
	information about the environment where Rivet is being compiled.
	Running ./configure.tcl creates a file, configs.tcl, with the
	its findings.  make.tcl now uses those values as its defaults,
	unless they are overridden on make.tcl's command line.

2003-08-11  David N. Welton  <davidw@dedasys.com>

	* src/make.tcl: Added fileutils Tcl package to buildscripts, in
	order to utilize the 'install' command.

2003-08-05  David N. Welton  <davidw@dedasys.com>

	* contrib/rvt.vim: Added contributed vim mode for editing Rivet
	files.

	* contrib/two-mode-mode.el: Added emacs mode for editing Rivet
	files.

2003-07-22  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.ru.xml: Added lang=ru to article, so that markup like
	<note> produces the correct language.

	* doc/rivet.it.xml: Added Italian translation of Rivet docs by
	Fabio Zanotti <zendune@virgilio.it>.

2003-07-16  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Explain example script just a bit more clearly.

	* src/make.tcl: Fix up clean target.  Use MOD_SHLIB as target
	instead of explicit mod_rivet.so.

2003-07-08  David N. Welton  <davidw@dedasys.com>

	* src/buildscripts/findapxs.tcl: Added /usr/local/sbin as a place
	to check for apxs.  Thanks to Andy Doerr for pointing out that
	this is where it's kept on FreeBSD.

2003-07-07  David N. Welton  <davidw@dedasys.com>

	* doc/examples/upload.html: Added submit button to file upload
	example.

2003-07-05  David N. Welton  <davidw@dedasys.com>

	* src/rivetWWW.c (snprintf): Added snprintf define from Pat.

	* src/rivetParser.h: Added bit of defines for windows builds,
	declared some of the functions EXTERN's here.

	* src/rivetList.c: Make list commands created here 'static' - Pat.

	* src/rivetCrypt.c: Use ap_config.h to grab other header files we
	might need, like crypt.h.  This is not an ideal solution, because
	it adds a dependency we didn't have before.  Added change by Pat
	to conditionally compile or not the 'Rivet_Crypt' command.

	* src/rivet.h: Added EXTERN definitions for functions.

	* src/parserPkgInit.c (Rivetparser_Init): Added EXTERN decleration
	for win builds.

	* win/rules.vc: New file: include file for Microsoft makefile.

	* win/rivet.dsp: New file: Microsoft Developer Studio Project
	File.

	* win/nmakehlp.c: New file: helper for windows building.

	* win/makefile.vc: New file: makefile for windows.  All from Pat
	Thoyts <patthoyts@users.sourceforge.net>.

	* doc/examples/vars.html: Use a table to make the form look nicer.

	* doc/examples/vars.rvt: Now we display some results.

2003-07-01  David N. Welton  <davidw@dedasys.com>

	* src/rivetCore.c (Rivet_Upload): Pass the correct element of objv
	to TclWeb_UploadSave.

	* tests/uploadsave.rvt: New file to test 'upload save'.

	* tests/upload.test: New test for 'upload save'.

2003-06-30  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_ParseExecFile): Use Tcl_FSStat instead of
	Tcl_Stat.

	* src/rivetCore.c (Rivet_Parse): Use Tcl_FSStat instead of
	Tcl_Stat.

2003-06-29  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Add IRC reference to the help section of the
	  manual.

2003-06-23  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.ru.xml: Updated Russian version to indicate which
	version of the original it was based on.

	* doc/rivet.xml: Added version string to English version.

2003-06-14  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Added CVS Id tag.

	* doc/rivet.ru.xml: Added comment to indicate the version of
	rivet.xml that the Russian translation is based on.

2003-06-12  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_ParseExecFile): Rework checks for
	.htaccess file changes.  This code was causing an obscure bug
	where a file would be in the cache twice, thus causing crashes.

	* Moved russian translation around again.

	* src/TclWebapache.c (TclWeb_GetEnvVars): Use TCL_NAMESPACE_ONLY
	here and in TclWeb_GetHeaderVars in order to set the variable in
	the correct place.

	* src/make.tcl: Added changes to build Russian documentation.

	* doc/rivet.xml: Added link to Russian translation.

	* doc/rivet.ru_UTF.xml: Added link back to English version.

2003-06-10  David N. Welton  <davidw@dedasys.com>

	* doc/rivet_utf_ru.xml: Added Russian translation of documentation
	by Dmitry Zuryanovich.

2003-06-09  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Cleaned up docs about fetching the httpd sources.

2003-05-26  David N. Welton  <davidw@dedasys.com>

	* src/rivetCore.c (Rivet_Headers): Change error message to better
	reflect that there is only one argument to 'headers numeric'.
	Thanks to "Dmitry Zuryanovich".

	* src/mod_rivet.c (Rivet_ParseExecFile): Updated
	Rivet_GetRivetFile and Rivet_GetTclFile to use the right
	arguments.

2003-05-24  David N. Welton  <davidw@dedasys.com>

	* rivet/packages/tclrivet/tclrivet.tcl: Added commands that need
	to be filled in.

	* tests/runtests.tcl: Use apachetest::need_modules.

	* tests/apachetest/apachetest.tcl (apachetest::need_modules): New
	proc, utilized to tell the test suite which apache modules are
	needed.

2003-05-23  David N. Welton  <davidw@dedasys.com>

	* src/buildscripts/aardvark.test: Do a version check on gcc.  We
	used that for the tests, so we might as well be sure we're using
	the same version.

	* src/make.tcl: Use buildscripts.tcl to load up all the other
	scripts we need.  Add PARSER_SHLIB as a dependency for the shared
	build.

	* src/buildscripts/aardvark.test: Updated aardvark tests to
	current GCC.

	* src/buildscripts/buildscripts.tcl: New file: use this file to
	load up all the other scripts.

	* src/buildscripts/findconfig.tcl: Moved all the functionality
	into parsetclConfig.tcl.

	* src/buildscripts/aardvark.tcl: Just source the graph.tcl file
	directly instead of dealing with packages.  Thanks to Pat Thoyts.

2003-05-22  David N. Welton  <davidw@dedasys.com>

	* src/rivetParser.c (Rivet_GetRivetFile): API Change: instead of
	taking a TclWebRequest argument, we just give this function a
	Tcl_Interp, which makes it easier to seperate this code from
	Rivet.

	* src/mod_rivet.h: STARTING_SEQUENCE and ENDING_SEQUENCE moved to
	rivetParser.h, in order to make that file independant of
	mod_rivet.h.

	* src/make.tcl: Use slightly more descriptive variable names.  Add
	code to compile librivetparser.so.

	* src/parserPkgInit.c: New file.  Provides a Tcl extension to the
	Tcl parser, so that regular (not running under Apache) scripts can
	access it.

	* doc/html/rivet.css: Updated a few stylesheet properties to make
	the docs look a bit classier.

2003-05-21  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xsl: Switch on parameter to use images in HTML output
	from docbook.

	* doc/rivet.xml: Added c.l.t. newsgroup to resources section.

2003-05-20  David N. Welton  <davidw@dedasys.com>

	* doc/html/rivet.css: Added CSS file.

	* src/make.tcl: Added parameter to xsltproc to link the html
	output to a CSS file.

2003-05-14  David N. Welton  <davidw@dedasys.com>

	* src/make.tcl: Added PKGINDEX to the list of dependencies for
	rolling a distribution.  Updated STATUS file.

	* rivet/packages/commserver/commserver.tcl: Added commserver
	package as one potential IPC method.

	* src/make.tcl: Target ../VERSION node correctly.
	New target $PKGINDEX to automatically generate a top-level (which
	is where Tcl searches) package index for all the sub-packages in
	the Rivet distribution.

	* src/buildscripts/aardvark.tcl (aardvark::runbuildcommand): A few
	stylistic changes: [ cmd ] -> [cmd].

2003-05-13  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Added a few options - numeric and add to the
	header documentation.  Removed 'setcookie', which has been
	replaced by the 'cookie' command.

	* src/make.tcl: Pass [info nameofexecutable] to mod_rivet.c
	compilation, in order to make Rivet aware of the location of
	tclsh.

	* src/mod_rivet.c (Rivet_InitTclStuff): Use name of tclsh
	executable passed in via the build script.  This isn't really the
	name of the executable Rivet is part of (Apache), but I think this
	is more useful.

2003-05-11  David N. Welton  <davidw@dedasys.com>

	* src/apache_request.c: Updated to the latest from the httpd-apreq
	package.

2003-04-07  David N. Welton  <davidw@dedasys.com>

	* src/make.tcl: Make sure that auto_path gets extra stuff at the
 	  beginning, so as not to create problems when using it to fetch
	  the prefix.

	* VERSION: Bump point number for new release.

	* src/make.tcl: Use package require to load aardvark.

	* src/buildscripts/graph.tcl: This file should provide the
	  'struct' package.

2003-03-30  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Fixed example configuration directive.

2003-03-27  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c (TclWeb_UploadData): Comment out unused alloc.

	* src/rivetWWW.c (Rivet_UnescapeStringCmd): Free memory allocated
	with Tcl_Alloc.
	(Rivet_EscapeStringCmd): Free memory allocated with Tcl_Alloc.
	(Rivet_EscapeSgmlCharsCmd): Free memory allocated with Tcl_Alloc.
	(Rivet_EscapeShellCommandCmd): Free memory allocated with Tcl_Alloc.

	* src/rivetCrypt.c (Rivet_DecryptCmd): Free memory allocated with
	Tcl_Alloc.
	(Rivet_EncryptCmd): Free memory allocated with Tcl_Alloc.

2003-03-26  David N. Welton  <davidw@dedasys.com>

	* Remove index.html and help.html.

	* rivet/pkgIndex.tcl: Added index file for RivetTcl package -
	i.e. init.tcl.

2003-03-25  David N. Welton  <davidw@dedasys.com>

	* src/rivetPkgInit.c (Rivet_Init): Bump version number to 1.1.

	* src/mod_rivet.c (Rivet_InitTclStuff): Use Tcl_PkgRequire to load
	Rivet's init.tcl.

	* src/make.tcl: Use Tcl file location instead of Apache-based file
	location, in order to use Tcl_PkgRequire to load Rivet's init.tcl.

	* rivet/init.tcl: Provide 'RivetTcl' package.
	(init): Use [info script] instead of server(RIVET_DIR) variable.

	* src/make.tcl: Add a debinstall target as a temporary way to
	build .deb files.

	* debian/copyright: Added copyright file for debian.

	* debian/dirs: Added dirs file that lists directories used by
	Rivet on Debian.

	* debian/control: Added debian/control file with information about
	Rivet for the debian package.

	* debian/changelog: Added debian changelog file to track versions
	of the debian package.

	* debian/rules: Use 'rules' file from mod_dtcl.

2003-03-14  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_AppendToScript): Don't append
	Before/After/Error scripts.  Just override them.
	(Rivet_UserConf): Switch back to using Rivet_AppendToScript.
	(Rivet_SetScript): Change Rivet_AppendToScript to Rivet_SetScript
	to reflect the fact that it doesn't always append - specifically,
	in After/Before/Error scripts.

	* doc/rivet.xml: Use eyebrowse link instead of apachelabs for
	mailing list.

2003-03-13  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.h: Backed out extra entries in rivet_server_conf -
	they aren't necessary, as the overrides are taken care of for us.
	The only things we really need are 1) to use the flag
	user_scripts_updated to recompile scripts when UserConf variables
	have changed 2) to not append to existing scripts, but instead
	create new ones.

2003-03-12  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_UserConf): Set user_scripts_updated flag.
	(Rivet_ParseExecFile): Check and clear flag.

	* src/mod_rivet.h: Added user_scripts_updated flag to signal that
	UserConf options have been set.  This means that we need to
	recompile the script.

2003-03-01  David N. Welton  <davidw@dedasys.com>

	* debian/debian.tcl: Helper file for generating .debs.

2003-02-28  David N. Welton  <davidw@dedasys.com>

	* src/Makefile (all): Clean out Makefile - force use of make.tcl.

	* src/buildscripts/aardvark.tcl (aardvark::runbuildcommand): Use
	'w' for shell command pipe, in order to not get broken pipes with
	commands that output something to stdout (such as tcl scripts!).

2003-02-21  David N. Welton  <davidw@dedasys.com>

	* tests/config.test: Test to see if Rivet picks up changes in
	".htaccess" files.

	* tests/README: Add descriptions of the various tests.

	* src/buildscripts/aardvark.tcl (aardvark::Nodes): Add command to
	return list of all nodes.

	* doc/rivet.xml: Add some information on the precedence of the
	different Conf options.  Change information about DirConf - it
	isn't allowed in .htaccess files.

2003-02-19  David N. Welton  <davidw@dedasys.com>

	* src/buildscripts/aardvark.test: Add test script and files for
	aardvark system.

	* src/buildscripts/graph.tcl: Include latest 'graph.tcl' from
	upstream.

	* src/make.tcl: We no longer force 'tcl' and 'sh' to take only one
	argument.  In the case where we aren't forcing evaluation later
	with {}, this is nicer looking, as we don't have to quote
	everything with "".

2003-02-12  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c: Mirror Craig Huckabee's mod_dtcl.c changes:

	- Use TCL_DECLARE_MUTEX to create the mutex, and change the mutex
	  lock/unlock calls.

	- Remove the 'load only once' stuff from TclInitStuff.

	- InitTclStuff can now only be called from Child Init.

2003-01-17  David N. Welton  <davidw@dedasys.com>

	* Added logos.

2003-01-08  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_ChildInit): Patch from Karl Lehenbauer to
	print out errorInfo upon ChildInit failure.

2003-01-07  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c (TclWeb_UploadData): Fix from Holger Zeinert
	that makes file uploads work on windows.

2002-12-30  David N. Welton  <davidw@dedasys.com>

	* doc/examples/upload.html: Changed .ttml to .rvt - thanks to
	Holger Zeinert for catching this.

2002-12-18  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Noted the var_qs/var_post changes in the
	documentation.

2002-12-17  David N. Welton  <davidw@dedasys.com>

	* tests/post.test:
	* tests/post.rvt:
	* tests/get.test:
	* tests/get.rvt: Added tests for David Brancato's var_qs and
	var_post improvements.

	* src/TclWebapache.c: Made "ugly" for loops into while loops.
	Created macro to set up loop parameters correctly.

2002-12-14  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c: Redid indendation.

	* src/rivetCore.c: Implemented Tcl commands (via objv[0]) to
	retrieve variables from different, specified sources (query
	string, POST). (David Brancato).

	* src/mod_rivet.h: Added defines for variable sources. (David
	Brancato).

	* src/apache_request.c: Added functions to get query and post
	params. (David Brancato).

	* src/TclWebapache.c: Implemented TclWeb.h API change. (David
	Brancato).

	* src/TclWeb.h: Changed API to include a source option in order to
	indicate the origin (query string, POST) of a variable.  (David
	Brancato).

2002-12-13  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_InitTclStuff): Apache actually loads all
	the modules twice, just to see if it  can. This is a pain,
	because things don't seem to get  completely cleaned up on the
	Tcl side. So this little hack  should make us *really* load only
	the second time around.

2002-12-10  David N. Welton  <davidw@dedasys.com>

	* table.png: Transformed table.png so that it ought to display
	correctly on older(?) browsers.  Thanks to Elchonon Edelson for
	his help.

2002-12-09  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_SendContent): Switched from EvalObj to
	EvalObjEx.
	(Rivet_SendContent): EXPERIMENTAL: added Mutex locks on
	SendContent, in order to keep windows safe.  This needs testing
	out!

2002-12-04  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c (TclWeb_GetEnvVars): Put DecrRefCount back in
	- must have taken it out by mistake while hunting a previous
	memory leak.

2002-11-23  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_SendContent): Set up information for
	[info script] by using r->filename.

2002-11-19  David N. Welton  <davidw@dedasys.com>

	* doc/examples/table.rvt: Fixed up format operation to make nicer
	tables.

2002-11-18  David N. Welton  <davidw@dedasys.com>

	* cvsversion.tcl (main): Added catch to make sure that VERSION has
	something in it and isn't.

2002-11-09  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Make docs reflect behavior of 'var get foobar'
	when foobar doesn't exist - "" is returned.

	* tests/apachetest/apachetest.tcl: Updates to testing utility
	procedures.

2002-11-04  David N. Welton  <davidw@dedasys.com>

	* tests/get.test: Backed out changes to 'var get': no longer
	throws an error if the variable does not exist, but instead
	returns "".  Use 'var exists' to see if it really exists or not.

	* src/mod_rivet.c (Rivet_ChildExit): Add call to Tcl_Finalize.
	This still needs more investigation.

	* tests/upload.test: Added proper end boundary to upload test.

	* src/apache_*: New apache request code from upstream.

2002-10-29  David N. Welton  <davidw@dedasys.com>

	* src/rivetWWW.c (Rivet_EscapeStringCmd): Eliminate warning on
	Solaris by casting a char to an int.

2002-10-28  David N. Welton  <davidw@dedasys.com>

	* src/rivetCore.c (Rivet_Include): Changed Tcl_Channel name to
	tclstdout to avoid any conflicts with the real stdout.

2002-10-23  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xsl: Use <pre> tag for source code examples.

2002-10-22  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c (TclWeb_StringToUtf): One more CONST84 - now
	we pass the tests!

2002-10-21  David N. Welton  <davidw@dedasys.com>

	* src/*.c: "CONST"ification.  See http://mini.net/tcl/3669 for
	more information.

	* src/: Minor build script updates.

2002-10-20  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: "make" needed to be "make.tcl".  Thanks to Makoto
	SATOH.

2002-10-18  David N. Welton  <davidw@dedasys.com>

	* tests/get.test: Added tests for new "var get" behavior.

	* doc/rivet.xml: Documented new "var get" behavior.

	* src/rivetCore.c (Rivet_Var): Added ?default? option to "var
	get".

	* doc/examples/: Added examples for XML document.

	* doc/rivet.xml: Several examples of how to use Rivet.

2002-10-17  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Added Entities to deal with included files.  This
	makes it easier to correctly format the source code that is to be
	included.

2002-10-09  David N. Welton  <davidw@dedasys.com>

	* src/buildscripts/findapxs.tcl: Added /usr/sbin/ at the request
	of David Brancato, who notes that Redhat often locates apxs there.

2002-10-02  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Added 'Introduction' section.

2002-09-29  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Reworked several elements to better utilize
	docbook.

	* doc/rivet.xsl: Major reworking of several elements, including
	group and arg.  Added lots of style changes.

	* src/make.tcl: Add commands and dependencies to build extensions
	documents without chunks, and the main Rivet docs in chunks
	(seperate HTML files are output).

	* doc/rivet.xml: Updated docs to reflect new Apache directives.

2002-09-27  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_InitTclStuff): Change default CacheSize
	to MaxRequestsPerChild / 5, which should still be plenty, but will
	waste less space.

	* src/rivetCore.c (Rivet_Include): "include" command now saves
	channel encoding/translation, outputs the included file to stdout
	with binary translation/encoding, and then resets the original
	settings.  Fixes problem with EUC-JP characters in included
	files.  Thanks to Makoto SATOH for his help in finding this.

	* tests/lang.test: Added file to test LANG setting in server, to
	check character encodings.

	* tests/parse.test: Added EUC-JP characters to test that they come
	through ok.

	* tests/include.test: Added EUC-JP characters to test that they come
	through ok.

2002-09-11  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c (TclWeb_InitEnvVars): Don't do an
	ap_clear_table on the environmental variables.  The include module
	no longer does this, and neither does PHP, so I guess it's safe to
	remove, and it's useful for users of modules like mod_uniqe_id.

2002-09-08  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c: Fix up ObjSetVar2 use.

	* src/mod_rivet.c: Fix up another instance of ObjSetVar2.

2002-09-07  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_PropagatePerDirConfArrays): Do the right
	tricks with IncrRefCount and DecrRefCount to stop the leak.

2002-08-03  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_AppendToScript): Changed before, after,
	and error scripts back to plain old ascii, in order to plug a
	memory leak.

	* src/mod_rivet.h: New macro: FILEDEBUGINFO off by default.
	Useful for debugging the order of functions called.

2002-07-28  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xsl: Updated rivet.xsl from Websh's xsl.

2002-07-21  David N. Welton  <davidw@dedasys.com>

	* doc/rivet.xml: Several new sections.  We now have most of what
	is in the HTML documents.

2002-07-19  David N. Welton  <davidw@dedasys.com>

	* src/buildscripts/aardvark.tcl (aardvark::runbuildcommand):
	Attempt to use 'open' to execute shell commands, in order to both
	catch the output as well as the return code.

	* doc/rivet.xml: New file.  Removed directives.xml in favor of
	this, which we will use to build individual HTML files and other
	forms of documentation.

2002-07-18  David N. Welton  <davidw@dedasys.com>

	* src/rivetCore.c (Rivet_Upload): Changed format of 'upload'
	command to be more like 'var'.  Changed relevant tests.

2002-07-14  David N. Welton  <davidw@dedasys.com>

	* doc/directives.xml: New file - XML version of directives.html.

2002-07-12  David N. Welton  <davidw@dedasys.com>

	* src/buildscripts/aardvark.tcl (aardvark::runbuildcommand):
	Updated functionality to hopefully better handle errors, warnings,
	and output.

	* src/make.tcl: Created a 'dist' target which rolls a tarball.

2002-07-11  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c (TclWeb_GetHeaderVars): New function to get
	client headers, which are now seperate from environmental
	variables.

2002-06-18  David N. Welton  <davidw@dedasys.com>

	* cvsversion.tcl: Added tool to manage version numbers based on
	CVS changes.

2002-06-17  David N. Welton  <davidw@dedasys.com>

	* src/make.tcl: Updated build scripts to build the HTML
	documentation from XML files.

	* src/buildscripts/aardvark.tcl: Changed commands to 'sh' for
	shell commands and 'tcl' for Tcl commands.

2002-06-10  David N. Welton  <davidw@dedasys.com>

	* doc/packages/dio/dio.xml: Further updates.

2002-06-08  David N. Welton  <davidw@dedasys.com>

	* doc/packages/dio/dio.xml: Finished up adding material to
	dio.xml.

2002-06-06  David N. Welton  <davidw@dedasys.com>

	* doc/packages/dio/dio.xml: Initial commit of (incomplete) docbook
	documentation.

	* doc/packages/dio/rivet.xsl: Added XSL file for docbook
	documentation.

2002-05-03  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c (TclWeb_GetVarAsList): Added check to length
	to make sure we fully compare the two variables.  Idem for
	TclWeb_VarExists.

2002-04-19  Damon J. Courtney <damon@unreality.com>
	* src/TclWebapache.c
	    Added 'TclWeb_GetVirtualFile' command which returns the full
	    path to a virtual file.

	* src/rivetCore.c
	    Added command 'virtual_filename' to return the full path to a
	    virtual file.

	    Added -virtual option to include and parse commands to enable
	    them to parse a virtual file which is relative to the webserver.

2002-03-26  Damon J. Courtney <damon@unreality.com>

	* rivet/packages/form
	    Added a new package for handling forms in Rivet.

2002-03-26  Damon J. Courtney <damon@unreality.com>

	* src/TclWebapache.c
	    Moved the setting of include variables from LoadEnv to the
	    InitEnv command.  This will allow us to retrieve these variables
	    via the env command as well as load_env.

2002-03-21  Damon J. Courtney <damon@unreality.com>

	* src/TclWebapache.c
	* src/TclWeb.h
	    Added new command 'TclWeb_HeaderAdd'.

	* src/rivetCore.c
	    Added 'add' option to headers command to add a header instead
	    of just setting over one.

	* rivet/rivet-tcl/cookie.tcl
	    The cookie command adds a header instead of setting one.  This
	    allows multiple cookies in a single page.

2002-03-21  Damon J. Courtney <damon@unreality.com>

	* src/TclWebapache.c
	    If the header being set is Set-Cookie, we add it to the table
	    instead of overwriting it.  This allows us to set more than
	    one cookie per page, which is legal to all browsers.

2002-03-19  Damon J. Courtney <damon@unreality.com>

	* rivet/init.tcl
	    Appended packages-local to the auto_path.  This will be a great
	    place for people to place local packages that we won't mess with.

2002-03-18  David N. Welton  <davidw@dedasys.com>

	* tests/apachetest/apachetest.tcl: Added TclX to requirements.
	Damn.

2002-03-16  David N. Welton  <davidw@dedasys.com>

	* tests/runtests.tcl: Updated to run with apachetest, eliminating
	makeconf.tcl, and moving template.conf.tcl to the apachetest
	directory.

	* tests/apachetest/apachetest.tcl: New file, grouping together
	the test functions in one place, and in a namespace.

2002-03-15  David N. Welton  <davidw@dedasys.com>

	* tests/config.test: Added some new, automatically generated
	tests.

	* src/mod_rivet.c (Rivet_MergeDirConfigVars): Make sure that both
	arguments to overlay_tables exist!

	* src/mod_rivet.h: Add a default error script.

	* src/TclWebapache.c (TclWeb_GetEnvVars): DecrRef for the name of
	the environment variable.

	* rivet/rivet-tcl/cookie.tcl (make_cookie_attributes): Add an
	interface to add the 'expire' field directly.
	(cookie): "Set-Cookie" is uppercase for both words.

2002-03-15  Damon J. Courtney <damon@unreality.com>

	* src/apache_cookie.c
	* src/apache_cookie.h
	    Removed in favor of doing cookies through a Tcl interface.

	* src/channel.c
	* src/channel.h
	    Renamed to rivetChannel.c and rivetChannel.h

	* src/rivetCore.c
	* src/TclWebapache.c
	    Removed references to Apache cookie functions.

2002-03-14  Damon J. Courtney <damon@unreality.com>

	* src/TclWebapache.c
	    Added a routine to setup the environment variables and mark
	    that they have been set.  This will save us from having to
	    reload them all the time.  Once they're loaded, they don't
	    load again.

	* rivet/rivet-tcl/cookie.tcl
	    Added a new 'cookie' command for setting and getting cookies.

	* rivet/rivet-tcl/import_keyvalue_pairs.tcl
	    Added a command to import keyvalue pairs from arguments.

	* rivet/rivet-tcl/load_cookies.tcl
	    Made load_cookies use the env command to get the one variable
	    it needs instead of load_env, which gets a bunch it doesn't
	    need.

	* rivet/rivet-tcl/debug.tcl
	    Made debug use the env and import_keyvalue_pairs commands.

2002-03-13  Damon J. Courtney <damon@unreality.com>

	* src/mod_rivet.c
	    Cleaned up the error handling a little.  There was a really nasty
	    bug that if the ErrorScript was defined, it wouldn't actually
	    error out.  This had something to do with the header output and
	    flush being before the ErrorScript was executed.

	* rivet/init.tcl
	    Changed the default error handler to a Tcl proc.

2002-03-13  Damon J. Courtney <damon@unreality.com>
	* src/make.tcl
	* src/TclWebapache.c
	    Cleaned up the remainder of the compiler warnings.
	    Rivet should build cleanly without warnings now.

2002-03-13  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (Rivet_PropagatePerDirConfArrays): Clean up
	arrayName object after we're done with it.

	* src/TclWebapache.c (TclWeb_GetVar): Make sure to compare all of
	the variable key.

	* src/mod_rivet.c (Rivet_InitTclStuff): Moved creation of "rivet"
	AssocData here.

2002-03-12  Damon J. Courtney <damon@unreality.com>

	* src/mod_rivet.c
	* src/mod_rivet.h
	* src/rivetParser.c
	* src/rivetCore.c
	* src/TclWebapache.c
	    Cleaned up a lot of memory leaks.  Still working on finding more.

2002-03-12  David N. Welton  <davidw@dedasys.com>

	* tests/makeurl.test: New test.

	* src/TclWebapache.c (TclWeb_MakeURL): Use Tcl_SetStringObj
	instead of creating a new object.

	* src/rivetCore.c (Rivet_MakeURL): Pass already created object to
	TclWeb_MakeURL.

2002-03-11  Damon J. Courtney <damon@unreality.com>

	* src/TclWeb.h
	    Added declaration for TclWeb_GetEnvVar.

	* src/TclWebapache.c
	    Added command TclWeb_GetEnvVar.  Gets a single environment
	    variable.

	* src/mod_rivet.c
	    Added some extra stuff to the default error functions.
	    If the error_script fails, we output the failure.

	* src/rivetCore.c
	    Added Tcl 'env' command to get a single environment variable.

	* src/make.tcl
	* src/buildscripts/aardvark.tcl
	* src/buildscripts/graph.tcl
	    Cleaning up a bug with the struct package.

2002-03-10  Damon J. Courtney <damon@unreality.com>

	* src/mod_rivet.c
	    The Scripts output to the UserConf arrays now properly display
	    the scripts in their entirety.

	    Cleaned up the handling of directory configuration merging.

	    Fixed a bug where Rivet_GetRivetFile was stomping the BeforeScript.

2002-02-23  David N. Welton  <davidw@dedasys.com>

	* tests/upload.test: Added upload test.

	* src/TclWebapache.c: Added functions: TclWeb_PrepareUpload,
	TclWeb_UploadChannel, TclWeb_UploadSave, TclWeb_UploadData,
	TclWeb_UploadSize, TclWeb_UploadType, TclWeb_UploadFilename,
	TclWeb_UploadNames.

	* src/rivetCore.c (Rivet_Upload): Offloaded functionality to
	TclWebApache.c.

2002-02-17  Damon J. Courtney <damon@unreality.com>

	* src/make.tcl
	    Added a script to look around a little more for Apache's apxs tool.
	    If we can't find it, we output an error message to the user.

	* src/buildscripts/findapxs.tcl
	    Added to repository.

2002-02-12  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c: Added some INLINE's.

	* src/mod_rivet.c (Rivet_ParseExecFile): Tweaking of parameters to
	enable the modification stated below.

	* src/rivetCore.c (Rivet_Parse): Removed 'rsc' from this
	function.

2002-02-07  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c (TclWebMakeURL): New command, extracted out
	of rivetCore.c.

2002-02-01  David N. Welton  <davidw@dedasys.com>

	* src/rivetCore.c: Deleted rivet_info command.

	* src/TclWebapache.c (TclWeb_GetEnvVars): Added RIVET_CACHE_FREE
	# and RIVET_CACHE_SIZE as environmental variables.

2002-01-29  David N. Welton  <davidw@dedasys.com>

	* doc/help.html: Updated mailing list archive location.

2002-01-28  David N. Welton  <davidw@dedasys.com>

	* src/rivetCore.c (Rivet_Include): Get channel via Tcl_GetChannel
	instead of through the apache config structure.

2002-01-27  David N. Welton  <davidw@dedasys.com>

	* tests/parse.test: Added test for 'parse' command.

	* src/mod_rivet.c (Rivet_ParseExecFile): Moved the addition of
	before and after scripts to this file, so that GetRivetFile is
	independant of any Apache specific code.

	* src/rivetParser.c, src/rivetParser.h: New files, which replace
	parser.c and parser.h.
	(Rivet_GetRivetFile): Moved from mod_rivet.c.  Now capable of
	operating independantly of mod_rivet.  Use Tcl file functions
	instead of Apache functions.
	(Rivet_Parser): Parser now operates on a Tcl_Obj input buffer.

	* src/mod_rivet.h: Moved content_sent to TclWebRequest in TclWeb.h

2002-01-26  David N. Welton  <davidw@dedasys.com>

	* tests/binary.test: Added test file for binary file handling.

	* src/mod_rivet.c (Rivet_SendContent): Moved 'header_only' option
	so that the request is set up and we don't segfault.
	(Rivet_GetRivetFile): changed puts to puts -nonewline, so as to
	not add spurious newlines.

	* src/rivetCore.c (Rivet_Include): Simplified code some, with '-1'
	argument to Tcl_ReadChars.  Eliminated "lf" -translation option.

2002-01-24  David N. Welton  <davidw@dedasys.com>

	* tests/include.test: Added test for 'include' command.

2002-01-22  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c, src/channel.c, src/rivetCore.c: Switched to
	TclWeb functions for error, headers.

	* src/mod_rivet.h: Moved headers_set and headers_printed out of
	the rivet_server_conf struct and into the TclWebRequest struct.

	* src/TclWebapache.c: Moved PrintHeaders, PrintError and
	SetHeaderType from mod_rivet.c.

	* src/TclWeb.h: Added ER1, ER2 and DEFAULT_HEADER_TYPE here.

	* tests/get.test: Added some tests related to [var *].

	* tests/post.test: Added some tests related to [var *].

	* src/rivetList.c (Rivet_LassignArrayObjCmd): Use -1 instead of
	NULL when doing NewStringObj.

	* src/rivetCrypt.c: Added header file.

	* src/make.tcl: Added slightly nicer apxs handling.

	* src/mod_rivet.c: Moved StringToUtf to TclWeb.

	* src/mod_rivet.h: Removed StringToUtf macro.

	* src/TclWebapache.c: Lots of bug fixes and corrections.

	* src/rivetCore.c (Rivet_LoadEnv): Switched to TclWeb API.
	(Rivet_LoadCookies): Switched to TclWeb API.
	(Rivet_Var): Switched to TclWeb API.

2002-01-19  Damon J. Courtney <damon@unreality.com>

	* src/rivetCore.c
	    Moved authorization from its own array into the env array as
	    HTTP_USER and HTTP_PASS.

	    Added an abort_page command which halts the sending of a request.

2002-01-19  David N. Welton  <davidw@dedasys.com>

	* src/TclWebapache.c: Added individual functions for CGI variable
	access.  Much simpler than trying to devise a data structure to
	pass them around with.

	* src/rivetCore.c (Rivet_LoadEnv): Roll back authorization
	information command.

2002-01-18  David N. Welton  <davidw@dedasys.com>

	* src/rivetCore.c (Rivet_LoadAuth): New command to load
	authorization information in its own array.

	* src/TclWebcgi.c: New file for stand-alone implementations of
	common web API.

	* src/TclWebapache.c: New file for apache-based implementations of
	web API.

	* src/TclWeb.c: Common code for TclWeb API.

	* src/TclWeb.h: TclWeb web interaction API.

2002-01-11  Damon J. Courtney <damon@unreality.com>

	* src/make.tcl
	    Updated some of the make nodes.

	    librivet.so now gets copied into the rivet package directory.


	* src/mod_rivet.c
	    Changed Rivet_Init to Rivet_InitCore to fix bug.

	    All Script directives now append to each other instead of
	    overwriting the last directive.  Directory directives still
	    override in standard fashion though.

	* rivet/packages/rivet
	    Added as the default package of Rivet commands in C.

2002-01-10  Damon J. Courtney <damon@unreality.com>
	* src/rivet.h
	    Added macro 'TCL_CMD_HEADER'.  Prints the default command header
	    for Tcl commands in Rivet.

	    Added macro 'TCL_OBJ_CMD'.  Prints the default object command
	    creation for Tcl commands in Rivet.

	* src/rivetInit.c
	    Renamed to rivetPkgInit.c

	* src/rivetCrypt.c
	    Added.  Contains commands for encryption and decryption.
		encrypt
		decrypt
		crypt

	* src/rivetWWW.c
	    Added.  Contains commands for the world wide web.
		escape_string
		unescape_string
		escape_sgml_chars
		escape_shell_command

	* src/rivetList.c
	    Added the following commands:
		comma_split
		comma_join
		lassign_array

	* src/make.tcl
	    Moved all of the Rivet Tcl commands into their own library
	    called librivet.  This will be automatically loaded into Rivet
	    as the default configuration.  Anyone who wants can take it
	    out if they choose.

2002-01-10  David N. Welton  <davidw@dedasys.com>

	* tests/template.conf.tcl: Re-add srm.conf and access.conf - if
	they aren't present, it tries to grab the ones from /etc/ - not
	what we want.

2002-01-09  Damon J. Courtney <damon@unreality.com>
	* src/tcl_commands.c
	    Renamed to rivetCore.c

	* src/tcl_commands.h
	    Removed.

	* src/rivet.h
	    Added as the default header file for Rivet Tcl commands.

	* src/rivetList.c
	    Added.  Only contains 'lremove' right now.

	* src/rivetInit.c
	    Added.  Contains the Tcl initialization routine for Rivet's Tcl
	    commands.

	* src/make.tcl
	    Added rivetCore.c, rivetList.c and rivetInit.c to the make.

2002-01-08  Damon J. Courtney <damon@unreality.com>
	* src/mod_rivet.h
	    Added RIVET_NEW_CONF macro to create a new rivet_server_conf.

	* src/mod_rivet.c
	    Added Rivet_MergeDirConfig to merge directory configurations.

	    Fixed bug where RivetDirConf was giving erroneous information.

2002-01-08  Damon J. Courtney <damon@unreality.com>

	* tests/makeconf.tcl
	    Went ahead and copied over the entire rivet directory.

	* tests/rivet.test
	    Changed the default port to 8081.

	* tests/template.conf.tcl
	    Changed the default port to 8081.
	    Removed access.conf and srm.conf.

2002-01-08  David N. Welton  <davidw@dedasys.com>

	* tests/makeconf.tcl (makeconf): Added a command to copy over the
	    init.tcl file to the testing directory.  It would probably be
	    best to copy the whole directory, though.

2002-01-08  Damon J. Courtney <damon@unreality.com>

	* src/channel.c
	    Just a text change.

	* src/make.tcl
	    Added a command to install that will copy the contents of the
	    rivet/ directory into Apache's install location.

	* src/mod_rivet.h
	    Removed some superfluous code and deprecated options.

	* src/mod_rivet.c
	    Finished renaming the rest of the remaining commands into the
	    standard Rivet_ naming scheme.  This will prevent any further
	    interferance with other modules.

	    Renamed namespacePrologue to request_init and re-coded the
	    namespace initialization code in Tcl.

	    Removed leftover references to the ::request::UPLOAD array.

	    Added an array called 'server' to the global namespace which
	    briefly contains important information about Apache and Rivet.

	    Propagated RivetServerConf, RivetDirConf and RivetUserConf arrays
	    at the tcl level.

	    Gave RivetUserConf the ability to set BeforeScript, AfterScript
	    and ErrorScript.

	* src/tcl_commands.c
	    Updated makeurl to use Tcl objects instead of the old Tcl_SetResult
	    command.

	* rivet/
	    Added a rivet/ directory of Tcl code.

	    Added init.tcl to rivet/.  This file contains initialization code
	    in a ::Rivet namespace that is called when the server starts up.

	* rivet/init.tcl
	    Added a command for cleanup after each request.  It currently
	    does nothing but could come in handy later.

	* rivet/packages
	    Created a rivet/packages directory for future Rivet packages.

	* rivet/rivet-tcl
	    Created a rivet/rivet-tcl directory containing a few procs.

	* rivet/rivet-tcl/load_response.tcl
	    Added 'load_response' command to rivet-tcl/.

	* rivet/rivet-tcl/parray.tcl
	    Added 'parray' command to rivet-tcl/.

2002-01-07  David N. Welton  <davidw@dedasys.com>

	* General: Renamed some more commands so that Rivet may be run
	alongside mod_dtcl.

	* src/mod_rivet.c (get_parse_exec_file): Oops - change httpd-tcl
	to httpd-rivet in strcmp.

2002-01-06  David N. Welton  <davidw@dedasys.com>

	* Documentation: Big cleanup, updating everything from mod_dtcl.

	* General: Changed .ttml to .rvt.  Also changed mime type to
	x-httpd-rivet.  Changed all references in documentation to .rvt
	from .ttml.

2002-01-05  David N. Welton  <davidw@dedasys.com>

	* src/parser.c (Rivet_Parser): A few, mostly cosmetic, cleanups in
	the parser.

	* src/make.tcl: Add nodes for testing library.

	* src/channel.c (outputproc): Change printheaders to
	Rivet_PrintHeaders.

	* General: whitespace cleanups.

2001-11-21  David N. Welton  <davidw@dedasys.com>

	* src/channel.c: Almost all output is based on the ApacheChan
	channel, and uses Tcl's buffering, flushing, etc...

	* tests/rivet.test: Updated testing scheme to work with lots of
	test files/ttml files.

2001-11-21  Damon J. Courtney <damon@unreality.com>

	* src/mod_rivet.c
	    Renamed more commands into the Rivet_ naming scheme.

2001-11-20  Damon J. Courtney <damon@unreality.com>

	* src/tcl_commands.c
	    load_env and load_cookies now accept an optional argument of
	    ?arrayName?.
	* src/tcl_commands.c
	    Renamed a lot of the commands into a standard naming scheme.

2001-11-20  Damon J. Courtney <damon@unreality.com>

	* src/tcl_commands.c
	    Cleaned up some more code.  Just textual changes.
	* src/mod_rivet.c
	    Cleaned up some run-over lines and code.
	* src/mod_rivet.c
	    Changed module signature from "mod_rivet" to "Rivet"
	* src/tcl_commands.c
	    Changed hgetvars command to load_env command.
	* src/tcl_command.c
	    Moved loading of cookies to load_cookies command.
	* src/tcl_command.c
	    Renamed default load_env array from ENVS array to env.
	* src/tcl_command.c
	    Renamed default load_cookies array from COOKIES to cookies.

2001-11-08  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (rivet_child_init): Fix loop, pass correct
	parameter to RIVET_SERVER_CONF.

2001-10-19  David N. Welton  <davidw@dedasys.com>

	* src/mod_rivet.c (get_parse_exec_file): Fixed up problems with
	Parse command.

2001-09-30  David N. Welton  <davidw@dedasys.com>

	* src/parser.c (rivet_parser): Quote { and } to avoid problems.

2001-09-23  David N. Welton  <davidw@dedasys.com>

	* Initial commit and cleanup of old mod_dtcl code.
