You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rivet-dev@tcl.apache.org by mx...@apache.org on 2010/07/20 21:48:20 UTC

svn commit: r965972 [2/2] - in /tcl/rivet/trunk/doc: examples/rivet_web_service.tcl html/rivet.html

Modified: tcl/rivet/trunk/doc/html/rivet.html
URL: http://svn.apache.org/viewvc/tcl/rivet/trunk/doc/html/rivet.html?rev=965972&r1=965971&r2=965972&view=diff
==============================================================================
--- tcl/rivet/trunk/doc/html/rivet.html (original)
+++ tcl/rivet/trunk/doc/html/rivet.html Tue Jul 20 19:48:20 2010
@@ -1,14 +1,9 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Apache Rivet</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" title="Apache Rivet"><div class="titlepage"><div><div><h2 class="title"><a name="id517858"></a>Apache Rivet</h2></div><div><div class="author"><h3 class="author"><span class="firstname">The Rivet Team</span></h3><div class="affiliation"><span class="orgname">The Apache Software Foundation<br></span><div class="address"><p><br>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Apache Rivet</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" title="Apache Rivet"><div class="titlepage"><div><div><h2 class="title"><a name="id360123"></a>Apache Rivet</h2></div><div><div class="author"><h3 class="author"><span class="firstname">The Rivet Team</span></h3><div class="affiliation"><span class="orgname">The Apache Software Foundation<br></span><div class="address"><p><br>
 	  <code class="email">&lt;<a class="email" href="mailto:rivet-dev@tcl.apache.org">rivet-dev@tcl.apache.org</a>&gt;</code><br>
 	</p></div></div></div></div><div><p class="copyright">Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apache Software Foundation</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#introduction">Introduction to Apache Rivet</a></span></dt><dt><span class="section"><a href="#installation">Apache Rivet Installation</a></span></dt><dt><span class="section"><a href="#directives">Rivet Apache Directives</a></span></dt><dt><span class="section"><a href="#commands">Rivet Tcl Commands and Variables</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="#var">var</a></span><span class="refpurpose"> &#8212; get the value of a form variable.</span></dt><dt><span class="refentrytitle"><a href="#upload">upload</a></span><span class="refpurpose"> &#8212; handle a file uploaded by a client.</span></dt><dt><span class="refentrytitle"><a href="#load_response">load_response</a></span><span class="refpurpo
 se"> &#8212; load form variables into an array.</span></dt><dt><span class="refentrytitle"><a href="#load_headers">load_headers</a></span><span class="refpurpose"> &#8212; get client request's headers.</span></dt><dt><span class="refentrytitle"><a href="#load_cookies">load_cookies</a></span><span class="refpurpose"> &#8212; get any cookie variables sent by the client.</span></dt><dt><span class="refentrytitle"><a href="#load_env">load_env</a></span><span class="refpurpose"> &#8212; get the request's environment variables.</span></dt><dt><span class="refentrytitle"><a href="#env">env</a></span><span class="refpurpose"> &#8212; Loads a single
 	"environmental variable" into a Tcl variable.</span></dt><dt><span class="refentrytitle"><a href="#include">include</a></span><span class="refpurpose"> &#8212; includes a file into the output stream without modification.</span></dt><dt><span class="refentrytitle"><a href="#parse">parse</a></span><span class="refpurpose"> &#8212; parses a Rivet template file.</span></dt><dt><span class="refentrytitle"><a href="#headers">headers</a></span><span class="refpurpose"> &#8212; set and parse HTTP headers.</span></dt><dt><span class="refentrytitle"><a href="#makeurl">makeurl</a></span><span class="refpurpose"> &#8212; construct url's based on hostname, port.</span></dt><dt><span class="refentrytitle"><a href="#cookie">cookie</a></span><span class="refpurpose"> &#8212; get and set cookies.</span></dt><dt><span class="refentrytitle"><a href="#clock_to_rfc">clock_to_rfc850_gmt</a></span><span class="refpurpose"> &#8212; create a rfc850 time from [clock seconds].</span></dt><dt><span cl
 ass="refentrytitle"><a href="#html">html</a></span><span class="refpurpose"> &#8212; construct html tagged text.</span></dt><dt><span class="refentrytitle"><a href="#incr0">incr0</a></span><span class="refpurpose"> &#8212; increment a variable or set it to 1 if nonexistant.</span></dt><dt><span class="refentrytitle"><a href="#parray">parray</a></span><span class="refpurpose"> &#8212; Tcl's <span style="font-family:monospace"><span class="command"><strong>parray</strong></span></span> with html formatting.</span></dt><dt><span class="refentrytitle"><a href="#abort_page">abort_page</a></span><span class="refpurpose"> &#8212; Stops outputing data to web page, similar in
-	  purpose to PHP's <span style="font-family:monospace"><span class="command"><strong>die</strong></span></span> command.</span></dt><dt><span class="refentrytitle"><a href="#no_body">no_body</a></span><span class="refpurpose"> &#8212; Prevents Rivet from sending any content.</span></dt><dt><span class="refentrytitle"><a href="#escape_string">escape_string</a></span><span class="refpurpose"> &#8212; convert a string into escaped characters.</span></dt><dt><span class="refentrytitle"><a href="#escape_sgml_chars">escape_sgml_chars</a></span><span class="refpurpose"> &#8212; escape special SGML characters in a string.</span></dt><dt><span class="refentrytitle"><a href="#escape_shell_command">escape_shell_command</a></span><span class="refpurpose"> &#8212; escape shell metacharacters in a string.</span></dt><dt><span class="refentrytitle"><a href="#unescape_string">unescape_string</a></span><span class="refpurpose"> &#8212; unescape escaped characters in a string.</span></dt><dt
 ><span class="refentrytitle"><a href="#apache_log_error">apache_log_error</a></span><span class="refpurpose"> &#8212; log messages to the Apache error log</span></dt><dt><span class="refentrytitle"><a href="#apache_table">apache_table</a></span><span class="refpurpose"> &#8212; access and manipulate Apache tables in the request structure.</span></dt></dl></dd><dt><span class="section"><a href="#examples">Examples and Usage</a></span></dt><dt><span class="section"><a href="#tcl_packages">Rivet Tcl Packages</a></span></dt><dt><span class="section"><a href="#dio">DIO - Database Interface Objects</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="#dio_package">DIO</a></span><span class="refpurpose"> &#8212; Database Interface Objects</span></dt></dl></dd><dt><span class="section"><a href="#diodisplay">DIODisplay - Database Interface Objects Display Class</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="#diodisplay_package">DIODisplay</a></span><span c
 lass="refpurpose"> &#8212; Database Interface Objects Display Class</span></dt></dl></dd><dt><span class="section"><a href="#session_package">Session Package</a></span></dt><dd><dl><dt><span class="section"><a href="#id572374">Introduction</a></span></dt><dt><span class="section"><a href="#requirements">Requirements</a></span></dt><dt><span class="section"><a href="#id572710">Preparing To Use It</a></span></dt><dt><span class="section"><a href="#id572755">Example Usage</a></span></dt><dt><span class="section"><a href="#id572811">Using Sessions From Your Code</a></span></dt><dt><span class="section"><a href="#id573008">Session Configuration Options</a></span></dt><dt><span class="section"><a href="#id573236">Session Methods</a></span></dt><dt><span class="section"><a href="#id573462">Getting Additional Randomness From The Entropy File</a></span></dt></dl></dd><dt><span class="section"><a href="#form">Form: An HTML Form Fields Generation Utility</a></span></dt><dd><dl><dt><spa
 n class="section"><a href="#id574092">Introduction</a></span></dt><dt><span class="refentrytitle"><a href="#form_package">form</a></span><span class="refpurpose"> &#8212; 
-				<p style="width:90%">
-					The <span style="font-family:monospace"><span class="command"><strong>form</strong></span></span> command creates a form object that can be manipulated
-					to generate HTML forms. 				
-				</p>
-			</span></dt></dl></dd><dt><span class="section"><a href="#calendar_package">Calendar Package</a></span></dt><dd><dl><dt><span class="section"><a href="#id578788">Introduction</a></span></dt><dt><span class="section"><a href="#id578809">Creating a Calendar instance</a></span></dt></dl></dd><dt><span class="section"><a href="#help">Resources - How to Get Help</a></span></dt><dd><dl><dt><span class="section"><a href="#id578858">Mailing Lists</a></span></dt><dt><span class="section"><a href="#id578886">Newsgroup</a></span></dt><dt><span class="section"><a href="#websites">Web Sites</a></span></dt><dt><span class="section"><a href="#id579396">Bug Tracking System</a></span></dt><dt><span class="section"><a href="#id579412">IRC</a></span></dt><dt><span class="section"><a href="#id579423">Editing Rivet Template Files</a></span></dt></dl></dd><dt><span class="section"><a href="#internals">Rivet Internals</a></span></dt><dd><dl><dt><span class="section"><a href="#id579372">Initiali
 zation</a></span></dt><dt><span class="section"><a href="#id579322">RivetChan</a></span></dt><dt><span class="section"><a href="#id579750">The <span style="font-family:monospace"><span class="command"><strong>global</strong></span></span> Command</a></span></dt><dt><span class="section"><a href="#id579795">Page Parsing, Execution and Caching</a></span></dt><dt><span class="section"><a href="#id579837">Debugging Rivet and Apache</a></span></dt></dl></dd><dt><span class="section"><a href="#upgrading">Upgrading from mod_dtcl or NeoWebScript</a></span></dt><dd><dl><dt><span class="section"><a href="#id579971">mod_dtcl</a></span></dt><dt><span class="section"><a href="#id579982">NeoWebScript</a></span></dt></dl></dd></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>1. <a href="#hello%20world">Hello World</a></dt><dt>2. <a href="#id560611">Generate a Table</a></dt><dt>3. <a href="#variable_access">Variable Access</a></dt><dt>4. <a href="#file_upload">F
 ile Upload</a></dt><dt>5. <a href="#file_download">File Download</a></dt><dt>6. <a href="#ajax_xml_messaging">XML Messages and Ajax</a></dt></dl></div><p style="width:90%">
-    Document revision: $Revision: 959685 $, last modified 2010-07-02 02:29:04+02:00$ by $Author: mxmanghi $.
+	  purpose to PHP's <span style="font-family:monospace"><span class="command"><strong>die</strong></span></span> command.</span></dt><dt><span class="refentrytitle"><a href="#no_body">no_body</a></span><span class="refpurpose"> &#8212; Prevents Rivet from sending any content.</span></dt><dt><span class="refentrytitle"><a href="#escape_string">escape_string</a></span><span class="refpurpose"> &#8212; convert a string into escaped characters.</span></dt><dt><span class="refentrytitle"><a href="#escape_sgml_chars">escape_sgml_chars</a></span><span class="refpurpose"> &#8212; escape special SGML characters in a string.</span></dt><dt><span class="refentrytitle"><a href="#escape_shell_command">escape_shell_command</a></span><span class="refpurpose"> &#8212; escape shell metacharacters in a string.</span></dt><dt><span class="refentrytitle"><a href="#unescape_string">unescape_string</a></span><span class="refpurpose"> &#8212; unescape escaped characters in a string.</span></dt><dt
 ><span class="refentrytitle"><a href="#apache_log_error">apache_log_error</a></span><span class="refpurpose"> &#8212; log messages to the Apache error log</span></dt><dt><span class="refentrytitle"><a href="#apache_table">apache_table</a></span><span class="refpurpose"> &#8212; access and manipulate Apache tables in the request structure.</span></dt></dl></dd><dt><span class="section"><a href="#examples">Examples and Usage</a></span></dt><dt><span class="section"><a href="#tcl_packages">Rivet Tcl Packages</a></span></dt><dt><span class="section"><a href="#dio">DIO - Database Interface Objects</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="#dio_package">DIO</a></span><span class="refpurpose"> &#8212; Database Interface Objects</span></dt></dl></dd><dt><span class="section"><a href="#diodisplay">DIODisplay - Database Interface Objects Display Class</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="#diodisplay_package">DIODisplay</a></span><span c
 lass="refpurpose"> &#8212; Database Interface Objects Display Class</span></dt></dl></dd><dt><span class="section"><a href="#session_package">Session Package</a></span></dt><dd><dl><dt><span class="section"><a href="#id381026">Introduction</a></span></dt><dt><span class="section"><a href="#requirements">Requirements</a></span></dt><dt><span class="section"><a href="#id381362">Preparing To Use It</a></span></dt><dt><span class="section"><a href="#id381407">Example Usage</a></span></dt><dt><span class="section"><a href="#id381463">Using Sessions From Your Code</a></span></dt><dt><span class="section"><a href="#id381660">Session Configuration Options</a></span></dt><dt><span class="section"><a href="#id381888">Session Methods</a></span></dt><dt><span class="section"><a href="#id382114">Getting Additional Randomness From The Entropy File</a></span></dt></dl></dd><dt><span class="section"><a href="#form">Form: An HTML Form Fields Generation Utility</a></span></dt><dd><dl><dt><spa
 n class="section"><a href="#id382744">Introduction</a></span></dt><dt><span class="refentrytitle"><a href="#form_package">form</a></span><span class="refpurpose"> &#8212;  a Tcl command object for creating HTML forms</span></dt></dl></dd><dt><span class="section"><a href="#calendar_package">Calendar Package</a></span></dt><dd><dl><dt><span class="section"><a href="#id387514">Introduction</a></span></dt><dt><span class="refentrytitle"><a href="#calendar">Calendar</a></span><span class="refpurpose"> &#8212; Utility class the builds and prints a calendar table</span></dt><dt><span class="refentrytitle"><a href="#xml_calendar">XmlCalendar</a></span><span class="refpurpose"> &#8212; Prints XML formatted calendar tables</span></dt><dt><span class="refentrytitle"><a href="#html_calendar">HtmlCalendar</a></span><span class="refpurpose"> &#8212; Concrete class derived from XmlCalendar</span></dt></dl></dd><dt><span class="section"><a href="#help">Resources - How to Get Help</a></span
 ></dt><dd><dl><dt><span class="section"><a href="#id389501">Mailing Lists</a></span></dt><dt><span class="section"><a href="#id389528">Newsgroup</a></span></dt><dt><span class="section"><a href="#websites">Web Sites</a></span></dt><dt><span class="section"><a href="#id389901">Bug Tracking System</a></span></dt><dt><span class="section"><a href="#id389917">IRC</a></span></dt><dt><span class="section"><a href="#id389928">Editing Rivet Template Files</a></span></dt></dl></dd><dt><span class="section"><a href="#internals">Rivet Internals</a></span></dt><dd><dl><dt><span class="section"><a href="#id389735">Initialization</a></span></dt><dt><span class="section"><a href="#id389686">RivetChan</a></span></dt><dt><span class="section"><a href="#id390255">The <span style="font-family:monospace"><span class="command"><strong>global</strong></span></span> Command</a></span></dt><dt><span class="section"><a href="#id390300">Page Parsing, Execution and Caching</a></span></dt><dt><span cla
 ss="section"><a href="#id390342">Debugging Rivet and Apache</a></span></dt></dl></dd><dt><span class="section"><a href="#upgrading">Upgrading from mod_dtcl or NeoWebScript</a></span></dt><dd><dl><dt><span class="section"><a href="#id390476">mod_dtcl</a></span></dt><dt><span class="section"><a href="#id390487">NeoWebScript</a></span></dt></dl></dd></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>1. <a href="#hello%20world">Hello World</a></dt><dt>2. <a href="#id369279">Generate a Table</a></dt><dt>3. <a href="#variable_access">Variable Access</a></dt><dt>4. <a href="#file_upload">File Upload</a></dt><dt>5. <a href="#file_download">File Download</a></dt><dt>6. <a href="#ajax_xml_messaging">XML Messages and Ajax</a></dt></dl></div><p style="width:90%">
+    Document revision: $Revision: 959821 $, last modified 2010-07-20 21:49:04+02:00$ by $Author: mxmanghi $.
   </p><div class="section" title="Introduction to Apache Rivet"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="introduction"></a>Introduction to Apache Rivet</h2></div></div></div><p style="width:90%">
       Apache Rivet is a system for creating dynamic web content via a
       programming language integrated with Apache Web Server.  It is
@@ -272,7 +267,7 @@ AddType application/x-rivet-tcl .tcl</pr
 	    <span style="font-family:monospace"><span class="command"><strong>RivetServerConf</strong></span></span>, except that they are
 	    only valid for the directory where they are specified, and
 	    its subdirectories.
-	  </div></div></dd></dl></div></div><div class="section" title="Rivet Tcl Commands and Variables"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="commands"></a>Rivet Tcl Commands and Variables</h2></div></div></div><div class="refentry" title="var"><a name="var"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>var, var_qs, var_post &#8212; get the value of a form variable.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">var</span>  (<span style="font-family:monospace; font-weight: bold;">get</span> | <span style="font-family:monospace; font-weight: bold;">list</span> | <span style="font-family:monospace; font-weight: bold;">exists</span> | <span style="font-family:monospace; font-weight: bold;">n
 umber</span> | <span style="font-family:monospace; font-weight: bold;">all</span>)</div></div><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">var_qs</span>  (<span style="font-family:monospace; font-weight: bold;">get</span> | <span style="font-family:monospace; font-weight: bold;">list</span> | <span style="font-family:monospace; font-weight: bold;">exists</span> | <span style="font-family:monospace; font-weight: bold;">number</span> | <span style="font-family:monospace; font-weight: bold;">all</span>)</div></div><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">var_post</span>  (<span style="font-family:monospace; font-weight: bold;">get</span> | <span style="font-family:monos
 pace; font-weight: bold;">list</span> | <span style="font-family:monospace; font-weight: bold;">exists</span> | <span style="font-family:monospace; font-weight: bold;">number</span> | <span style="font-family:monospace; font-weight: bold;">all</span>)</div></div></div><div class="refsect1" title="Description"><a name="id554405"></a><h2>Description</h2><p style="width:90%">
+	  </div></div></dd></dl></div></div><div class="section" title="Rivet Tcl Commands and Variables"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="commands"></a>Rivet Tcl Commands and Variables</h2></div></div></div><div class="refentry" title="var"><a name="var"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>var, var_qs, var_post &#8212; get the value of a form variable.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">var</span>  (<span style="font-family:monospace; font-weight: bold;">get</span> | <span style="font-family:monospace; font-weight: bold;">list</span> | <span style="font-family:monospace; font-weight: bold;">exists</span> | <span style="font-family:monospace; font-weight: bold;">n
 umber</span> | <span style="font-family:monospace; font-weight: bold;">all</span>)</div></div><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">var_qs</span>  (<span style="font-family:monospace; font-weight: bold;">get</span> | <span style="font-family:monospace; font-weight: bold;">list</span> | <span style="font-family:monospace; font-weight: bold;">exists</span> | <span style="font-family:monospace; font-weight: bold;">number</span> | <span style="font-family:monospace; font-weight: bold;">all</span>)</div></div><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">var_post</span>  (<span style="font-family:monospace; font-weight: bold;">get</span> | <span style="font-family:monos
 pace; font-weight: bold;">list</span> | <span style="font-family:monospace; font-weight: bold;">exists</span> | <span style="font-family:monospace; font-weight: bold;">number</span> | <span style="font-family:monospace; font-weight: bold;">all</span>)</div></div></div><div class="refsect1" title="Description"><a name="id363073"></a><h2>Description</h2><p style="width:90%">
 	  The <span style="font-family:monospace"><span class="command"><strong>var</strong></span></span> command retrieves information
 	  about GET or POST variables sent to the script via client
 	  request.  It treats both GET and POST variables the same,
@@ -315,7 +310,7 @@ AddType application/x-rivet-tcl .tcl</pr
 		Return a list of variable names and values.
 	      </div></div></dd></dl></div><p style="width:90%">
 	  See <a class="xref" href="#variable_access" title="Example 3. Variable Access">Example 3, &#8220;Variable Access&#8221;</a>.
-	</p></div></div><div class="refentry" title="upload"><div class="refentry.separator"><hr></div><a name="upload"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>upload &#8212; handle a file uploaded by a client.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">upload</span>  (<span style="font-family:monospace; font-weight: bold;">channel</span> | <span style="font-family:monospace; font-weight: bold;">save</span> | <span style="font-family:monospace; font-weight: bold;">data</span> | <span style="font-family:monospace; font-weight: bold;">exists</span> | <span style="font-family:monospace; font-weight: bold;">size</span> | <span style="font-family:monospace; font-weight: bold;">type</span> | <span style="font-family:monospace; font
 -weight: bold;">filename</span>)</div></div></div><div class="refsect1" title="Description"><a name="id554743"></a><h2>Description</h2><p style="width:90%">The upload command is for file upload manipulation.
+	</p></div></div><div class="refentry" title="upload"><div class="refentry.separator"><hr></div><a name="upload"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>upload &#8212; handle a file uploaded by a client.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">upload</span>  (<span style="font-family:monospace; font-weight: bold;">channel</span> | <span style="font-family:monospace; font-weight: bold;">save</span> | <span style="font-family:monospace; font-weight: bold;">data</span> | <span style="font-family:monospace; font-weight: bold;">exists</span> | <span style="font-family:monospace; font-weight: bold;">size</span> | <span style="font-family:monospace; font-weight: bold;">type</span> | <span style="font-family:monospace; font
 -weight: bold;">filename</span>)</div></div></div><div class="refsect1" title="Description"><a name="id363411"></a><h2>Description</h2><p style="width:90%">The upload command is for file upload manipulation.
 	  See the relevant Apache Directives to further configure the
 	  behavior of this Rivet feature.
 	</p><div class="variablelist"><dl><dt><span class="term">
@@ -369,7 +364,7 @@ AddType application/x-rivet-tcl .tcl</pr
 		uploaded.
 	      </div></div></dd></dl></div><p style="width:90%">
 	  See <a class="xref" href="#upload" title="upload">upload</a>.
-	</p></div></div><div class="refentry" title="load_response"><div class="refentry.separator"><hr></div><a name="load_response"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>load_response &#8212; load form variables into an array.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_response</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>arrayName</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id555171"></a><h2>Description</h2><p style="width:90%">
+	</p></div></div><div class="refentry" title="load_response"><div class="refentry.separator"><hr></div><a name="load_response"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>load_response &#8212; load form variables into an array.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_response</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>arrayName</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id363839"></a><h2>Description</h2><p style="width:90%">
 				Load any form variables passed to this page into an
 				array. If <span style="font-family:monospace"><span class="command"><strong>load_response</strong></span></span> is called without 
 				arguments the array response is created in 
@@ -386,15 +381,15 @@ AddType application/x-rivet-tcl .tcl</pr
 				array results in adding more values to the array at every call. 
 				When needed it is left to the caller to empty the array between 
 				two subsequent calls.  
-			</p></div></div><div class="refentry" title="load_headers"><div class="refentry.separator"><hr></div><a name="load_headers"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>load_headers &#8212; get client request's headers.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_headers</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>array_name</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id555243"></a><h2>Description</h2><p style="width:90%">
+			</p></div></div><div class="refentry" title="load_headers"><div class="refentry.separator"><hr></div><a name="load_headers"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>load_headers &#8212; get client request's headers.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_headers</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>array_name</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id363911"></a><h2>Description</h2><p style="width:90%">
 	  Load the headers that come from a client request into the
 	  provided array name, or use headers if no
 	  name is provided.
-	</p></div></div><div class="refentry" title="load_cookies"><div class="refentry.separator"><hr></div><a name="load_cookies"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>load_cookies &#8212; get any cookie variables sent by the client.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_cookies</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>array_name</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id555294"></a><h2>Description</h2></div><p style="width:90%">
+	</p></div></div><div class="refentry" title="load_cookies"><div class="refentry.separator"><hr></div><a name="load_cookies"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>load_cookies &#8212; get any cookie variables sent by the client.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_cookies</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>array_name</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id363962"></a><h2>Description</h2></div><p style="width:90%">
 	Load the array of cookie variables into the specified
 	array name.  Uses array cookies by
 	default.
-      </p></div><div class="refentry" title="load_env"><div class="refentry.separator"><hr></div><a name="load_env"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>load_env &#8212; get the request's environment variables.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_env</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>array_name</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id555344"></a><h2>Description</h2><p style="width:90%">
+      </p></div><div class="refentry" title="load_env"><div class="refentry.separator"><hr></div><a name="load_env"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>load_env &#8212; get the request's environment variables.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_env</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>array_name</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id364012"></a><h2>Description</h2><p style="width:90%">
 	  Load the array of environment variables into the specified
 	  array name.  Uses array ::request::env by
 	  default.
@@ -404,19 +399,19 @@ AddType application/x-rivet-tcl .tcl</pr
 	  for most uses - it's ok to access it as
 	  env.
 	</p></div></div><div class="refentry" title="env"><div class="refentry.separator"><hr></div><a name="env"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>env &#8212; Loads a single
-	"environmental variable" into a Tcl variable.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">env</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>varName</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id555406"></a><h2>Description</h2><p style="width:90%">
+	"environmental variable" into a Tcl variable.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">env</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>varName</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id364074"></a><h2>Description</h2><p style="width:90%">
 	  If it is only necessary to load one environmental variable,
 	  this command may be used to avoid the overhead of loading
 	  and storing the entire array.
-	</p></div></div><div class="refentry" title="include"><div class="refentry.separator"><hr></div><a name="include"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>include &#8212; includes a file into the output stream without modification.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">include</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>filename_name</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id555454"></a><h2>Description</h2><p style="width:90%">
+	</p></div></div><div class="refentry" title="include"><div class="refentry.separator"><hr></div><a name="include"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>include &#8212; includes a file into the output stream without modification.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">include</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>filename_name</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id364122"></a><h2>Description</h2><p style="width:90%">
 	  Include a file without parsing it for processing tags &lt;?
 	  and ?&gt;.  This is the best way to include an HTML file or
 	  any other static content.
-	</p></div></div><div class="refentry" title="parse"><div class="refentry.separator"><hr></div><a name="parse"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>parse &#8212; parses a Rivet template file.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">parse</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>filename</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id555504"></a><h2>Description</h2><p style="width:90%">
+	</p></div></div><div class="refentry" title="parse"><div class="refentry.separator"><hr></div><a name="parse"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>parse &#8212; parses a Rivet template file.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">parse</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>filename</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id364172"></a><h2>Description</h2><p style="width:90%">
 	  Like the Tcl <span style="font-family:monospace"><span class="command"><strong>source</strong></span></span> command, but also
 	  parses for Rivet &lt;?  and ?&gt; processing tags.  Using
 	  this command, you can use one .rvt file from another.
-	</p></div></div><div class="refentry" title="headers"><div class="refentry.separator"><hr></div><a name="headers"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>headers &#8212; set and parse HTTP headers.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">headers</span>  (<span style="font-family:monospace; font-weight: bold;">set</span> | <span style="font-family:monospace; font-weight: bold;">redirect</span> | <span style="font-family:monospace; font-weight: bold;">add</span> | <span style="font-family:monospace; font-weight: bold;">type</span> | <span style="font-family:monospace; font-weight: bold;">numeric</span>)</div></div></div><div class="refsect1" title="Description"><a name="id555594"></a><h2>Description</h2><p style="wid
 th:90%">
+	</p></div></div><div class="refentry" title="headers"><div class="refentry.separator"><hr></div><a name="headers"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>headers &#8212; set and parse HTTP headers.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">headers</span>  (<span style="font-family:monospace; font-weight: bold;">set</span> | <span style="font-family:monospace; font-weight: bold;">redirect</span> | <span style="font-family:monospace; font-weight: bold;">add</span> | <span style="font-family:monospace; font-weight: bold;">type</span> | <span style="font-family:monospace; font-weight: bold;">numeric</span>)</div></div></div><div class="refsect1" title="Description"><a name="id364261"></a><h2>Description</h2><p style="wid
 th:90%">
 	  The <span style="font-family:monospace"><span class="command"><strong>headers</strong></span></span> command is for setting and
 	  parsing HTTP headers.
 	</p><div class="variablelist"><dl><dt><span class="term"><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">headers</span>   <span style="font-family:monospace; font-weight: bold;">set</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>headername</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>value</code></em></span>?</div></div>
@@ -440,48 +435,48 @@ AddType application/x-rivet-tcl .tcl</pr
 	      </div></div></dd><dt><span class="term">
 	      <div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">headers</span>   <span style="font-family:monospace; font-weight: bold;">numeric</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>response code</code></em></span>?</div></div>
 	    </span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">Set a numeric response code, such as 200, 404 or 500.
-	      </div></div></dd></dl></div></div></div><div class="refentry" title="makeurl"><div class="refentry.separator"><hr></div><a name="makeurl"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>makeurl &#8212; construct url's based on hostname, port.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">makeurl</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>filename</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id555868"></a><h2>Description</h2><p style="width:90%">
+	      </div></div></dd></dl></div></div></div><div class="refentry" title="makeurl"><div class="refentry.separator"><hr></div><a name="makeurl"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>makeurl &#8212; construct url's based on hostname, port.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">makeurl</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>filename</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id364535"></a><h2>Description</h2><p style="width:90%">
 	  Create a self referencing URL from a filename.  For example:
 	  </p><pre style="background:#ccc; margin: 2ex; margin-right: 10%;       padding: 1ex; border: dashed black 1px ; white-space: pre;      font-family: monospace; font-size: 90%;" class="programlisting">makeurl /tclp.gif</pre><p style="width:90%">
 	  returns
 	  <code class="computeroutput">http://[hostname]:[port]/tclp.gif</code>.
 	  where hostname and port are the hostname and port of the
 	  server in question.
-	</p></div></div><div class="refentry" title="cookie"><div class="refentry.separator"><hr></div><a name="cookie"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>cookie &#8212; get and set cookies.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">cookie</span>  ?<span style="font-family:monospace; font-weight: bold;">set</span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>cookieName</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>?<span class="optional">cookiValue</span>?</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;">-days <em class="replaceable"><code>expireInDays</code></em></span>? ?<span style="font
 -family:monospace; font-weight: bold;">-hours <em class="replaceable"><code>expireInHours</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;">-minutes <em class="replaceable"><code>expireInMinutes</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;">-expires <em class="replaceable"><code>Wdy, DD-Mon-YYYY HH:MM:SS GMT</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;">-path <em class="replaceable"><code>uriPathCookieAppliesTo</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;">-secure <em class="replaceable"><code>1/0</code></em></span>?</div></div><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">cookie</span>  ?<span style="font-family:monospace; font-weight: bold;">get</span>? ?<span style="font-family:monospace; font-weight: b
 old;"><em class="replaceable"><code>cookieName</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id556024"></a><h2>Description</h2><p style="width:90%">
+	</p></div></div><div class="refentry" title="cookie"><div class="refentry.separator"><hr></div><a name="cookie"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>cookie &#8212; get and set cookies.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">cookie</span>  ?<span style="font-family:monospace; font-weight: bold;">set</span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>cookieName</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>?<span class="optional">cookiValue</span>?</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;">-days <em class="replaceable"><code>expireInDays</code></em></span>? ?<span style="font
 -family:monospace; font-weight: bold;">-hours <em class="replaceable"><code>expireInHours</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;">-minutes <em class="replaceable"><code>expireInMinutes</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;">-expires <em class="replaceable"><code>Wdy, DD-Mon-YYYY HH:MM:SS GMT</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;">-path <em class="replaceable"><code>uriPathCookieAppliesTo</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;">-secure <em class="replaceable"><code>1/0</code></em></span>?</div></div><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">cookie</span>  ?<span style="font-family:monospace; font-weight: bold;">get</span>? ?<span style="font-family:monospace; font-weight: b
 old;"><em class="replaceable"><code>cookieName</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id364692"></a><h2>Description</h2><p style="width:90%">
 	  <span style="font-family:monospace"><span class="command"><strong>cookie</strong></span></span> gets or sets a cookie.  When you
 	  get a cookie, the command returns the value of the cookie,
 	  or an empty string if no cookie exists.
-	</p></div></div><div class="refentry" title="clock_to_rfc850_gmt"><div class="refentry.separator"><hr></div><a name="clock_to_rfc"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>clock_to_rfc850_gmt &#8212; create a rfc850 time from [clock seconds].</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">clock_to_rfc850_gmt</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>seconds</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id556077"></a><h2>Description</h2><p style="width:90%">
+	</p></div></div><div class="refentry" title="clock_to_rfc850_gmt"><div class="refentry.separator"><hr></div><a name="clock_to_rfc"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>clock_to_rfc850_gmt &#8212; create a rfc850 time from [clock seconds].</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">clock_to_rfc850_gmt</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>seconds</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id364745"></a><h2>Description</h2><p style="width:90%">
 	  Convert an integer-seconds-since-1970 click value to
 	  RFC850 format, with the additional requirement that it be
 	  GMT only.
-	</p></div></div><div class="refentry" title="html"><div class="refentry.separator"><hr></div><a name="html"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>html &#8212; construct html tagged text.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">html</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>string</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>arg</code></em></span>...?</div></div></div><div class="refsect1" title="Description"><a name="id556132"></a><h2>Description</h2><p style="width:90%">
+	</p></div></div><div class="refentry" title="html"><div class="refentry.separator"><hr></div><a name="html"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>html &#8212; construct html tagged text.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">html</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>string</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>arg</code></em></span>...?</div></div></div><div class="refsect1" title="Description"><a name="id364800"></a><h2>Description</h2><p style="width:90%">
 	  Print text with the added ability to pass HTML tags
 	  following the string.  Example:
 	  </p><pre style="background:#ccc; margin: 2ex; margin-right: 10%;       padding: 1ex; border: dashed black 1px ; white-space: pre;      font-family: monospace; font-size: 90%;" class="programlisting">html "Test" b i</pre><p style="width:90%">
 	  produces: <code class="computeroutput">&lt;b&gt;&lt;i&gt;Test&lt;/i&gt;&lt;/b&gt;</code>
-	</p></div></div><div class="refentry" title="incr0"><div class="refentry.separator"><hr></div><a name="incr0"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>incr0 &#8212; increment a variable or set it to 1 if nonexistant.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">incr0</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>varname</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>num</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id556198"></a><h2>Description</h2><p style="width:90%">
+	</p></div></div><div class="refentry" title="incr0"><div class="refentry.separator"><hr></div><a name="incr0"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>incr0 &#8212; increment a variable or set it to 1 if nonexistant.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">incr0</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>varname</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>num</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id364866"></a><h2>Description</h2><p style="width:90%">
 	  Increment a variable
 	  <em class="replaceable"><code>varname</code></em> by
 	  <em class="replaceable"><code>num</code></em>.  If the
 	  variable doesn't exist, create it instead of returning an
 	  error.
-	</p></div></div><div class="refentry" title="parray"><div class="refentry.separator"><hr></div><a name="parray"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>parray &#8212; Tcl's <span style="font-family:monospace"><span class="command"><strong>parray</strong></span></span> with html formatting.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">parray</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>arrayName</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>?<span class="optional">pattern</span>?</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id556268"></a><h2>Description</h2><p style="wi
 dth:90%">
+	</p></div></div><div class="refentry" title="parray"><div class="refentry.separator"><hr></div><a name="parray"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>parray &#8212; Tcl's <span style="font-family:monospace"><span class="command"><strong>parray</strong></span></span> with html formatting.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">parray</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>arrayName</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>?<span class="optional">pattern</span>?</code></em></span>?</div></div></div><div class="refsect1" title="Description"><a name="id364936"></a><h2>Description</h2><p style="wi
 dth:90%">
 	  An html version of the standard Tcl
 	  <span style="font-family:monospace"><span class="command"><strong>parray</strong></span></span> command.  Displays the entire
 	  contents of an array in a sorted, nicely-formatted way.
 	  Mostly used for debugging purposes.
 	</p></div></div><div class="refentry" title="abort_page"><div class="refentry.separator"><hr></div><a name="abort_page"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>abort_page &#8212; Stops outputing data to web page, similar in
-	  purpose to PHP's <span style="font-family:monospace"><span class="command"><strong>die</strong></span></span> command.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">abort_page</span> </div></div></div><div class="refsect1" title="Description"><a name="id556319"></a><h2>Description</h2><p style="width:90%">This command flushes the
+	  purpose to PHP's <span style="font-family:monospace"><span class="command"><strong>die</strong></span></span> command.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">abort_page</span> </div></div></div><div class="refsect1" title="Description"><a name="id364987"></a><h2>Description</h2><p style="width:90%">This command flushes the
 	output buffer and stops the Tcl script from sending any more
 	data to the client.  A normal Tcl script might use the
 	<span style="font-family:monospace"><span class="command"><strong>exit</strong></span></span> command, but that cannot be used in
 	Rivet without actually exiting the apache child
-	process!</p></div></div><div class="refentry" title="no_body"><div class="refentry.separator"><hr></div><a name="no_body"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>no_body &#8212; Prevents Rivet from sending any content.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">no_body</span> </div></div></div><div class="refsect1" title="Description"><a name="id556364"></a><h2>Description</h2><p style="width:90%">
+	process!</p></div></div><div class="refentry" title="no_body"><div class="refentry.separator"><hr></div><a name="no_body"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>no_body &#8212; Prevents Rivet from sending any content.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">no_body</span> </div></div></div><div class="refsect1" title="Description"><a name="id365032"></a><h2>Description</h2><p style="width:90%">
 	  This command is useful for situations where it is necessary
 	  to only return HTTP headers and no actual content.  For
 	  instance, when returning a 304 redirect.
-	</p></div></div><div class="refentry" title="escape_string"><div class="refentry.separator"><hr></div><a name="escape_string"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>escape_string &#8212; convert a string into escaped characters.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">escape_string</span>  ?<span style="font-family:monospace; font-weight: bold;">string</span>?</div></div></div><div class="refsect1" title="Description"><a name="id556411"></a><h2>Description</h2><p style="width:90%">
+	</p></div></div><div class="refentry" title="escape_string"><div class="refentry.separator"><hr></div><a name="escape_string"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>escape_string &#8212; convert a string into escaped characters.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">escape_string</span>  ?<span style="font-family:monospace; font-weight: bold;">string</span>?</div></div></div><div class="refsect1" title="Description"><a name="id365079"></a><h2>Description</h2><p style="width:90%">
 	    Scans through each character in the specified string looking
 	    for special characters, escaping them as needed, mapping
 	    special characters to a quoted hexadecimal equivalent,
@@ -491,7 +486,7 @@ AddType application/x-rivet-tcl .tcl</pr
 	    part of a URL.
 	</p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">Note</th></tr><tr><td align="left" valign="top"> 
 	    You must require the Rivet package in order to gain access to this command
-	</td></tr></table></div></div></div><div class="refentry" title="escape_sgml_chars"><div class="refentry.separator"><hr></div><a name="escape_sgml_chars"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>escape_sgml_chars &#8212; escape special SGML characters in a string.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">escape_sgml_chars</span>  ?<span style="font-family:monospace; font-weight: bold;">string</span>?</div></div></div><div class="refsect1" title="Description"><a name="id556466"></a><h2>Description</h2><p style="width:90%">
+	</td></tr></table></div></div></div><div class="refentry" title="escape_sgml_chars"><div class="refentry.separator"><hr></div><a name="escape_sgml_chars"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>escape_sgml_chars &#8212; escape special SGML characters in a string.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">escape_sgml_chars</span>  ?<span style="font-family:monospace; font-weight: bold;">string</span>?</div></div></div><div class="refsect1" title="Description"><a name="id365134"></a><h2>Description</h2><p style="width:90%">
 	  Scans through each character in the specified string looking
 	  for any special (with respect to SGML, and hence HTML) characters
 	  from the specified string, and returns the result.  
@@ -499,7 +494,7 @@ AddType application/x-rivet-tcl .tcl</pr
 	  bracket is escaped to the corrected ampersand gt symbol.
 	</p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">Note</th></tr><tr><td align="left" valign="top"> 
 	    You must require the Rivet package in order to gain access to this command
-	</td></tr></table></div></div></div><div class="refentry" title="escape_shell_command"><div class="refentry.separator"><hr></div><a name="escape_shell_command"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>escape_shell_command &#8212; escape shell metacharacters in a string.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">escape_shell_command</span>  ?<span style="font-family:monospace; font-weight: bold;">string</span>?</div></div></div><div class="refsect1" title="Description"><a name="id556518"></a><h2>Description</h2><p style="width:90%">
+	</td></tr></table></div></div></div><div class="refentry" title="escape_shell_command"><div class="refentry.separator"><hr></div><a name="escape_shell_command"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>escape_shell_command &#8212; escape shell metacharacters in a string.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">escape_shell_command</span>  ?<span style="font-family:monospace; font-weight: bold;">string</span>?</div></div></div><div class="refsect1" title="Description"><a name="id365186"></a><h2>Description</h2><p style="width:90%">
 	  Scans through each character in the specified string looking
 	  for any shell metacharacters, such as asterisk, less than and
 	  greater than, parens, square brackets, curly brackets, angle 
@@ -510,7 +505,7 @@ AddType application/x-rivet-tcl .tcl</pr
 	  prepending it with a backslash, returning the result.
 	</p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">Note</th></tr><tr><td align="left" valign="top"> 
 	    You must require the Rivet package in order to gain access to this command
-	</td></tr></table></div></div></div><div class="refentry" title="unescape_string"><div class="refentry.separator"><hr></div><a name="unescape_string"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>unescape_string &#8212; unescape escaped characters in a string.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">unescape_string</span>  ?<span style="font-family:monospace; font-weight: bold;">string</span>?</div></div></div><div class="refsect1" title="Description"><a name="id556574"></a><h2>Description</h2><p style="width:90%">
+	</td></tr></table></div></div></div><div class="refentry" title="unescape_string"><div class="refentry.separator"><hr></div><a name="unescape_string"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>unescape_string &#8212; unescape escaped characters in a string.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">unescape_string</span>  ?<span style="font-family:monospace; font-weight: bold;">string</span>?</div></div></div><div class="refsect1" title="Description"><a name="id365242"></a><h2>Description</h2><p style="width:90%">
 	  Scans through each character in the specified string looking
 	  for escaped character sequences (characters containing a
 	  percent sign and two hexadecimal characters, unescaping them 
@@ -521,7 +516,7 @@ AddType application/x-rivet-tcl .tcl</pr
 	    be part of a URL.
 	</p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">Note</th></tr><tr><td align="left" valign="top"> 
 	    You must require the Rivet package in order to gain access to this command
-	</td></tr></table></div></div></div><div class="refentry" title="apache_log_error"><div class="refentry.separator"><hr></div><a name="apache_log_error"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>apache_log_error &#8212; log messages to the Apache error log</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">apache_log_error</span>  ?<span style="font-family:monospace; font-weight: bold;">priority</span>? ?<span style="font-family:monospace; font-weight: bold;">message</span>?</div></div></div><div class="refsect1" title="Description"><a name="id556637"></a><h2>Description</h2><p style="width:90%">The apache_log_error command logs a message to the 
+	</td></tr></table></div></div></div><div class="refentry" title="apache_log_error"><div class="refentry.separator"><hr></div><a name="apache_log_error"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>apache_log_error &#8212; log messages to the Apache error log</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">apache_log_error</span>  ?<span style="font-family:monospace; font-weight: bold;">priority</span>? ?<span style="font-family:monospace; font-weight: bold;">message</span>?</div></div></div><div class="refsect1" title="Description"><a name="id365305"></a><h2>Description</h2><p style="width:90%">The apache_log_error command logs a message to the 
 	  Apache error log, whose name and location have been
 	  set by the ErrorLog directive.
 	</p><p style="width:90%">
@@ -534,7 +529,7 @@ AddType application/x-rivet-tcl .tcl</pr
 	    crit,
 	    alert, or
 	    emerg.
-	</p></div></div><div class="refentry" title="apache_table"><div class="refentry.separator"><hr></div><a name="apache_table"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>apache_table &#8212; access and manipulate Apache tables in the request structure.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">apache_table</span>  (<span style="font-family:monospace; font-weight: bold;">get</span> | <span style="font-family:monospace; font-weight: bold;">set</span> | <span style="font-family:monospace; font-weight: bold;">exists</span> | <span style="font-family:monospace; font-weight: bold;">unset</span> | <span style="font-family:monospace; font-weight: bold;">names</span> | <span style="font-family:monospace; font-weight: bold;">array_g
 et</span> | <span style="font-family:monospace; font-weight: bold;">clear</span>)</div></div></div><div class="refsect1" title="Description"><a name="id556767"></a><h2>Description</h2><p style="width:90%">The apache_table command is for accessing and manipulating
+	</p></div></div><div class="refentry" title="apache_table"><div class="refentry.separator"><hr></div><a name="apache_table"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>apache_table &#8212; access and manipulate Apache tables in the request structure.</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">apache_table</span>  (<span style="font-family:monospace; font-weight: bold;">get</span> | <span style="font-family:monospace; font-weight: bold;">set</span> | <span style="font-family:monospace; font-weight: bold;">exists</span> | <span style="font-family:monospace; font-weight: bold;">unset</span> | <span style="font-family:monospace; font-weight: bold;">names</span> | <span style="font-family:monospace; font-weight: bold;">array_g
 et</span> | <span style="font-family:monospace; font-weight: bold;">clear</span>)</div></div></div><div class="refsect1" title="Description"><a name="id365435"></a><h2>Description</h2><p style="width:90%">The apache_table command is for accessing and manipulating
 	  Apache tables in the request structure.
 	</p><p style="width:90%">
 	The table name must be one of
@@ -601,7 +596,8 @@ AddType application/x-rivet-tcl .tcl</pr
       Some examples of Rivet usage follow.  Some prior Tcl knowledge
       is assumed.  If you don't know much Tcl, don't worry, it's easy,
       and there are some good resources available on the web that will
-      get you up to speed quickly.  Go to the <a class="link" href="#websites" title="Web Sites">web sites</a> section and have a look.
+      get you up to speed quickly.  Go to the 
+      <a class="link" href="#websites" title="Web Sites">web sites</a> section and have a look.
     </p><div class="example"><a name="hello%20world"></a><p class="title"><b>Example 1. Hello World</b></p><div class="example-contents"><p style="width:90%">
 	As with any tool, it's always nice to see something work, so
 	let's create a small "Hello World" page.</p><p style="width:90%">
@@ -615,7 +611,7 @@ puts "Hello World"
 	If you then access it with your browser, you should see a
 	blank page with the text "Hello World" (without the quotes) on
 	it.
-      </p></div></div><br class="example-break"><div class="example"><a name="id560611"></a><p class="title"><b>Example 2. Generate a Table</b></p><div class="example-contents"><p style="width:90%">
+      </p></div></div><br class="example-break"><div class="example"><a name="id369279"></a><p class="title"><b>Example 2. Generate a Table</b></p><div class="example-contents"><p style="width:90%">
 	    In another simple example, we dynamically generate a table:
 	  </p><pre style="background:#ccc; margin: 2ex; margin-right: 10%;       padding: 1ex; border: dashed black 1px ; white-space: pre;      font-family: monospace; font-size: 90%;" class="programlisting">&lt;? puts "&lt;table&gt;\n"
 for {set i 1} { $i &lt;= 8 } {incr i} {
@@ -946,51 +942,30 @@ if {[var exists pdfname]} {
 	    In this example a Rivet script initializes an array with the essential data regarding a few of the major 
 	    composers of the european music. This array plays the role of a database. The script sends back to the 
 	    client two types of responses: a catalog of the composers or a single record of a composer.
-	</p><pre style="background:#ccc; margin: 2ex; margin-right: 10%;       padding: 1ex; border: dashed black 1px ; white-space: pre;      font-family: monospace; font-size: 90%;" class="programlisting"># The database array contains xml fragments representing the
-# results of queries to a database. Many databases are now able
-# to produce the results of a query in XML. 
-#
-#array unset composer
-#
-set	composer(1)	"&lt;composer&gt;\n"
-append  composer(1)     "    &lt;first_name&gt;Claudio&lt;/first_name&gt;\n"
-append  composer(1)	"    &lt;last_name&gt;Monteverdi&lt;/last_name&gt;\n"
-append	composer(1)	"    &lt;lifespan&gt;1567-1643&lt;/lifespan&gt;\n"
-append	composer(1)	"    &lt;era&gt;Renaissance/Baroque&lt;/era&gt;\n"
-append	composer(1)	"    &lt;key&gt;1&lt;/key&gt;\n"
-append	composer(1)	"&lt;/composer&gt;\n"
-
-set	composer(2)	"&lt;composer&gt;\n"
-append  composer(2)     "    &lt;first_name&gt;Johann Sebastian&lt;/first_name&gt;\n"
-append  composer(2)	"    &lt;last_name&gt;Bach&lt;/last_name&gt;\n"
-append	composer(2)	"    &lt;lifespan&gt;1685-1750&lt;/lifespan&gt;\n"
-append	composer(2)	"    &lt;era&gt;Baroque&lt;/era&gt;\n"
-append	composer(2)	"    &lt;key&gt;2&lt;/key&gt;\n"
-append	composer(2)	"&lt;/composer&gt;\n"
-
-set	composer(3)	"&lt;composer&gt;\n"
-append  composer(3)     "    &lt;first_name&gt;Ludwig&lt;/first_name&gt;\n"
-append  composer(3)	"    &lt;last_name&gt;van Beethoven&lt;/last_name&gt;\n"
-append	composer(3)	"    &lt;lifespan&gt;1770-1827&lt;/lifespan&gt;\n"
-append	composer(3)	"    &lt;era&gt;Romantic&lt;/era&gt;\n"
-append	composer(3)	"    &lt;key&gt;3&lt;/key&gt;\n"
-append	composer(3)	"&lt;/composer&gt;\n"
-
-set	composer(4)	"&lt;composer&gt;\n"
-append  composer(4)     "    &lt;first_name&gt;Wolfgang Amadaeus&lt;/first_name&gt;\n"
-append  composer(4)	"    &lt;last_name&gt;Mozart&lt;/last_name&gt;\n"
-append	composer(4)	"    &lt;lifespan&gt;1756-1791&lt;/lifespan&gt;\n"
-append	composer(4)	"    &lt;era&gt;Classical&lt;/era&gt;\n"
-append	composer(4)	"    &lt;key&gt;4&lt;/key&gt;\n"
-append	composer(4)	"&lt;/composer&gt;\n"
-
-set	composer(5)	"&lt;composer&gt;\n"
-append  composer(5)     "    &lt;first_name&gt;Robert&lt;/first_name&gt;\n"
-append  composer(5)	"    &lt;last_name&gt;Schumann&lt;/last_name&gt;\n"
-append	composer(5)	"    &lt;lifespan&gt;1810-1856&lt;/lifespan&gt;\n"
-append	composer(5)	"    &lt;era&gt;Romantic&lt;/era&gt;\n"
-append	composer(5)	"    &lt;key&gt;5&lt;/key&gt;\n"
-append	composer(5)	"&lt;/composer&gt;\n"
+	</p><pre style="background:#ccc; margin: 2ex; margin-right: 10%;       padding: 1ex; border: dashed black 1px ; white-space: pre;      font-family: monospace; font-size: 90%;" class="programlisting">#
+# Ajax query servelet: a pseudo database is built into the dictionary 'composers' with the
+# purpose of emulating the role of a real data source. 
+# The script answers with  2 types of responses: a catalog of the record ids and a database 
+# entry matching a given rec_id. The script obviously misses the error handling and the
+# likes. Just an example to see rivet sending xml data to a browser. The full Tcl, JavaScript
+# and HTML code are available from http://people.apache.org/~mxmanghi/rivet-ajax.tar.gz
+
+# This example requires Tcl8.5 or Tcl8.4 with package 'dict' 
+# (http://pascal.scheffers.net/software/tclDict-8.5.2.tar.gz)
+# 
+
+# A pseudo database. rec_id matches a record in the db
+
+set composers [dict create  1 {first_name Claudio middle_name "" last_name Monteverdi	\
+			       lifespan 1567-1643 era Renaissance/Baroque}		\
+			    2 {first_name Johann middle_name Sebastian last_name Bach	\
+			       lifespan 1685-1750 era Baroque }				\
+			    3 {first_name Ludwig middle_name "" last_name "van Beethoven" \
+			       lifespan 1770-1827 era Classical/Romantic}		\
+			    4 {first_name Wolfgang middle_name Amadeus last_name Mozart	\
+				lifespan 1756-1791 era Classical }			\
+			    5 {first_name Robert middle_name "" last_name Schumann	\
+				lifespan 1810-1856 era Romantic} ]
 
 # we use the 'load' argument in order to determine the type of query
 #
@@ -1006,21 +981,31 @@ if {[var exists load]} {
     switch [var get load] {
 	catalog {
 	    append xml "&lt;catalog&gt;\n"
-	    foreach nm [array names composer] {
-	    	if {[regexp {&lt;last_name&gt;(.+)&lt;/last_name&gt;}   $composer($nm) m last_name] &amp;&amp; \
-		    [regexp {&lt;first_name&gt;(.+)&lt;/first_name&gt;} $composer($nm) m first_name]} {
-	            append xml "    &lt;composer key='$nm'&gt;$first_name $last_name&lt;/composer&gt;\n"
+	    foreach nm [dict keys $composers] {
+		set first_name [dict get $composers $nm first_name]
+		set middle_name [dict get $composers $nm middle_name]
+		set last_name  [dict get $composers $nm last_name]
+	        append xml "    &lt;composer key=\"$nm\"&gt;$first_name "
+		if {[string length [string trim $middle_name]] &gt; 0} {
+		    append xml "$middle_name "
 		}
+		append xml "$last_name&lt;/composer&gt;\n"
 	    }
-	    append xml "&lt;/catalog&gt;"
+	    append xml "&lt;/catalog&gt;\n"
 	}
 	composer {
+	    append xml "&lt;composer&gt;\n"
 	    if {[var exists rec_id]} {
 		set rec_id [var get rec_id]
-		if {[info exists composer($rec_id)]} {
-		    append xml $composer($rec_id)
+		if {[dict exists $composers $rec_id]} {
+
+		    foreach {k v} [dict get $composers $rec_id] {
+			append xml "&lt;$k&gt;$v&lt;/$k&gt;\n"
+		    }
+
 		}
 	    }
+	    append xml "&lt;/composer&gt;\n"
 	}
     }
 
@@ -1049,7 +1034,7 @@ if {[var exists load]} {
 			</div></li><li class="listitem"><div style="margin-bottom:1.5ex ; padding .5ex">dio is a database abstraction layer.</div></li><li class="listitem"><div style="margin-bottom:1.5ex ; padding .5ex">
 				dtcl is a compatibility package for mod_dtcl
 				applications.
-			</div></li><li class="listitem"><div style="margin-bottom:1.5ex ; padding .5ex">form - for creating forms.</div></li><li class="listitem"><div style="margin-bottom:1.5ex ; padding .5ex">rivet - some additional, useful routines.</div></li><li class="listitem"><div style="margin-bottom:1.5ex ; padding .5ex">tclrivet</div></li></ul></div></div><div class="section" title="DIO - Database Interface Objects"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="dio"></a>DIO - Database Interface Objects</h2></div></div></div><div class="refentry" title="DIO"><a name="dio_package"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>DIO &#8212; Database Interface Objects</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monos
 pace">::DIO::handle</span>   <span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>interface</code></em></span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>objectName</code></em></span>? (<span style="font-family:monospace; font-weight: bold;">-option</span> | <span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>option</code></em></span> | <span style="font-family:monospace; font-weight: bold;">-option</span> | <span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>option</code></em></span> | <span style="font-family:monospace; font-weight: bold;">...</span>)</div></div></div><div class="refsect1" title="Description"><a name="id561654"></a><h2>Description</h2><p style="width:90%">
+			</div></li><li class="listitem"><div style="margin-bottom:1.5ex ; padding .5ex">form - for creating forms.</div></li><li class="listitem"><div style="margin-bottom:1.5ex ; padding .5ex">rivet - some additional, useful routines.</div></li><li class="listitem"><div style="margin-bottom:1.5ex ; padding .5ex">tclrivet</div></li></ul></div></div><div class="section" title="DIO - Database Interface Objects"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="dio"></a>DIO - Database Interface Objects</h2></div></div></div><div class="refentry" title="DIO"><a name="dio_package"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>DIO &#8212; Database Interface Objects</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monos
 pace">::DIO::handle</span>   <span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>interface</code></em></span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>objectName</code></em></span>? (<span style="font-family:monospace; font-weight: bold;">-option</span> | <span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>option</code></em></span> | <span style="font-family:monospace; font-weight: bold;">-option</span> | <span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>option</code></em></span> | <span style="font-family:monospace; font-weight: bold;">...</span>)</div></div></div><div class="refsect1" title="Description"><a name="id370308"></a><h2>Description</h2><p style="width:90%">
 	  <span style="font-family:monospace"><span class="command"><strong>DIO</strong></span></span> is designed to be a generic,
 	  object-oriented interface to SQL databases.  Its main goal
 	  is to be as generic as possible, but since not all SQL
@@ -1066,7 +1051,7 @@ if {[var exists load]} {
 	  specified, DIO creates an object of that name.  If there is
 	  no <em class="replaceable"><code>objectName</code></em>
 	  given, DIO will automatically generate a unique object ID
-	</p></div><div class="refsect1" title="Options"><a name="id561697"></a><h2>Options</h2><div class="variablelist"><dl><dt></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "> <span style="font-family:monospace; font-weight: bold;">-host</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>hostname</code></em></span>?</div></div><div style="margin-bottom:1.5ex ; padding .5ex">
+	</p></div><div class="refsect1" title="Options"><a name="id370351"></a><h2>Options</h2><div class="variablelist"><dl><dt></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "> <span style="font-family:monospace; font-weight: bold;">-host</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>hostname</code></em></span>?</div></div><div style="margin-bottom:1.5ex ; padding .5ex">
 		The hostname of the computer to connect to.  If none
 		is given, DIO assumes the local host.
 	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "> <span style="font-family:monospace; font-weight: bold;">-port</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>portNumber</code></em></span>?</div></div><div style="margin-bottom:1.5ex ; padding .5ex">The port number to connect to on hostname.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "> <span style="font-family:monospace; font-weight: bold;">-user</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>username</code></em></span>?</div></div><div s
 tyle="margin-bottom:1.5ex ; padding .5ex">The username you wish to login to the server as.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "> <span style="font-family:monospace; font-weight: bold;">-pass</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>password</code></em></span>?</div></div><div style="margin-bottom:1.5ex ; padding .5ex">The password to login to the server with.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "> <span style="font-family:monospace; font-weight: bold;">-db</span>  ?<span style="font-family:monospace; font-weight: bold;
 "><em class="replaceable"><code>database</code></em></span>?</div></div><div style="margin-bottom:1.5ex ; padding .5ex">
@@ -1086,7 +1071,7 @@ if {[var exists load]} {
 		field specified as AUTO.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "> <span style="font-family:monospace; font-weight: bold;">-sequence</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>sequenceName</code></em></span>?</div></div><div style="margin-bottom:1.5ex ; padding .5ex">
 		If DIO is automatically generating keys, it will use
 		this sequence as a means to gain a unique number for
-		the stored key.</div></div></dd></dl></div></div><div class="refsect1" title="DIO Object Commands"><a name="id562009"></a><h2>DIO Object Commands</h2><div class="variablelist"><dl><dt></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><div style="background:#ccccff ; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "> <span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>objectName</code></em></span>  ?<span style="font-family:monospace; font-weight: bold;">array</span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>request</code></em></span>?</div></div><div style="margin-bottom:1.5ex ; padding .5ex">

[... 644 lines stripped ...]


---------------------------------------------------------------------
To unsubscribe, e-mail: rivet-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: rivet-cvs-help@tcl.apache.org