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 da...@apache.org on 2002/09/30 01:09:06 UTC

cvs commit: tcl-rivet/src make.tcl mod_rivet.c

davidw      2002/09/29 16:09:06

  Modified:    .        ChangeLog
               doc      rivet.xml rivet.xsl
               src      make.tcl mod_rivet.c
  Added:       doc      rivet-chunk.xsl rivet-nochunk.xsl
               doc/html commands.html directives.html help.html index.html
                        internals.html upgrading.html
               doc/packages/dio dio.html
  Log:
  * 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.
  
  * src/mod_rivet.c (Rivet_InitTclStuff): Change default CacheSize to
    MaxRequestsPerChild / 5, which should still be plenty, but will
    waste less space.
  
  Revision  Changes    Path
  1.68      +18 -0     tcl-rivet/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/tcl-rivet/ChangeLog,v
  retrieving revision 1.67
  retrieving revision 1.68
  diff -u -r1.67 -r1.68
  --- ChangeLog	27 Sep 2002 17:28:17 -0000	1.67
  +++ ChangeLog	29 Sep 2002 23:09:05 -0000	1.68
  @@ -1,4 +1,22 @@
  +2002-09-29  David N. Welton  <da...@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  <da...@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
  
  
  
  1.8       +265 -135  tcl-rivet/doc/rivet.xml
  
  Index: rivet.xml
  ===================================================================
  RCS file: /home/cvs/tcl-rivet/doc/rivet.xml,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- rivet.xml	27 Sep 2002 17:28:17 -0000	1.7
  +++ rivet.xml	29 Sep 2002 23:09:05 -0000	1.8
  @@ -6,9 +6,6 @@
   <article>
     <articleinfo>
       <title>Apache Rivet</title>
  -    <releaseinfo>
  -      $Id$
  -    </releaseinfo>
       <copyright>
         <year>2002</year>
         <holder>Apache Software Foundation</holder>
  @@ -17,6 +14,10 @@
         <firstname>David</firstname>
         <surname>Welton</surname>
       </author>
  +    <author>
  +      <firstname>Damon</firstname>
  +      <surname>Courtney</surname>
  +    </author>
     </articleinfo>
   
     <!--
  @@ -51,9 +52,9 @@
   	<para>
   	  Download the sources at <ulink
   	    url="http://tcl.apache.org/rivet/download"/>.  Currently
  -	    the only way to obtain Rivet.  In the future, we hope to
  -	    have a FreeBSD port, Debian package, RPM's, and windows
  -	    binaries.
  +	  the only way to obtain Rivet.  In the future, we hope to
  +	  have a FreeBSD port, Debian package, RPM's, and windows
  +	  binaries.
   	</para>
         </step>
         <step performance="optional">
  @@ -62,7 +63,7 @@
   	  If you don't have them, or if you want to build Rivet as a
   	  static (built in) part of the Apache web server, you need
   	  the source code to Apache, which is available from <ulink
  -	  url="http://httpd.apache.org/"/>.  Otherwise, you don't need
  +	    url="http://httpd.apache.org/"/>.  Otherwise, you don't need
   	  to perform this step.  Infact, we recommend that you build
   	  Rivet as a shared object, and therefore, build it seperately
   	  from Apache.
  @@ -74,10 +75,10 @@
   	  We will assume that you have Apache installed at this point.
   	  You must uncompress the Rivet sources in the directory where you
   	  wish to compile them.
  -	  <programlisting>
  -	    gunzip tcl-rivet-X.X.X.tar.gz
  -	    tar -xvf tcl-rivet-X.X.X.tar.gz
  -	  </programlisting>
  +
  +	  <programlisting>gunzip tcl-rivet-X.X.X.tar.gz
  +tar -xvf tcl-rivet-X.X.X.tar.gz</programlisting>
  +
   	</para>
         </step>
         <step>
  @@ -102,10 +103,10 @@
   	  <step>
   	    <para>At this point, you are ready to run the build
   	      system:</para>
  -	    <programlisting>
  -	      cd src/
  -	      ./make.tcl <replaceable>option</replaceable>
  -	    </programlisting>
  +
  +	    <programlisting>cd src/
  +./make.tcl <replaceable>option</replaceable></programlisting>
  +
   	    <para>where <replaceable>option</replaceable> can be
   	      either <option>shared</option> or
   	      <option>static</option>.
  @@ -131,19 +132,19 @@
   	  Rivet is relatively easy to configure - we start off by
   	  adding the module itself:
   	</para>
  -	<programlisting>
  -	  LoadModule rivet_module <replaceable>/usr/lib/apache/1.3/mod_rivet.so</replaceable>
  -	</programlisting>
  +
  +	<programlisting>LoadModule rivet_module	<replaceable>/usr/lib/apache/1.3/mod_rivet.so</replaceable></programlisting>
  +
   	<para>
   	  This tells Apache to load the Rivet shared object, wherever
   	  it happens to reside on your file system.  Now we have to
   	  tell Apache what kind of files are "Rivet" files and how to
   	  process them:
   	</para>
  -	<programlisting>
  -	  AddType application/x-httpd-rivet .rvt
  -	  AddType application/x-rivet-tcl .tcl
  -	</programlisting>
  +
  +	<programlisting>AddType application/x-httpd-rivet .rvt
  +AddType application/x-rivet-tcl .tcl</programlisting>
  +
   	<para>
   	  These tell Apache to process files with the
   	  <filename>.rvt</filename> and <filename>.tcl</filename>
  @@ -177,6 +178,7 @@
   	      <arg>ChildExitScript</arg>
   	      <arg>BeforeScript</arg>
   	      <arg>AfterScript</arg>
  +	      <arg>ErrorScript</arg>
   	      <arg>UploadDirectory</arg>
   	      <arg>UploadMaxSize</arg>
   	      <arg>UploadFilesToVar</arg>
  @@ -188,96 +190,227 @@
   	  <para><command>RivetServerConf</command> specifies a global
   	    option that is valid for the whole server.
   	  </para>
  +	</listitem>
  +	<listitem>
   	  <variablelist>
   	    <varlistentry>
   	      <term>
  -		  <cmdsynopsis>
  -		    <command>CacheSize</command>
  -		    <arg><replaceable>size</replaceable></arg>
  -		  </cmdsynopsis>
  -		</term>
  -		<listitem>
  -		  <para>
  -		    Sets the size of the internal page cache, where
  -		    <option><replaceable>size</replaceable></option>
  -		    is the number of byte-compiled pages to be cached
  -		    for future use.
  -		  </para>
  -		</listitem>
  -	      </varlistentry>
  -	    </variablelist>
  -	</listitem>
  -      </varlistentry>
  -      <varlistentry>
  -	<term>
  -	  <cmdsynopsis>
  -	    <command>Rivet_Script</command>
  -	    <arg>ChildInitScript</arg>
  -	    <arg><replaceable>script</replaceable></arg>
  -	  </cmdsynopsis>
  -	</term>
  -	<listitem>
  -	  <para>
  -	    Script to be evaluated when each Apache child process is
  -	    initialized.  This is the recommended place to load modules.
  -	  </para>
  -	</listitem>
  -      </varlistentry>
  -      <varlistentry>
  -	<term>
  -	  <cmdsynopsis>
  -	    <command>Rivet_Script</command>
  -	    <arg>ChildExitScript</arg>
  -	    <arg><replaceable>script</replaceable></arg>
  -	  </cmdsynopsis>
  -	</term>
  -	<listitem>
  -	  <para>
  -	    Script to be evaluated when each Apache child process exits.
  -	  </para>
  -	</listitem>
  -      </varlistentry>
  -      <varlistentry>
  -	<term>
  -	  <cmdsynopsis>
  -	    <command>Rivet_Script</command>
  -	    <arg>BeforeScript</arg>
  -	    <arg><replaceable>script</replaceable></arg>
  -	  </cmdsynopsis></term>
  -	<listitem>
  -	  <para>
  -	    Script to be evaluated before each server parsed (.rvt) page.
  -	  </para>
  -	</listitem>
  -      </varlistentry>
  +		<cmdsynopsis>
  +		  <arg>CacheSize</arg>
  +		  <arg><replaceable>size</replaceable></arg>
  +		</cmdsynopsis>
  +	      </term>
  +	      <listitem>
  +		<para>
  +		  Sets the size of the internal page cache, where
  +		  <option><replaceable>size</replaceable></option> is
  +		  the number of byte-compiled pages to be cached for
  +		  future use.  Default is
  +		  <command>MaxRequestsPerChild</command> / 5, or 50,
  +		  if <command>MaxRequestsPerChild</command> is 0.
  +		</para>
  +	      </listitem>
  +	    </varlistentry>
   
  +	    <varlistentry>
  +	      <term>
  +		<cmdsynopsis>
  +		  <arg>GlobalInitScript</arg>
  +		  <arg><replaceable>script</replaceable></arg>
  +		</cmdsynopsis>
  +	      </term>
  +	      <listitem>
  +		<para>
  +		  Tcl script that is run when each interpreter is
  +		  initialized. <replaceable><option>script</option></replaceable>
  +		  is an actual Tcl script, so to run a file, you would
  +		  do:
  +
  +		  <programlisting>Rivet_Script GlobalInitScript "source /var/www/foobar.tcl"</programlisting>
  +		</para>
  +	      </listitem>
  +	    </varlistentry>
   
  -      <varlistentry>
  -	<term>
  -	  <cmdsynopsis>
  -	    <command>Rivet_Script</command>
  -	    <arg>AfterScript</arg>
  -	    <arg><replaceable>script</replaceable></arg>
  -	  </cmdsynopsis></term>
  -	<listitem>
  -	  <para>
  -	    Script to be called after each server parsed (.rvt) page.
  -	  </para>
  +	    <varlistentry>
  +	      <term>
  +		<cmdsynopsis>
  +		  <arg>ChildInitScript</arg>
  +		  <arg><replaceable>script</replaceable></arg>
  +		</cmdsynopsis>
  +	      </term>
  +	      <listitem>
  +		<para>
  +		  Script to be evaluated when each Apache child
  +		  process is initialized.  This is the recommended
  +		  place to load modules, create global variables, open
  +		  connections to other facilities (such as databases)
  +		  and so on.
  +		</para>
  +	      </listitem>
  +	    </varlistentry>
  +
  +	    <varlistentry>
  +	      <term>
  +		<cmdsynopsis>
  +		  <arg>ChildExitScript</arg>
  +		  <arg><replaceable>script</replaceable></arg>
  +		</cmdsynopsis>
  +	      </term>
  +	      <listitem>
  +		<para>
  +		  Script to be evaluated when each Apache child
  +		  process exits.  This is the logical place to clean
  +		  up resources created in
  +		  <option>ChildInitScript</option>.
  +		</para>
  +	      </listitem>
  +	    </varlistentry>
  +
  +	    <varlistentry>
  +	      <term>
  +		<cmdsynopsis>
  +		  <arg>BeforeScript</arg>
  +		  <arg><replaceable>script</replaceable></arg>
  +		</cmdsynopsis>
  +	      </term>
  +	      <listitem>
  +		<para>
  +		  Script to be evaluated before each server parsed
  +		  (.rvt) page.  This can be used to create a standard
  +		  header, for instance.  It could also be used to load
  +		  code that you need for every page, if you don't want
  +		  to put it in a <option>GlobalInitScript</option>
  +		  <option>ChildInitScript</option> when you are first
  +		  developing a web site.
  +		  <note>
  +		    This code is evaluated at the global level, not
  +		    inside the request namespace where pages are
  +		    evaluated.
  +		  </note>
  +		</para>
  +	      </listitem>
  +	    </varlistentry>
  +
  +	    <varlistentry>
  +	      <term>
  +		<cmdsynopsis>
  +		  <arg>AfterScript</arg>
  +		  <arg><replaceable>script</replaceable></arg>
  +		</cmdsynopsis>
  +	      </term>
  +	      <listitem>
  +		<para>
  +		  Script to be called after each server parsed (.rvt) page.
  +		</para>
  +	      </listitem>
  +	    </varlistentry>
  +
  +	    <varlistentry>
  +	      <term>
  +		<cmdsynopsis>
  +		  <arg>ErrorScript</arg>
  +		  <arg><replaceable>script</replaceable></arg>
  +		</cmdsynopsis>
  +	      </term>
  +	      <listitem>
  +		<para>
  +		  When Rivet encounters an error in a script, it
  +		  constructs an HTML page with some information about
  +		  the error, and the script that was being
  +		  evaluated. If an <option>ErrorScript</option> is
  +		  specified, it is possible to create custom error
  +		  pages.  This may be useful if you want to make sure
  +		  that users never view your source code.
  +		</para>
  +	      </listitem>
  +	    </varlistentry>
  +
  +	    <varlistentry>
  +	      <term>
  +		<cmdsynopsis>
  +		  <arg>UploadDirectory</arg>
  +		  <arg><replaceable>directory</replaceable></arg>
  +		</cmdsynopsis>
  +	      </term>
  +	      <listitem>
  +		<para>Directory to place uploaded files.</para>
  +	      </listitem>
  +	    </varlistentry>
  +
  +	    <varlistentry>
  +	      <term>
  +		<cmdsynopsis>
  +		  <arg>UploadMaxSize</arg>
  +		  <arg><replaceable>size</replaceable></arg>
  +		</cmdsynopsis>
  +	      </term>
  +	      <listitem>
  +		<para>Maximum size for uploaded files.</para>
  +	      </listitem>
  +	    </varlistentry>
  +
  +	    <varlistentry>
  +	      <term>
  +		<cmdsynopsis>
  +		  <arg>UploadFilesToVar</arg>
  +		  <group choice="req"><arg>yes</arg><arg>no</arg></group>
  +		</cmdsynopsis>
  +	      </term>
  +	      <listitem>
  +		<para>
  +		  This option controls whether it is possible to
  +		  upload files to a Tcl variable.  If you have a size
  +		  limit, and don't have to deal with large files, this
  +		  might be more convenient than sending the data to a
  +		  file on disk.
  +		</para>
  +	      </listitem>
  +	    </varlistentry>
  +
  +	    <varlistentry>
  +	      <term>
  +		<cmdsynopsis>
  +		  <arg>SeperateVirtualInterps</arg>
  +		  <group choice="req">
  +		    <arg>yes</arg>
  +		    <arg>no</arg>
  +		  </group>
  +		</cmdsynopsis>
  +	      </term>
  +	      <listitem>
  +		<para>
  +		  If on, Rivet will create a seperate Tcl interpreter
  +		  for each Apache virtual host.  This is useful in an
  +		  ISP type situation where it is desirable to seperate
  +		  clients into seperate interpreters, so that they
  +		  don't accidentally interfere with one another.
  +		</para>
  +	      </listitem>
  +	    </varlistentry>
  +	  </variablelist>
   	</listitem>
         </varlistentry>
  +
         <varlistentry>
   	<term>
   	  <cmdsynopsis>
  -	    <command>Rivet_Script</command>
  -	    <arg>ErrorScript</arg>
  -	    <arg><replaceable>script</replaceable></arg>
  +	    <command>RivetDirConf</command>
  +	    <group choice="req">
  +	      <arg>BeforeScript</arg>
  +	      <arg>AfterScript</arg>
  +	      <arg>ErrorScript</arg>
  +	      <arg>UploadDirectory</arg>
  +	    </group>
   	  </cmdsynopsis>
   	</term>
   	<listitem>
   	  <para>
  -	    This code is called in place of the standard 'error' pages
  -	    generated for Rivet.  This directive may be useful if you
  -	    have sensitive logic that you wish to protect.
  +	    These options are the same as for
  +	    <command>RivetServerConf</command>, except that they are
  +	    only valid for the directory where they are specified, and
  +	    its subdirectories.  It may be specified in
  +	    <command>Directory</command> sections, as well as in
  +	    <filename>.htaccess</filename> files.
   	  </para>
   	</listitem>
         </varlistentry>
  @@ -285,15 +418,21 @@
         <varlistentry>
   	<term>
   	  <cmdsynopsis>
  -	    <command>Rivet_CacheSize</command>
  -	    <arg><replaceable>cachesize</replaceable></arg>
  +	    <command>RivetUserConf</command>
  +	    <group choice="req">
  +	      <arg>BeforeScript</arg>
  +	      <arg>AfterScript</arg>
  +	      <arg>ErrorScript</arg>
  +	      <arg>UploadDirectory</arg>
  +	    </group>
   	  </cmdsynopsis>
   	</term>
   	<listitem>
   	  <para>
  -	    Number of rvt scripts to cache as Tcl Objects.  Default is
  -	    <command>MaxRequestsPerChild</command> / 2, or 50, if
  -	    <command>MaxRequestsPerChild</command> is 0.
  +	    These options are the same as for
  +	    <command>RivetServerConf</command>, except that they are
  +	    only valid for the directory where they are specified, and
  +	    its subdirectories.
   	  </para>
   	</listitem>
         </varlistentry>
  @@ -313,7 +452,8 @@
   	</term>
   	<listitem>
   	  <para>
  -	    Returns the value of variable <option>varname</option> as a
  +	    Returns the value of variable
  +	    <option><replaceable>varname</replaceable></option> as a
   	    string (even if there are multiple values).
   	  </para>
   	</listitem>
  @@ -329,8 +469,9 @@
   	</term>
   	<listitem>
   	  <para>
  -	    Returns the value of variable <option>varname</option> as
  -	    a list, if there are multiple values.
  +	    Returns the value of variable
  +	    <option><replaceable>varname</replaceable></option> as a
  +	    list, if there are multiple values.
   	  </para>
   	</listitem>
         </varlistentry>
  @@ -345,8 +486,9 @@
   	</term>
   	<listitem>
   	  <para>
  -	    Returns 1 if <option>varname</option> exists, 0 if it
  -	    doesn't.
  +	    Returns 1 if
  +	    <option><replaceable>varname</replaceable></option>
  +	    exists, 0 if it doesn't.
   	  </para>
   	</listitem>
         </varlistentry>
  @@ -493,22 +635,19 @@
       <example>
         <title>upload</title>
         The following HTML:
  -      <programlisting>
  -	&lt;form action="foo.ttml" enctypee="multipart/form-data"
  -	method="post"&gt;
  -	&lt;input type="file" name="MyUpload"&gt;&lt;/input&gt;
  -	&lt;/form&gt;
  -      </programlisting>
  +
  +      <programlisting>&lt;form action="foo.ttml" enctype="multipart/form-data"
  +method="post"&gt;
  +&lt;input type="file" name="MyUpload"&gt;&lt;/input&gt;
  +&lt;/form&gt;</programlisting>
   
         Can be used with the following Tcl code in order to create a
         file upload form.
   
  -      <programlisting>
  -	upload save MyUpload /tmp/uploadfiles/file1
  +      <programlisting>upload save MyUpload /tmp/uploadfiles/file1
  +puts "Saved file [upload filename MyUpload]
  +([upload size MyUploadto] bytes) to server"</programlisting>
   
  -	puts "Saved file [upload filename MyUpload]
  -	([upload size MyUploadto] bytes) to server"
  -      </programlisting>
       </example>
   
       <variablelist>
  @@ -621,18 +760,9 @@
   	    <arg><replaceable>cookie-name</replaceable></arg>
   	    <arg>-value</arg>
   	    <arg><replaceable>cookie-value</replaceable></arg>
  -	    <group choice="opt">
  -	      <arg>-expires</arg>
  -	      <arg><replaceable>date/time</replaceable></arg>
  -	    </group>
  -	    <group choice="opt">
  -	      <arg>-domain</arg>
  -	      <arg><replaceable>domain</replaceable></arg>
  -	    </group>
  -	    <group choice="opt">
  -	      <arg>-path</arg>
  -	      <arg><replaceable>path</replaceable></arg>
  -	    </group>
  +	    <arg choice="opt">-expires <replaceable>date/time</replaceable></arg>
  +	    <arg choice="opt">-domain <replaceable>domain</replaceable></arg>
  +	    <arg choice="opt">-path <replaceable>path</replaceable></arg>
   	    <arg choice="opt">-secure</arg>
   	  </cmdsynopsis>
   	</term>
  @@ -757,7 +887,7 @@
   	</listitem>
   	<listitem>
   	  <para>
  -	    <ulink url="htt://wiki.tcl.tk"/> is the Tcl'ers Wiki, a
  +	    <ulink url="http://wiki.tcl.tk"/> is the Tcl'ers Wiki, a
   	    free-form place to search for answers and ask for help.
   	  </para>
   	</listitem>
  @@ -770,14 +900,14 @@
         <para>
   	Apache Rivet uses the Apache Bug Tracking system at <ulink
   	  url="http://nagoya.apache.org/bugzilla/"></ulink>.  Here,
  -	  you can report problems, or check and see if existing issues
  -	  are already known and being dealt with.
  +	you can report problems, or check and see if existing issues
  +	are already known and being dealt with.
         </para>
       </section>
   
     </section>
   
  -  <section id="internals.html">
  +  <section id="internals">
       <title>Rivet Internals</title>
       <para>
         This section easily falls out of date, as new code is added, old
  
  
  
  1.7       +96 -56    tcl-rivet/doc/rivet.xsl
  
  Index: rivet.xsl
  ===================================================================
  RCS file: /home/cvs/tcl-rivet/doc/rivet.xsl,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- rivet.xsl	4 Aug 2002 02:44:36 -0000	1.6
  +++ rivet.xsl	29 Sep 2002 23:09:05 -0000	1.7
  @@ -1,46 +1,26 @@
  -<?xml version='1.0'?>
  -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  -  xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
  -  exclude-result-prefixes="doc"
  -  version='1.0'>
  -
  -  <!--
  -  <xsl:output method="html"
  -  encoding="ISO-8859-1"
  -  indent="no"/>
  -  -->
  -
  -  <!-- ********************************************************************
  -  $Id$
  -  ********************************************************************
  -
  -  This file is part of the XSL DocBook Stylesheet distribution.
  -  See ../README or http://nwalsh.com/docbook/xsl/ for copyright
  -  and other information.
  -
  -  ******************************************************************** -->
  -
  -  <!-- ==================================================================== -->
  -
  -  <!--
  -  <xsl:import
  -  href="http://docbook.sourceforge.net/release/xsl/1.48/html/docbook.xsl"/>
  -  -->
  -
  -  <xsl:import
  -    href="/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl"
  -    />
  +<?xml version="1.0" encoding="ISO-8859-1"?>
  +  <xsl:stylesheet version="1.0"
  +    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   
  +  <!-- This is the body of the XSL stylesheet for Rivet.  It is called
  +  from either rivet-chunk.xsl or rivet-nochunk.xsl.  -->
   
     <xsl:param name="use.id.as.filename" select="1"/>
  -
     <xsl:variable name="arg.choice.opt.open.str">?</xsl:variable>
     <xsl:variable name="arg.choice.opt.close.str">?</xsl:variable>
  +  <xsl:variable name="group.choice.opt.open.str">(</xsl:variable>
  +  <xsl:variable name="group.choice.opt.close.str">)</xsl:variable>
  +
  +  <!--
     <xsl:variable name="arg.choice.req.open.str"></xsl:variable>
     <xsl:variable name="arg.choice.req.close.str"></xsl:variable>
  -
  +  -->
     <xsl:variable name="arg.choice.def.open.str"></xsl:variable>
     <xsl:variable name="arg.choice.def.close.str"></xsl:variable>
  +  <xsl:variable name="group.choice.def.open.str"></xsl:variable>
  +  <xsl:variable name="group.choice.def.close.str"></xsl:variable>
  +  <xsl:variable name="group.choice.req.open.str">(</xsl:variable>
  +  <xsl:variable name="group.choice.req.close.str">)</xsl:variable>
   
     <xsl:template name="inline.underlineseq">
       <xsl:param name="content">
  @@ -108,8 +88,9 @@
     </xsl:template>
   
     <xsl:template match="cmdsynopsis">
  -    <div class="{name(.)}">
  -      <span style="background:#bbbbff">
  +    <div class="{name(.)}" style="width:80%">
  +      <span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;
  +	word-spacing:1ex ">
   	<xsl:call-template name="anchor"/>
   	<xsl:apply-templates/>
         </span>
  @@ -117,9 +98,8 @@
     </xsl:template>
   
     <xsl:template match="cmdsynopsis/command">
  -    <br/>
  -    <span style="font-weight:bold">
  -      <xsl:call-template name="inline.monoseq"/>
  +    <span style="font-weight:bold ; font-family:monospace">
  +      <xsl:apply-templates/>
       </span>
       <xsl:text> </xsl:text>
     </xsl:template>
  @@ -142,12 +122,10 @@
     <xsl:template match="varlistentry">
       <dt>
         <xsl:call-template name="anchor"/>
  -      <span style="background:#bbbbff">
  -	<xsl:apply-templates select="term"/>
  -      </span>
  +      <xsl:apply-templates select="term"/>
       </dt>
       <dd>
  -      <div style="background:#dddddd ; padding:4 ; margin-top:3 ;
  +      <div style="padding:4 ; margin-top:3 ;
   	margin-bottom:3 ; width:75%" >
   	<xsl:apply-templates select="listitem"/>
         </div>
  @@ -155,7 +133,7 @@
     </xsl:template>
   
     <xsl:template match="listitem/para">
  -    <div style="margin-bottom:6">
  +    <div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
         <xsl:apply-templates/>
       </div>
     </xsl:template>
  @@ -188,14 +166,9 @@
   	<xsl:value-of select="$arg.choice.def.open.str"/>
         </xsl:otherwise>
       </xsl:choose>
  -    <xsl:choose>
  -      <xsl:when test="$choice='plain'">
  -	<xsl:call-template name="inline.monoseq"/>
  -      </xsl:when>
  -      <xsl:otherwise>
  -	<xsl:call-template name="inline.monounderlineseq"/>
  -      </xsl:otherwise>
  -    </xsl:choose>
  +    <span style="font-family:monospace; text-decoration:underline">
  +      <xsl:apply-templates/>
  +    </span>
       <xsl:choose>
         <xsl:when test="$rep='repeat'">
   	<xsl:value-of select="$arg.rep.repeat.str"/>
  @@ -223,6 +196,72 @@
       </xsl:choose>
     </xsl:template>
   
  +  <xsl:template match="group">
  +    <xsl:variable name="choice" select="@choice"/>
  +    <xsl:variable name="rep" select="@rep"/>
  +    <xsl:variable name="sepchar">
  +      <xsl:choose>
  +	<xsl:when test="ancestor-or-self::*/@sepchar">
  +	  <xsl:value-of select="ancestor-or-self::*/@sepchar"/>
  +	</xsl:when>
  +	<xsl:otherwise>
  +	  <xsl:text> </xsl:text>
  +	</xsl:otherwise>
  +      </xsl:choose>
  +    </xsl:variable>
  +    <xsl:if test="position()>1"><xsl:value-of select="$sepchar"/></xsl:if>
  +    <xsl:choose>
  +      <xsl:when test="$choice='plain'">
  +	<xsl:value-of select="$group.choice.plain.open.str"/>
  +      </xsl:when>
  +      <xsl:when test="$choice='req'">
  +	<xsl:value-of select="$group.choice.req.open.str"/>
  +      </xsl:when>
  +      <xsl:when test="$choice='opt'">
  +	<xsl:value-of select="$group.choice.opt.open.str"/>
  +      </xsl:when>
  +      <xsl:otherwise>
  +	<xsl:value-of select="$group.choice.def.open.str"/>
  +      </xsl:otherwise>
  +    </xsl:choose>
  +    <xsl:apply-templates/>
  +    <xsl:choose>
  +      <xsl:when test="$rep='repeat'">
  +	<xsl:value-of select="$group.rep.repeat.str"/>
  +      </xsl:when>
  +      <xsl:when test="$rep='norepeat'">
  +	<xsl:value-of select="$group.rep.norepeat.str"/>
  +      </xsl:when>
  +      <xsl:otherwise>
  +	<xsl:value-of select="$arg.rep.def.str"/>
  +      </xsl:otherwise>
  +    </xsl:choose>
  +    <xsl:choose>
  +      <xsl:when test="$choice='plain'">
  +	<xsl:value-of select="$group.choice.plain.close.str"/>
  +      </xsl:when>
  +      <xsl:when test="$choice='req'">
  +	<xsl:value-of select="$group.choice.req.close.str"/>
  +      </xsl:when>
  +      <xsl:when test="$choice='opt'">
  +	<xsl:value-of select="$group.choice.opt.close.str"/>
  +      </xsl:when>
  +      <xsl:otherwise>
  +	<xsl:value-of select="$group.choice.def.close.str"/>
  +      </xsl:otherwise>
  +    </xsl:choose>
  +  </xsl:template>
  +
  +  <xsl:template match="group/arg">
  +    <xsl:variable name="choice" select="@choice"/>
  +    <xsl:variable name="rep" select="@rep"/>
  +    <xsl:if test="position()>1"><xsl:value-of
  +	select="$arg.or.sep"/></xsl:if>
  +    <span style="font-family:monospace; text-decoration:underline">
  +      <xsl:apply-templates/>
  +    </span>
  +  </xsl:template>
  +
     <xsl:template match="programlisting|screen|synopsis">
       <xsl:param name="suppress-numbers" select="'0'"/>
       <xsl:variable name="id">
  @@ -247,9 +286,11 @@
   	  </pre>
   	</xsl:when>
   	<xsl:otherwise>
  -	  <pre style="background:#bbffbb ; width:auto" class="{name(.)}">
  +	  <div style="background:#bbffbb ; width:80ex ; margin: 2ex ;
  +	    padding: 1ex; border: solid black 1px ; white-space: pre;
  +	    font-family:monospace ; " class="{name(.)}">
   	    <xsl:apply-templates/>
  -	  </pre>
  +	  </div>
   	</xsl:otherwise>
         </xsl:choose>
       </xsl:variable>
  @@ -269,5 +310,4 @@
         </xsl:otherwise>
       </xsl:choose>
     </xsl:template>
  -
  -</xsl:stylesheet>
  +  </xsl:stylesheet>
  \ No newline at end of file
  
  
  
  1.1                  tcl-rivet/doc/rivet-chunk.xsl
  
  Index: rivet-chunk.xsl
  ===================================================================
  <?xml version='1.0'?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
    exclude-result-prefixes="doc"
    version='1.0'>
  
    <!--
    <xsl:output method="html"
    encoding="ISO-8859-1"
    indent="no"/>
    -->
  
    <!-- ********************************************************************
    $Id: rivet-chunk.xsl,v 1.1 2002/09/29 23:09:05 davidw Exp $
    ********************************************************************
  
    This file is part of the XSL DocBook Stylesheet distribution.
    See ../README or http://nwalsh.com/docbook/xsl/ for copyright
    and other information.
  
    ******************************************************************** -->
  
    <!-- ==================================================================== -->
  
    <!--
    <xsl:import
    href="http://docbook.sourceforge.net/release/xsl/1.48/html/docbook.xsl"/>
    -->
  
    <xsl:import
      href="/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl"/>
  
    <xsl:include href="rivet.xsl"/>
  
  </xsl:stylesheet>
  
  
  
  1.1                  tcl-rivet/doc/rivet-nochunk.xsl
  
  Index: rivet-nochunk.xsl
  ===================================================================
  <?xml version='1.0'?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
    exclude-result-prefixes="doc"
    version='1.0'>
  
    <!--
    <xsl:output method="html"
    encoding="ISO-8859-1"
    indent="no"/>
    -->
  
    <!-- ********************************************************************
    $Id: rivet-nochunk.xsl,v 1.1 2002/09/29 23:09:05 davidw Exp $
    ********************************************************************
  
    This file is part of the XSL DocBook Stylesheet distribution.
    See ../README or http://nwalsh.com/docbook/xsl/ for copyright
    and other information.
  
    ******************************************************************** -->
  
    <!-- ==================================================================== -->
  
    <!--
    <xsl:import
    href="http://docbook.sourceforge.net/release/xsl/1.48/html/docbook.xsl"/>
    -->
  
    <xsl:import
      href="/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/docbook.xsl"/>
  
    <xsl:include href="rivet.xsl"/>
  
  </xsl:stylesheet>
  
  
  
  1.1                  tcl-rivet/doc/html/commands.html
  
  Index: commands.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><title>Rivet Tcl Commands and Variables</title><meta name="generator" content="DocBook XSL Stylesheets V1.50.0"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="index.html" title="Apache Rivet"><link rel="previous" href="directives.html" title="Rivet Apache Directives"><link rel="next" href="help.html" title="Resources - How to Get Help"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Rivet Tcl Commands and Variables</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="directives.html">Prev</a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="help.html">Next</a></td></tr></table><hr></div><div class="section"><div class="titlepage"><div><hr><h2 class="title" style="clear: both"><a name="commands"></a>Rivet Tcl Commands and Variables</h2></div></div><div class="variablelist"><dl><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">var</span>  <span style="font-family:monospace; text-decoration:underline">get</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>varname</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Returns the value of variable
  	    <tt><span style="text-decoration:underline"><i><tt>varname</tt></i></span></tt> as a
  	    string (even if there are multiple values).
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">var</span>  <span style="font-family:monospace; text-decoration:underline">list</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>varname</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Returns the value of variable
  	    <tt><span style="text-decoration:underline"><i><tt>varname</tt></i></span></tt> as a
  	    list, if there are multiple values.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">var</span>  <span style="font-family:monospace; text-decoration:underline">exists</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>varname</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Returns 1 if
  	    <tt><span style="text-decoration:underline"><i><tt>varname</tt></i></span></tt>
  	    exists, 0 if it doesn't.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">var</span>  <span style="font-family:monospace; text-decoration:underline">number</span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Returns the number of variables.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">var</span>  <span style="font-family:monospace; text-decoration:underline">all</span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Return a list of variable names and values.
  	  </div></div></dd></dl></div><div class="variablelist"><dl><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">upload</span>  <span style="font-family:monospace; text-decoration:underline">channel</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>uploadname</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    When given the name of a file upload
  	    <tt><span style="text-decoration:underline"><i><tt>uploadname</tt></i></span></tt>,
  	    returns a Tcl channel that can be used to access the
  	    uploaded file.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">upload</span>  <span style="font-family:monospace; text-decoration:underline">save</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>uploadname</tt></i></span> <span style="font-family:monospace; text-decoration:underline"><i><tt>filename</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Saves the
  	    <tt><span style="text-decoration:underline"><i><tt>uploadname</tt></i></span></tt> in
  	    the file
  	    <tt><span style="text-decoration:underline"><i><tt>filename</tt></i></span></tt>.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">upload</span>  <span style="font-family:monospace; text-decoration:underline">data</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>uploadname</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Returns data uploaded to the server.  This is binary clean
  	    - in other words, it will work even with files like
  	    images, executables, compressed files, and so on.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">upload</span>  <span style="font-family:monospace; text-decoration:underline">size</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>uploadname</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Returns the size of the file uploaded.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">upload</span>  <span style="font-family:monospace; text-decoration:underline">type</span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    If the Content-type is set, it is returned, otherwise, an
  	    empty string.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">upload</span>  <span style="font-family:monospace; text-decoration:underline">filename</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>uploadname</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Returns the filename on the remote host that uploaded the file.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">upload</span>  <span style="font-family:monospace; text-decoration:underline">names</span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Returns the variable names, as a list, of all the files
  	    uploaded.
  	  </div></div></dd></dl></div><div class="example"><p class="title"><b>Example 1. upload</b></p>
        The following HTML:
  
        <div style="background:#bbffbb ; width:80ex ; margin: 2ex ;      padding: 1ex; border: solid black 1px ; white-space: pre;      font-family:monospace ; " class="programlisting">&lt;form action=&quot;foo.ttml&quot; enctype=&quot;multipart/form-data&quot;
  method=&quot;post&quot;&gt;
  &lt;input type=&quot;file&quot; name=&quot;MyUpload&quot;&gt;&lt;/input&gt;
  &lt;/form&gt;</div>
  
        Can be used with the following Tcl code in order to create a
        file upload form.
  
        <div style="background:#bbffbb ; width:80ex ; margin: 2ex ;      padding: 1ex; border: solid black 1px ; white-space: pre;      font-family:monospace ; " class="programlisting">upload save MyUpload /tmp/uploadfiles/file1
  puts &quot;Saved file [upload filename MyUpload]
  ([upload size MyUploadto] bytes) to server&quot;</div></div><div class="variablelist"><dl><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_env</span>  ?<span style="font-family:monospace; text-decoration:underline"><i><tt>array_name</tt></i></span>?</span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Load the array of environment variables into the specified
  	    array name.  Uses array <tt><span style="text-decoration:underline">::request::env</span></tt> by
  	    default.
  	  </div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    As Rivet pages are run in the <tt><span style="text-decoration:underline">::request</span></tt>
  	    namespace, it isn't necessary to qualify the array name
  	    for most uses - it's ok to access it as
  	    <tt><span style="text-decoration:underline">env</span></tt>.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_headers</span>  <span style="font-family:monospace; text-decoration:underline"><i><tt>array_name</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Load the headers that come from a client request into the
  	    provided array name, or use <tt><span style="text-decoration:underline">headers</span></tt> if no
  	    name is provided.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_cookies</span>  ?<span style="font-family:monospace; text-decoration:underline"><i><tt>array_name</tt></i></span>?</span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Load the array of cookie variables into the specified
  	    array name.  Uses array <tt><span style="text-decoration:underline">cookies</span></tt> by
  	    default.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">include</span>  <span style="font-family:monospace; text-decoration:underline"><i><tt>filename_name</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    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.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">parse</span>  <span style="font-family:monospace; text-decoration:underline"><i><tt>filename</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Like the Tcl <span style="font-family:monospace"><b>source</b></span> command, but also
  	    parses for Rivet &lt;?  and ?&gt; processing tags.  Using
  	    this command, you can use one .rvt file from another.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">headers</span>  <span style="font-family:monospace; text-decoration:underline">redirect</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>uri</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Redirect from the current page to a new
  	    URI. <span class="emphasis"><em>Must</em></span> be done in the first block
  	    of TCL code.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">headers</span>  <span style="font-family:monospace; text-decoration:underline">setcookie</span> <span style="font-family:monospace; text-decoration:underline">-name</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>cookie-name</tt></i></span> <span style="font-family:monospace; text-decoration:underline">-value</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>cookie-value</tt></i></span> ?<span style="font-family:monospace; text-decoration:underline">-expires <i><tt>date/time</tt></i></span>? ?<span style="font-family:monospace; text-decoration:underline">-domain <i><tt>domain</tt></i></span>? ?<span style="font-family:monospace; text-decoration:underline">-path <i><tt>path</tt></i></span>? ?<span style="font-family:monospace; text-decoration:underline">-secure</span>?</span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    This command is for setting cookies for the server to send
  	    to the client.  <tt><span style="text-decoration:underline">cookie-name</span></tt> is the name
  	    of the cookie, <tt><span style="text-decoration:underline">cookie-value</span></tt> is the data
  	    associated with the cookie.  <tt><span style="text-decoration:underline">-expires</span></tt>
  	    sets an expiration date for the cookie, and must be in the
  	    format <tt>'DD-Mon-YY HH:MM:SS'</tt>,
  	    <tt><span style="text-decoration:underline">-path</span></tt> sets the path for which the cookie
  	    is valid, and <tt><span style="text-decoration:underline">-secure</span></tt> specifies that the
  	    cookie is only to be transmitted if the connection is
  	    secure (HTTPS).
  	  </div></div></dd><dt><span class="term"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">headers</span>  <span style="font-family:monospace; text-decoration:underline">type</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>content-type</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    This command sets the <tt>Content-type</tt>
  	    header returned by the script, which is useful if you wish
  	    to send content other than HTML with Rivet - PNG or jpeg
  	    images, for example.
  	  </div></div></dd><dt><span class="term"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">headers</span>  <span style="font-family:monospace; text-decoration:underline">set</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>headername</tt></i></span> <span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Set arbitrary header names and values.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">makeurl</span>  <span style="font-family:monospace; text-decoration:underline"><i><tt>filename</tt></i></span></span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    Create a self referencing URL from a filename.  For example:
  	    <div style="background:#bbffbb ; width:80ex ; margin: 2ex ;      padding: 1ex; border: solid black 1px ; white-space: pre;      font-family:monospace ; " class="programlisting">makeurl /tclp.gif</div>
  	    returns
  	    <tt>http://[hostname]:[port]/tclp.gif</tt>.
  	    where hostname and port are the hostname and port of the
  	    server in question.
  	  </div></div></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="directives.html">Prev</a>�</td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right">�<a accesskey="n" href="help.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Rivet Apache Directives�</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">�Resources - How to Get Help</td></tr></table></div></body></html>
  
  
  
  1.1                  tcl-rivet/doc/html/directives.html
  
  Index: directives.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><title>Rivet Apache Directives</title><meta name="generator" content="DocBook XSL Stylesheets V1.50.0"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="index.html" title="Apache Rivet"><link rel="previous" href="index.html" title="Apache Rivet"><link rel="next" href="commands.html" title="Rivet Tcl Commands and Variables"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Rivet Apache Directives</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="commands.html">Next</a></td></tr></table><hr></div><div class="section"><div class="titlepage"><div><hr><h2 class="title" style="clear: both"><a name="directives"></a>Rivet Apache Directives</h2></div></div><p style="width:90%">
        These directives are used within the Apache httpd server
        configuration files to modify Apache Rivet's behaviour.
      </p><div class="variablelist"><dl><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">RivetServerConf</span>  (<span style="font-family:monospace; text-decoration:underline">CacheSize</span> | <span style="font-family:monospace; text-decoration:underline">GlobalInitScript</span> | <span style="font-family:monospace; text-decoration:underline">ChildInitScript</span> | <span style="font-family:monospace; text-decoration:underline">ChildExitScript</span> | <span style="font-family:monospace; text-decoration:underline">BeforeScript</span> | <span style="font-family:monospace; text-decoration:underline">AfterScript</span> | <span style="font-family:monospace; text-decoration:underline">ErrorScript</span> | <span style="font-family:monospace; text-decoration:underline">UploadDirectory</span> | <span style="font-family:monospace; text-decoration:underline">UploadMaxSize</span> | <span style="font-family:monospace; text-decoration:underline">UploadFilesToVar</span> | <span style="font-family:monospace; text-decoration:underline">SeperateVirtualInterps</span>)</span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex"><span style="font-family:monospace"><b>RivetServerConf</b></span> specifies a global
  	    option that is valid for the whole server.
  	  </div><div class="variablelist"><dl><dt><span class="term">
  		<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">CacheSize</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>size</tt></i></span></span></div>
  	      </span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		  Sets the size of the internal page cache, where
  		  <tt><span style="text-decoration:underline"><i><tt>size</tt></i></span></tt> is
  		  the number of byte-compiled pages to be cached for
  		  future use.  Default is
  		  <span style="font-family:monospace"><b>MaxRequestsPerChild</b></span> / 5, or 50,
  		  if <span style="font-family:monospace"><b>MaxRequestsPerChild</b></span> is 0.
  		</div></div></dd><dt><span class="term">
  		<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">GlobalInitScript</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>script</tt></i></span></span></div>
  	      </span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		  Tcl script that is run when each interpreter is
  		  initialized. <i><tt><tt><span style="text-decoration:underline">script</span></tt></tt></i>
  		  is an actual Tcl script, so to run a file, you would
  		  do:
  
  		  <div style="background:#bbffbb ; width:80ex ; margin: 2ex ;      padding: 1ex; border: solid black 1px ; white-space: pre;      font-family:monospace ; " class="programlisting">Rivet_Script GlobalInitScript &quot;source /var/www/foobar.tcl&quot;</div>
  		</div></div></dd><dt><span class="term">
  		<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">ChildInitScript</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>script</tt></i></span></span></div>
  	      </span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		  Script to be evaluated when each Apache child
  		  process is initialized.  This is the recommended
  		  place to load modules, create global variables, open
  		  connections to other facilities (such as databases)
  		  and so on.
  		</div></div></dd><dt><span class="term">
  		<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">ChildExitScript</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>script</tt></i></span></span></div>
  	      </span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		  Script to be evaluated when each Apache child
  		  process exits.  This is the logical place to clean
  		  up resources created in
  		  <tt><span style="text-decoration:underline">ChildInitScript</span></tt>.
  		</div></div></dd><dt><span class="term">
  		<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">BeforeScript</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>script</tt></i></span></span></div>
  	      </span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		  Script to be evaluated before each server parsed
  		  (.rvt) page.  This can be used to create a standard
  		  header, for instance.  It could also be used to load
  		  code that you need for every page, if you don't want
  		  to put it in a <tt><span style="text-decoration:underline">GlobalInitScript</span></tt>
  		  <tt><span style="text-decoration:underline">ChildInitScript</span></tt> when you are first
  		  developing a web site.
  		  <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
  		    This code is evaluated at the global level, not
  		    inside the request namespace where pages are
  		    evaluated.
  		  </div>
  		</div></div></dd><dt><span class="term">
  		<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">AfterScript</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>script</tt></i></span></span></div>
  	      </span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		  Script to be called after each server parsed (.rvt) page.
  		</div></div></dd><dt><span class="term">
  		<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">ErrorScript</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>script</tt></i></span></span></div>
  	      </span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		  When Rivet encounters an error in a script, it
  		  constructs an HTML page with some information about
  		  the error, and the script that was being
  		  evaluated. If an <tt><span style="text-decoration:underline">ErrorScript</span></tt> is
  		  specified, it is possible to create custom error
  		  pages.  This may be useful if you want to make sure
  		  that users never view your source code.
  		</div></div></dd><dt><span class="term">
  		<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">UploadDirectory</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>directory</tt></i></span></span></div>
  	      </span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">Directory to place uploaded files.</div></div></dd><dt><span class="term">
  		<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">UploadMaxSize</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>size</tt></i></span></span></div>
  	      </span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">Maximum size for uploaded files.</div></div></dd><dt><span class="term">
  		<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">UploadFilesToVar</span> (<span style="font-family:monospace; text-decoration:underline">yes</span> | <span style="font-family:monospace; text-decoration:underline">no</span>)</span></div>
  	      </span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		  This option controls whether it is possible to
  		  upload files to a Tcl variable.  If you have a size
  		  limit, and don't have to deal with large files, this
  		  might be more convenient than sending the data to a
  		  file on disk.
  		</div></div></dd><dt><span class="term">
  		<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">SeperateVirtualInterps</span> (<span style="font-family:monospace; text-decoration:underline">yes</span> | <span style="font-family:monospace; text-decoration:underline">no</span>)</span></div>
  	      </span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		  If on, Rivet will create a seperate Tcl interpreter
  		  for each Apache virtual host.  This is useful in an
  		  ISP type situation where it is desirable to seperate
  		  clients into seperate interpreters, so that they
  		  don't accidentally interfere with one another.
  		</div></div></dd></dl></div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">RivetDirConf</span>  (<span style="font-family:monospace; text-decoration:underline">BeforeScript</span> | <span style="font-family:monospace; text-decoration:underline">AfterScript</span> | <span style="font-family:monospace; text-decoration:underline">ErrorScript</span> | <span style="font-family:monospace; text-decoration:underline">UploadDirectory</span>)</span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    These options are the same as for
  	    <span style="font-family:monospace"><b>RivetServerConf</b></span>, except that they are
  	    only valid for the directory where they are specified, and
  	    its subdirectories.  It may be specified in
  	    <span style="font-family:monospace"><b>Directory</b></span> sections, as well as in
  	    <tt>.htaccess</tt> files.
  	  </div></div></dd><dt><span class="term">
  	  <div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;  word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">RivetUserConf</span>  (<span style="font-family:monospace; text-decoration:underline">BeforeScript</span> | <span style="font-family:monospace; text-decoration:underline">AfterScript</span> | <span style="font-family:monospace; text-decoration:underline">ErrorScript</span> | <span style="font-family:monospace; text-decoration:underline">UploadDirectory</span>)</span></div>
  	</span></dt><dd><div style="padding:4 ; margin-top:3 ;  margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    These options are the same as for
  	    <span style="font-family:monospace"><b>RivetServerConf</b></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="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a>�</td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right">�<a accesskey="n" href="commands.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Apache Rivet�</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">�Rivet Tcl Commands and Variables</td></tr></table></div></body></html>
  
  
  
  1.1                  tcl-rivet/doc/html/help.html
  
  Index: help.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><title>Resources - How to Get Help</title><meta name="generator" content="DocBook XSL Stylesheets V1.50.0"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="index.html" title="Apache Rivet"><link rel="previous" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="next" href="internals.html" title="Rivet Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Resources - How to Get Help</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="commands.html">Prev</a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="internals.html">Next</a></td></tr></table><hr></div><div class="section"><div class="titlepage"><div><hr><h2 class="title" style="clear: both"><a name="help"></a>Resources - How to Get Help</h2></div></div><div class="section"><div class="titlepage"><div><h3 class="title"><a name="id5347126"></a>Mailing Lists</h3></div></div><p style="width:90%">
  	The Rivet mailing list is the first place you should turn for
  	help, if you haven't found the solution to your problem in the
  	documentation.  Send email to
  	<tt>&lt;<a href="mailto:rivet-user@tcl.apache.org">rivet-user@tcl.apache.org</a>&gt;</tt>.  If you have a
  	question, idea, or comment about the Rivet code itself, please
  	send us email at <tt>&lt;<a href="mailto:rivet-dev@tcl.apache.org">rivet-dev@tcl.apache.org</a>&gt;</tt>.  To
  	subscribe to either list, post email to
  	<tt>&lt;<a href="mailto:rivet-list-subscribe@tcl.apache.org">rivet-<i><tt>list</tt></i>-subscribe@tcl.apache.org</a>&gt;</tt>.
        </p><p style="width:90%">
  	The mailing list archives are available at <a href="http://www.apachelabs.org" target="_top">http://www.apachelabs.org</a>
        </p></div><div class="section"><div class="titlepage"><div><h3 class="title"><a name="id5347172"></a>Web Sites</h3></div></div><p style="width:90%">
  	There are several web sites that cover Apache and Tcl
  	extensively.
        </p><div class="itemizedlist"><ul type="disc"><li><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    <a href="http://tcl.apache.org" target="_top">http://tcl.apache.org</a> is the home for the
  	    Apache Tcl project.  Go there for the latest versions of
  	    our software (if you aren't reading these pages off of the
  	    site!).
  	  </div></li><li><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    <a href="http://httpd.apache.org/docs/" target="_top">http://httpd.apache.org/docs/</a> is the first
  	    place to go for questions about the Apache web server.
  	  </div></li><li><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    <a href="http://www.tcl.tk/" target="_top">http://www.tcl.tk/</a> is the cannonical site
  	    for Tcl information.
  	  </div></li><li><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  	    <a href="http://wiki.tcl.tk" target="_top">http://wiki.tcl.tk</a> is the Tcl'ers Wiki, a
  	    free-form place to search for answers and ask for help.
  	  </div></li></ul></div></div><div class="section"><div class="titlepage"><div><h3 class="title"><a name="id5347254"></a>Bug Tracking System</h3></div></div><p style="width:90%">
  	Apache Rivet uses the Apache Bug Tracking system at <a href="http://nagoya.apache.org/bugzilla/" target="_top">http://nagoya.apache.org/bugzilla/</a>.  Here,
  	you can report problems, or check and see if existing issues
  	are already known and being dealt with.
        </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="commands.html">Prev</a>�</td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right">�<a accesskey="n" href="internals.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Rivet Tcl Commands and Variables�</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">�Rivet Internals</td></tr></table></div></body></html>
  
  
  
  1.1                  tcl-rivet/doc/html/index.html
  
  Index: index.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><title>Apache Rivet</title><meta name="generator" content="DocBook XSL Stylesheets V1.50.0"><link rel="home" href="index.html" title="Apache Rivet"><link rel="next" href="directives.html" title="Rivet Apache Directives"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Apache Rivet</th></tr><tr><td width="20%" align="left">�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="directives.html">Next</a></td></tr></table><hr></div><div class="article"><div class="titlepage"><div><h1 class="title"><a name="id5343475"></a>Apache Rivet</h1></div><div><div class="author"><h3 class="author">David Welton</h3></div></div><div><div class="author"><h3 class="author">Damon Courtney</h3></div></div><div><p class="copyright">Copyright � 2002 Apache Software Foundation</p></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="index.html#id5341909">Apache Rivet Installation</a></dt><dt><a href="directives.html">Rivet Apache Directives</a></dt><dt><a href="commands.html">Rivet Tcl Commands and Variables</a></dt><dt><a href="help.html">Resources - How to Get Help</a></dt><dd><dl><dt><a href="help.html#id5347126">Mailing Lists</a></dt><dt><a href="help.html#id5347172">Web Sites</a></dt><dt><a href="help.html#id5347254">Bug Tracking System</a></dt></dl></dd><dt><a href="internals.html">Rivet Internals</a></dt><dd><dl><dt><a href="internals.html#id5347294">Initialization</a></dt><dt><a href="internals.html#id5347331">RivetChan</a></dt><dt><a href="internals.html#id5347360">Page Parsing, Execution and Cacheing</a></dt></dl></dd><dt><a href="upgrading.html">Upgrading from mod_dtcl or NeoWebScript</a></dt><dd><dl><dt><a href="upgrading.html#id5347439">mod_dtcl</a></dt><dt><a href="upgrading.html#id5347455">NeoWebScript</a></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><hr><h2 class="title" style="clear: both"><a name="id5341909"></a>Apache Rivet Installation</h2></div></div><div class="procedure"><ol type="1"><li><p class="title"><b>Check Dependencies</b></p><p style="width:90%">
  	  To install Rivet, you will need Tcl 8.2 or greater and
  	  Apache 1.3.xx.  It is known to run on Linux, FreeBSD,
  	  OpenBSD, and Solaris and HPUX.  Windows NT is also possible
  	  - please see the directions in the distribution.
  	</p></li><li><p class="title"><b>Get Rivet</b></p><p style="width:90%">
  	  Download the sources at <a href="http://tcl.apache.org/rivet/download" target="_top">http://tcl.apache.org/rivet/download</a>.  Currently
  	  the only way to obtain Rivet.  In the future, we hope to
  	  have a FreeBSD port, Debian package, RPM's, and windows
  	  binaries.
  	</p></li><li><p class="title"><b>Get and Install Apache Sources</b></p><p style="width:90%">
  	  If you don't have them, or if you want to build Rivet as a
  	  static (built in) part of the Apache web server, you need
  	  the source code to Apache, which is available from <a href="http://httpd.apache.org/" target="_top">http://httpd.apache.org/</a>.  Otherwise, you don't need
  	  to perform this step.  Infact, we recommend that you build
  	  Rivet as a shared object, and therefore, build it seperately
  	  from Apache.
  	</p></li><li><p class="title"><b>Uncompress Sources</b></p><p style="width:90%">
  	  We will assume that you have Apache installed at this point.
  	  You must uncompress the Rivet sources in the directory where you
  	  wish to compile them.
  
  	  </p><div style="background:#bbffbb ; width:80ex ; margin: 2ex ;      padding: 1ex; border: solid black 1px ; white-space: pre;      font-family:monospace ; " class="programlisting">gunzip tcl-rivet-X.X.X.tar.gz
  tar -xvf tcl-rivet-X.X.X.tar.gz</div><p style="width:90%">
  
  	</p></li><li><p class="title"><b>Building Rivet</b></p><p style="width:90%">
  	  Rivet uses a unique build system which we created especially
  	  for this project.  It utilizes the information included in
  	  Apache and Tcl regarding their configurations, in order to
  	  compile itself via a series of Tcl scripts, which are
  	  located in the <tt>buildscripts/</tt> directory.
  	</p><ol type="a"><li><p class="title"><b>Edit src/make.tcl</b></p><p style="width:90%">
  	      It may be necessary to edit
  	      <tt>src/make.tcl</tt> by hand in order to
  	      set certain options.  Try the next step first, and see
  	      if it's successful.
  	    </p></li><li><p style="width:90%">At this point, you are ready to run the build
  	      system:</p><div style="background:#bbffbb ; width:80ex ; margin: 2ex ;      padding: 1ex; border: solid black 1px ; white-space: pre;      font-family:monospace ; " class="programlisting">cd src/
  ./make.tcl <i><tt>option</tt></i></div><p style="width:90%">where <i><tt>option</tt></i> can be
  	      either <tt><span style="text-decoration:underline">shared</span></tt> or
  	      <tt><span style="text-decoration:underline">static</span></tt>.
  	    </p></li><li><p class="title"><b>Install</b></p><p style="width:90%">
  	      Now, you are ready to run the <span style="font-family:monospace"><b>./make
  		install</b></span> command to install the resulting
  	      files.  This should copy the shared object (like
  	      <tt>mod_rivet.so</tt>, if one was
  	      successfully created, into Apache's
  	      <tt>libexec</tt> directory, as well as
  	      install some support scripts and various code.
  	    </p></li></ol></li><li><p class="title"><b>Apache Configuration Files</b></p><p style="width:90%">
  	  Rivet is relatively easy to configure - we start off by
  	  adding the module itself:
  	</p><div style="background:#bbffbb ; width:80ex ; margin: 2ex ;      padding: 1ex; border: solid black 1px ; white-space: pre;      font-family:monospace ; " class="programlisting">LoadModule rivet_module	<i><tt>/usr/lib/apache/1.3/mod_rivet.so</tt></i></div><p style="width:90%">
  	  This tells Apache to load the Rivet shared object, wherever
  	  it happens to reside on your file system.  Now we have to
  	  tell Apache what kind of files are &quot;Rivet&quot; files and how to
  	  process them:
  	</p><div style="background:#bbffbb ; width:80ex ; margin: 2ex ;      padding: 1ex; border: solid black 1px ; white-space: pre;      font-family:monospace ; " class="programlisting">AddType application/x-httpd-rivet .rvt
  AddType application/x-rivet-tcl .tcl</div><p style="width:90%">
  	  These tell Apache to process files with the
  	  <tt>.rvt</tt> and <tt>.tcl</tt>
  	  extensions as Rivet files.
  	</p><p style="width:90%">
  	  For other directives that Rivet provides for Apache
  	  configuration, please see <a href="directives.html#directives" title="Rivet Apache Directives">the section called &#8220;Rivet Apache Directives&#8221;</a>.
  	</p></li></ol></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">�</td><td width="20%" align="center">�</td><td width="40%" align="right">�<a accesskey="n" href="directives.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">�</td><td width="20%" align="center">�</td><td width="40%" align="right" valign="top">�Rivet Apache Directives</td></tr></table></div></body></html>
  
  
  
  1.1                  tcl-rivet/doc/html/internals.html
  
  Index: internals.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><title>Rivet Internals</title><meta name="generator" content="DocBook XSL Stylesheets V1.50.0"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="index.html" title="Apache Rivet"><link rel="previous" href="help.html" title="Resources - How to Get Help"><link rel="next" href="upgrading.html" title="Upgrading from mod_dtcl or NeoWebScript"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Rivet Internals</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="help.html">Prev</a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="upgrading.html">Next</a></td></tr></table><hr></div><div class="section"><div class="titlepage"><div><hr><h2 class="title" style="clear: both"><a name="internals"></a>Rivet Internals</h2></div></div><p style="width:90%">
        This section easily falls out of date, as new code is added, old
        code is removed, and changes are made.  The best place to look
        is the source code itself.  If you are interested in the changes
        themselves FIXME.
      </p><div class="section"><div class="titlepage"><div><h3 class="title"><a name="id5347294"></a>Initialization</h3></div></div><p style="width:90%">
  	When Apache is started, (or when child Apache processes are
  	started if a threaded Tcl is used),
  	<tt>Rivet_InitTclStuff</tt> is called, which
  	creates a new interpreter, or one interpreter per virtual
  	host, depending on the configuration. It also initializes
  	various things, like the RivetChan
  	channel system, creates the Rivet-specific Tcl commands, and
  	executes Rivet's <tt>init.tcl</tt>.  The caching
  	system is also set up, and if there is a
  	<span style="font-family:monospace"><b>GlobalInitScript</b></span>, it is run.
        </p></div><div class="section"><div class="titlepage"><div><h3 class="title"><a name="id5347331"></a>RivetChan</h3></div></div><p style="width:90%">
  	The RivetChan system was created in
  	order to have an actual Tcl channel that we could redirect
  	standard output to.  This lets us use, for instance, the
  	regular <span style="font-family:monospace"><b>puts</b></span> command in .rvt pages.  It
  	works by creating a channel that buffers output, and, at
  	predetermined times, passes it on to Apache's IO system.
  	Tcl's regular standard output is replaced with an instance of
  	this channel type, so that, by default, output will go to the
  	web page.
        </p></div><div class="section"><div class="titlepage"><div><h3 class="title"><a name="id5347360"></a>Page Parsing, Execution and Cacheing</h3></div></div><p style="width:90%">
  	When a Rivet page is requested, it is transformed into an
  	ordinary Tcl script by parsing the file for the &lt;? ?&gt;
  	processing instruction tags.  Everything outside these tags
  	becomes a large <span style="font-family:monospace"><b>puts</b></span> statement, and
  	everything inside them remains Tcl code.
        </p><p style="width:90%">
  	Each .rvt file is evaluated in its own
  	<tt>::request</tt> namespace, so that it is not
  	necessary to create and tear down interpreters after each
  	page.  By running in its own namespace, though, each page will
  	not run afoul of local variables created by other scripts,
  	because they will be deleted automatically when the namespace
  	goes away after Apache finishes handling the request.
        </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
  	One current problem with this system is that while variables
  	are garbage collected, file handles are not, so that it is
  	very important that Rivet script authors make sure to close
  	all the files they open.
        </div><p style="width:90%">
  	After a script has been loaded and parsed into it's &quot;pure Tcl&quot;
  	form, it is also cached, so that it may be used in the future
  	without having to reload it (and re-parse it) from the disk.
  	The number of scripts stored in memory is configurable.  This
  	feature can significantly improve performance.
        </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="help.html">Prev</a>�</td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right">�<a accesskey="n" href="upgrading.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Resources - How to Get Help�</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">�Upgrading from mod_dtcl or NeoWebScript</td></tr></table></div></body></html>
  
  
  
  1.1                  tcl-rivet/doc/html/upgrading.html
  
  Index: upgrading.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><title>Upgrading from mod_dtcl or NeoWebScript</title><meta name="generator" content="DocBook XSL Stylesheets V1.50.0"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="index.html" title="Apache Rivet"><link rel="previous" href="internals.html" title="Rivet Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Upgrading from mod_dtcl or NeoWebScript</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="internals.html">Prev</a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�</td></tr></table><hr></div><div class="section"><div class="titlepage"><div><hr><h2 class="title" style="clear: both"><a name="upgrading"></a>Upgrading from mod_dtcl or NeoWebScript</h2></div></div><p style="width:90%">
        Rivet is a break from the past, in that we, the authors, have
        attempted to take what we like best about our past efforts, and
        leave out or change things we no longer care for.  Backwards
        compatibility was not a primary goal when creating Rivet, but we
        do provide this information which may be of use to those wishing
        to upgrade from mod_dtcl or NWS installations.
      </p><div class="section"><div class="titlepage"><div><h3 class="title"><a name="id5347439"></a>mod_dtcl</h3></div></div><p style="width:90%">
  	Rivet was originally based on the dtcl code, but it has
  	changed (improved!) quite a bit.  The concepts remain the
  	same, but many of the commands have changed.
        </p></div><div class="section"><div class="titlepage"><div><h3 class="title"><a name="id5347455"></a>NeoWebScript</h3></div></div><p style="width:90%">TODO</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="internals.html">Prev</a>�</td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right">�</td></tr><tr><td width="40%" align="left" valign="top">Rivet Internals�</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">�</td></tr></table></div></body></html>
  
  
  
  1.1                  tcl-rivet/doc/packages/dio/dio.html
  
  Index: dio.html
  ===================================================================
  <html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><title>DIO</title><meta name="generator" content="DocBook XSL Stylesheets V1.50.0"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article"><div class="titlepage"><div><h1 class="title"><a name="id5329831"></a>DIO</h1></div><div><p class="releaseinfo">
        $Id: dio.xml,v 1.7 2002/07/15 06:18:48 davidw Exp $
      </p></div><div><p class="copyright">Copyright � 2002 Apache Software Foundation</p></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="#id5328012">DIO SECTION TITLE</a></dt></dl></div><div class="section"><div class="titlepage"><div><hr><h2 class="title" style="clear: both"><a name="id5328012"></a>DIO SECTION TITLE</h2></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="#id5332198">DIO</a> - Database Interface Objects</dt></dl></div><div class="refentry"><a name="id5332198"></a><div class="titlepage"></div><div class="refnamediv"><h2 align="center">DIO &#8212; Database Interface Objects</h2></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">::DIO::handle</span>  <span style="font-family:monospace; text-decoration:underline"><i><tt>interface</tt></i></span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span>? ?<span style="font-family:monospace; text-decoration:underline">-option</span> | <span style="font-family:monospace; text-decoration:underline"><i><tt>option</tt></i></span> | <span style="font-family:monospace; text-decoration:underline">-option</span> | <span style="font-family:monospace; text-decoration:underline"><i><tt>option</tt></i></span> | <span style="font-family:monospace; text-decoration:underline">...</span>?</span></div></div><div class="refsect1"><h2>Description</h2><blockquote>
  	  <span style="font-family:monospace"><b>DIO</b></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
  	  databases support the exact same syntaxes, keeping code
  	  generic between databases is left to the abilities of the
  	  programmer.  DIO simply provides a way to keep the Tcl
  	  interface generic.
  	</blockquote><blockquote>
  	  <tt><span style="text-decoration:underline">interface</span></tt> - The name of the database
  	  interface.  Currently supported interfaces are
  	  <tt><span style="text-decoration:underline">Postgresql</span></tt> and <tt><span style="text-decoration:underline">Mysql</span></tt>.
  	</blockquote><blockquote>If <tt><span style="text-decoration:underline">objectName</span></tt> is specified, DIO creates
  	  an object of that name.  If there is no
  	  <tt><span style="text-decoration:underline">objectName</span></tt> given, DIO will automatically
  	  generate a unique object ID
  	</blockquote></div><div class="refsect1"><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%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-host</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>hostname</tt></i></span>?</span></div><div style=" margin:1ex ; 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%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-port</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>portNumber</tt></i></span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">The port number to connect to on <tt><span style="text-decoration:underline">hostname</span></tt>.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-user</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>username</tt></i></span></span></div><div style=" margin:1ex ; 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%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-pass</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>password</tt></i></span></span></div><div style=" margin:1ex ; 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%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-db</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>database</tt></i></span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		The name of the database to connect to.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-table</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>tableName</tt></i></span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		The default table to use when using built-in commands
  		for storing and fetching.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-keyfield</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>keyFieldname</tt></i></span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		The default field to use as the primary key when using
  		built-in commands for storing and fetching.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-autokey</span> <span style="font-family:monospace; text-decoration:underline">1</span> | <span style="font-family:monospace; text-decoration:underline">0</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		If this option is set to 1, DIO will attempt to
  		determine an automatic key for
  		<tt><span style="text-decoration:underline">keyField</span></tt> when storing and fetching.
  		In most databases, this requires that the
  		<tt><span style="text-decoration:underline">sequence</span></tt> also be specified.  In the
  		case of MySQL, where sequences do not exist, autokey
  		must be used in conjunction with a table which has a
  		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%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-sequence</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>sequenceName</tt></i></span></span></div><div style=" margin:1ex ; 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"><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%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">array</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>request</tt></i></span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Execute <tt><span style="text-decoration:underline">request</span></tt> as a SQL query and
  		create an array from the first record found.  The
  		array is set with the fields of the table and the
  		values of the record found.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">autokey</span> ?<span style="font-family:monospace; text-decoration:underline">value</span> | <span style="font-family:monospace; text-decoration:underline">boolean</span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current autokey value.  If
  		<tt><span style="text-decoration:underline">value</span></tt> is specified, it sets a new
  		value for the autokey option.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">close</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">	      Close the current database connection.  This command is
  		automatically called when the DIO object is destroyed.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">db</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current database.  If
  		<tt><span style="text-decoration:underline">value</span></tt> is specified, it sets a new
  		value for the database.  In most cases, the DIO object
  		will automatically connect to the new database when
  		this option is changed.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">delete</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>key</tt></i></span> ?<span style="font-family:monospace; text-decoration:underline">-option</span> | <span style="font-family:monospace; text-decoration:underline"><i><tt>option</tt></i></span> | <span style="font-family:monospace; text-decoration:underline">...</span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Delete a record from the database where the primary
  		key matches <tt><span style="text-decoration:underline">key</span></tt>.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">destroy</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Destroy the DIO object.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">errorinfo</span> ?<span style="font-family:monospace; text-decoration:underline">value</span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex"><tt><span style="text-decoration:underline">errorinfo</span></tt> contains the value of
  		the last error, if any, to occur while executing a
  		request.  When a request fails for any reason, this
  		variable is filled with the error message from the SQL
  		interface package.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">exec</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>request</tt></i></span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Execute <tt><span style="text-decoration:underline">request</span></tt> as an SQL query.
  		When the exec command is called, the query is
  		executed, and a DIO result object is returned.  From
  		there, the result object can be used to obtain
  		information about the query status and records in a
  		generic way.  See <a href="#resultobj" title="Result Object Commands">Result
  		  Object Commands</a>
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">fetch</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>key</tt></i></span> <span style="font-family:monospace; text-decoration:underline"><i><tt>arrayName</tt></i></span> ?<span style="font-family:monospace; text-decoration:underline">-option</span> | <span style="font-family:monospace; text-decoration:underline"><i><tt>option</tt></i></span> | <span style="font-family:monospace; text-decoration:underline">...</span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Fetch a record from the database where the primary key
  		matches <tt><span style="text-decoration:underline">key</span></tt> and store the result in
  		an array called <tt><span style="text-decoration:underline">arrayName</span></tt>.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">host</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current host value.  If
  		<tt><span style="text-decoration:underline">value</span></tt> is specified, it sets a new
  		value for the 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%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">keyfield</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current keyfield.  If
  		<tt><span style="text-decoration:underline">value</span></tt> is specified, it sets a new
  		value for the keyfield.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">keys</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>pattern</tt></i></span>? ?<span style="font-family:monospace; text-decoration:underline">-option</span> | <span style="font-family:monospace; text-decoration:underline"><i><tt>option</tt></i></span> | <span style="font-family:monospace; text-decoration:underline">...</span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return a list of keys in the database.  If
  		<tt><span style="text-decoration:underline">pattern</span></tt> is specified, only the keys
  		matching will be returned.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">lastkey</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the last key that was used from
  		<tt><span style="text-decoration:underline">sequence</span></tt>.  If sequence has not been
  		specified, this command returns an empty string.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">list</span> <span style="font-family:monospace; text-decoration:underline">request</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Execute <tt><span style="text-decoration:underline">request</span></tt> as a SQL query and
  		return a list of the first column of each record
  		found.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">nextkey</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">Increment <tt><span style="text-decoration:underline">sequence</span></tt> and return the
  		next key to be used.  If sequence has not been
  		specified, this command returns an empty
  		string.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">open</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">Open the connection to the current database.  This
  		command is automatically called from any command which
  		accesses the database.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">pass</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current pass value.  If
  		<tt><span style="text-decoration:underline">value</span></tt> is specified, it sets a new
  		value for the password.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">port</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">Return the current port value.  If <tt><span style="text-decoration:underline">value</span></tt> is
  		specified, it sets a new value for the port.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">sequence</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current sequence value.  If <tt><span style="text-decoration:underline">value</span></tt> is
  		specified, it sets a new value for the sequence.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">store</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>arrayName</tt></i></span> ?<span style="font-family:monospace; text-decoration:underline">-option</span> | <span style="font-family:monospace; text-decoration:underline"><i><tt>option</tt></i></span> | <span style="font-family:monospace; text-decoration:underline">...</span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Store <tt><span style="text-decoration:underline">arrayName</span></tt> in the database.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">string</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>request</tt></i></span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Execute <tt><span style="text-decoration:underline">request</span></tt> as a SQL query and
  		return a string containing the first record
  		found.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">table</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">Return the current table.  If
  		<tt><span style="text-decoration:underline">value</span></tt> is specified, it sets a new
  		value for the table.</div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>objectName</tt></i></span> <span style="font-family:monospace; text-decoration:underline">user</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current user value.  If
  		<tt><span style="text-decoration:underline">value</span></tt> is specified, it sets a new
  		value for the user.
  	      </div></div></dd></dl></div></div><div class="refsect1"><a name="resultobj"></a><h2>Result 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%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>resultObj</tt></i></span> <span style="font-family:monospace; text-decoration:underline">autocache</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current autocache value.  If
  		<tt><span style="text-decoration:underline">value</span></tt> is specified, it sets a new
  		value for autocache.
  	      </div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		If autocache is true, the result object will
  		automatically cache rows as you use them.  This means
  		that the first time you execute a forall command, each
  		row is being cached in the result object itself and
  		will no longer need to access the SQL result.
  		<span class="emphasis"><em>Default is true</em></span>.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>resultObj</tt></i></span> <span style="font-family:monospace; text-decoration:underline">cache</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Cache the results of the current SQL result in the
  		result object itself.  This means that even if the
  		database connection is closed and all the results of
  		the DIO object are lost, this result object will still
  		maintain a cached copy of its records.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>resultObj</tt></i></span> <span style="font-family:monospace; text-decoration:underline">errorcode</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current errorcode value.  If <tt><span style="text-decoration:underline">value</span></tt>
  		is specified, it sets a new value for errorcode.
  	      </div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		<tt><span style="text-decoration:underline">errorcode</span></tt> contains the current code from the
  		SQL database which specifies the result of the query
  		statement which created this object.  This variable
  		can be used to determine the success or failure of a
  		query.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>resultObj</tt></i></span> <span style="font-family:monospace; text-decoration:underline">errorinfo</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current errorinfo value.  If <tt><span style="text-decoration:underline">value</span></tt>
  		is specified, it sets a new value for errorinfo.
  	      </div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		If an error occurred during the SQL query, DIO
  		attempts to set the value of <tt><span style="text-decoration:underline">errorinfo</span></tt> to the
  		resulting error message.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>resultObj</tt></i></span> <span style="font-family:monospace; text-decoration:underline">fields</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current fields value.  If
  		<tt><span style="text-decoration:underline">value</span></tt> is specified, it sets a new
  		value for fields.
  	      </div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		<tt><span style="text-decoration:underline">fields</span></tt> contains the list of fields
  		used in this query.  The fields are in order of the
  		fields retrieved for each row.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>resultObj</tt></i></span> <span style="font-family:monospace; text-decoration:underline">forall</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>-type</tt></i></span> <span style="font-family:monospace; text-decoration:underline"><i><tt>varName</tt></i></span> <span style="font-family:monospace; text-decoration:underline"><i><tt>body</tt></i></span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Execute <tt><span style="text-decoration:underline">body</span></tt> over each record in the
  		result object.
  	      </div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">Types:</div><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%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-array</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		      Create varName as an array where the indexes are
  		      the names of the fields in the table and the
  		      values are the values of the current row.
  		    </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-keyvalue</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		      Set varName to a list containing key-value pairs
  		      of fields and values from the current
  		      row. (-field value -field value)
  		    </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-list</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		      Set varName to a list that contains the values
  		      of the current row.
  		    </div></div></dd></dl></div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>resultObj</tt></i></span> <span style="font-family:monospace; text-decoration:underline">next</span> <span style="font-family:monospace; text-decoration:underline"><i><tt>-type</tt></i></span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>varName</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Retrieve the next record in the result object.
  	      </div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">Types:</div><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%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-array</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		      Create varName as an array where the indexes are
  		      the names of the fields in the table and the
  		      values are the values of the current row.
  		    </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-keyvalue</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		      Set varName to a list containing key-value pairs
  		      of fields and values from the current
  		      row. (-field value -field value)
  		    </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">-list</span></span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		      Set varName to a list that contains the values
  		      of the current row.
  		    </div></div></dd></dl></div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>resultObj</tt></i></span> <span style="font-family:monospace; text-decoration:underline">numrows</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current numrows value.  If <tt><span style="text-decoration:underline">value</span></tt> is
  		specified, it sets a new value for numrows.
  	      </div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		<tt><span style="text-decoration:underline">numrows</span></tt> is the number of rows in this result.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>resultObj</tt></i></span> <span style="font-family:monospace; text-decoration:underline">resultid</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current resultid value.  If <tt><span style="text-decoration:underline">value</span></tt> is
  		specified, it sets a new value for resultid.
  	      </div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		<tt><span style="text-decoration:underline">resultid</span></tt> in most databases is the result
  		pointer which was given us by the database.  This
  		variable is not generic and should not really be used,
  		but it's there if you want it.
  	      </div></div></dd><dt></dt><dd><div style="padding:4 ; margin-top:3 ;    margin-bottom:3 ; width:75%"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ;    word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline"><i><tt>resultObj</tt></i></span> <span style="font-family:monospace; text-decoration:underline">rowid</span> ?<span style="font-family:monospace; text-decoration:underline"><i><tt>value</tt></i></span>?</span></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		Return the current rowid value.  If <tt><span style="text-decoration:underline">value</span></tt> is
  		specified, it sets a new value for rowid.
  	      </div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
  		<tt><span style="text-decoration:underline">rowid</span></tt> contains the number of the
  		current result record in the result object.  This
  		variable should not really be accessed outside of the
  		result object, but it's there if you want it.
  	      </div></div></dd></dl></div></div></div></div></div></body></html>
  
  
  
  1.25      +9 -4      tcl-rivet/src/make.tcl
  
  Index: make.tcl
  ===================================================================
  RCS file: /home/cvs/tcl-rivet/src/make.tcl,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- make.tcl	12 Sep 2002 05:50:04 -0000	1.24
  +++ make.tcl	29 Sep 2002 23:09:05 -0000	1.25
  @@ -66,7 +66,11 @@
   
   set XML_DOCS [glob [file join .. doc packages * *].xml]
   set HTML_DOCS [string map {.xml .html} $XML_DOCS]
  +set HTML "[file join .. doc html]/"
  +set XSLNOCHUNK [file join .. doc rivet-nochunk.xsl]
  +set XSLCHUNK [file join .. doc rivet-chunk.xsl]
   set XSL [file join .. doc rivet.xsl]
  +set XML [file join .. doc rivet.xml]
   
   # ------------
   
  @@ -202,8 +206,8 @@
   foreach doc $HTML_DOCS {
       set xml [string map {.html .xml} $doc]
       AddNode $doc {
  -	depends "$XSL $xml"
  -	sh "xsltproc --nonet -o $doc $XSL $xml"
  +	depends "$XSLNOCHUNK $xml"
  +	sh "xsltproc --nonet -o $doc $XSLNOCHUNK $xml"
       }
   }
   
  @@ -227,7 +231,8 @@
   # Create the HTML documentation from the XML document.
   
   AddNode distdoc {
  -    depends "$XSL $HTML_DOCS"
  +    depends "$XML $XSL $HTML_DOCS"
  +    sh "xsltproc --nonet -o $HTML $XSLCHUNK $XML"
   }
   
   # Create the distribution.  This is a bit unix-specific for the
  
  
  
  1.49      +2 -2      tcl-rivet/src/mod_rivet.c
  
  Index: mod_rivet.c
  ===================================================================
  RCS file: /home/cvs/tcl-rivet/src/mod_rivet.c,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- mod_rivet.c	8 Sep 2002 08:57:49 -0000	1.48
  +++ mod_rivet.c	29 Sep 2002 23:09:06 -0000	1.49
  @@ -628,7 +628,7 @@
       if(*(rsc->cache_size) < 0)
       {
   	if (ap_max_requests_per_child != 0) {
  -	    *(rsc->cache_size) = ap_max_requests_per_child / 2;
  +	    *(rsc->cache_size) = ap_max_requests_per_child / 5;
   	} else {
   	    *(rsc->cache_size) = 10; /* FIXME: Arbitrary number */
   	}
  
  
  

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