You are viewing a plain text version of this content. The canonical link for it is here.
Posted to site-cvs@tcl.apache.org by mx...@apache.org on 2018/01/17 22:31:49 UTC

svn commit: r1821429 [6/9] - in /tcl/site/rivet: ./ html/ manual3.0/ manual3.0/images/

Added: tcl/site/rivet/manual3.0/include.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual3.0/include.html?rev=1821429&view=auto
==============================================================================
--- tcl/site/rivet/manual3.0/include.html (added)
+++ tcl/site/rivet/manual3.0/include.html Wed Jan 17 22:31:48 2018
@@ -0,0 +1,5 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>include</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Apache Rivet 3.0"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="import_keyvalue_pairs.html" title="import_keyvalue_pairs"><link rel="next" href="incr0.html" title="incr0"></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">include</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="import_keyvalue_pairs.html"><img src="images/prev.png" alt="Prev"></a> </td><th width="60%" align="center">Rivet Tcl Commands and Variables</th><td width="20%" align="right"> <a accesskey="n" href="incr0.html"><img src="images/next.pn
 g" alt="Next"></a></td></tr></table></div><div class="refentry"><div class="refentry.separator"><hr></div><a name="include"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>include — includes a file into the output stream without modification.</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="border: 1px solid #282; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">::rivet::include</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>filename_name</code></em></span>?</div></div></div><div class="refsect1"><a name="idm1281"></a><h2>Description</h2><p style="width:90%">
+		    Include a file without parsing it for processing tags &lt;?
+		    and ?&gt;.  This is the best way to include an HTML file or
+		    any other static content.
+		</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="import_keyvalue_pairs.html"><img src="images/prev.png" alt="Prev"></a> </td><td width="20%" align="center"><a accesskey="u" href="commands.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right"> <a accesskey="n" href="incr0.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">import_keyvalue_pairs </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top"> incr0</td></tr></table></div></body></html>

Added: tcl/site/rivet/manual3.0/incr0.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual3.0/incr0.html?rev=1821429&view=auto
==============================================================================
--- tcl/site/rivet/manual3.0/incr0.html (added)
+++ tcl/site/rivet/manual3.0/incr0.html Wed Jan 17 22:31:48 2018
@@ -0,0 +1,13 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>incr0</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Apache Rivet 3.0"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="include.html" title="include"><link rel="next" href="inspect.html" title="inspect"></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">incr0</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="include.html"><img src="images/prev.png" alt="Prev"></a> </td><th width="60%" align="center">Rivet Tcl Commands and Variables</th><td width="20%" align="right"> <a accesskey="n" href="inspect.html"><img src="images/next.png" alt="Next"></a></td></tr></table></di
 v><div class="refentry"><div class="refentry.separator"><hr></div><a name="incr0"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>incr0 — increment a variable or set it to 1 if nonexistent.</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="border: 1px solid #282; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">incr0</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>varname</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>num</code></em></span>?</div></div></div><div class="refsect1"><a name="idm1295"></a><h2>Description</h2><p style="width:90%">
+                Increment a variable
+                <em class="replaceable"><code>varname</code></em> by
+                <em class="replaceable"><code>num</code></em>.  If the
+                variable doesn't exist, create it instead of returning an
+                error.
+            </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">Note</th></tr><tr><td align="left" valign="top"> 
+                incr0 functionality is provided by the native <span style="font-family:monospace"><span class="command"><strong>incr</strong></span></span> in 
+                Tcl &gt;= 8.5, therefore this command is deprecated and kept as an
+                interpreter alias only for compatibility. As such <span style="font-family:monospace"><span class="command"><strong>incr0</strong></span></span> 
+                wasn't moved to the ::rivet namespace and
+                it will be removed in future versions of Rivet.
+            </td></tr></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="include.html"><img src="images/prev.png" alt="Prev"></a> </td><td width="20%" align="center"><a accesskey="u" href="commands.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right"> <a accesskey="n" href="inspect.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">include </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top"> inspect</td></tr></table></div></body></html>

Added: tcl/site/rivet/manual3.0/index.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual3.0/index.html?rev=1821429&view=auto
==============================================================================
--- tcl/site/rivet/manual3.0/index.html (added)
+++ tcl/site/rivet/manual3.0/index.html Wed Jan 17 22:31:48 2018
@@ -0,0 +1,105 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Apache Rivet 3.0</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Apache Rivet 3.0"><link rel="next" href="installation.html" title="Apache Rivet 3.0 Installation"></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 3.0</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="installation.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="article"><div class="titlepage"><div><div><h2 class="title"><a name="idm1"></a>Apache Rivet 3.0</h2></div><div><div class="author"><h3 class="author"><span class="firstn
 ame">The Rivet Team</span></h3><div class="affiliation"><span class="orgname">The Apache Software Foundation<br></span><div class="address"><p><br>
+	            <code class="email">&lt;<a class="email" href="mailto:rivet-dev@tcl.apache.org">rivet-dev@tcl.apache.org</a>&gt;</code><br>
+	        </p></div></div></div></div><div><p class="copyright">Copyright © 2002-2017 Apache Software Foundation</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="index.html#introduction">Introduction to Apache Rivet version 3.0</a></span></dt><dt><span class="section"><a href="installation.html">Apache Rivet 3.0 Installation</a></span></dt><dt><span class="section"><a href="cmake.html">Building Rivet 3.0 with CMake</a></span></dt><dd><dl><dt><span class="section"><a href="cmake.html#idm185">CMake build procedure and examples</a></span></dt></dl></dd><dt><span class="section"><a href="directives.html">Apache Rivet 3.0 Configuration</a></span></dt><dd><dl><dt><span class="section"><a href="directives.html#idm200">Apache Rivet Configuration lines</a></span></dt><dt><span class="section"><a href="directives.html#idm212">Configuration Directives</a></span></dt></dl></dd><dt><span class="s
 ection"><a href="processing.html">Apache Rivet HTTP Request Processing</a></span></dt><dd><dl><dt><span class="section"><a href="processing.html#idm574">Tcl Scripts Processing</a></span></dt><dt><span class="section"><a href="processing.html#idm583">Example: basic OO Rivet Application</a></span></dt></dl></dd><dt><span class="section"><a href="request.html">Apache Child Processes Lifecycle and Request Processing</a></span></dt><dt><span class="section"><a href="commands.html">Rivet Tcl Commands and Variables</a></span></dt><dd><dl><dt><span class="section"><a href="commands.html#idm719"></a></span></dt><dt><span class="refentrytitle"><a href="shorthand.html">&lt;?= ... ?&gt;</a></span><span class="refpurpose"> — 
+				Shorthand construct for single strings output
+			</span></dt><dt><span class="refentrytitle"><a href="abort_code.html">abort_code</a></span><span class="refpurpose"> — 
+				Returns the code passed to <span style="font-family:monospace"><span class="command"><strong>abort_page</strong></span></span>
+				earlier during the request processing
+			</span></dt><dt><span class="refentrytitle"><a href="abort_page.html">abort_page</a></span><span class="refpurpose"> — 
+		    Stops outputting data to web page, similar in
+		    purpose to PHP's <span style="font-family:monospace"><span class="command"><strong>die</strong></span></span> command.
+		</span></dt><dt><span class="refentrytitle"><a href="apache_log_error.html">apache_log_error</a></span><span class="refpurpose"> — log messages to the Apache error log</span></dt><dt><span class="refentrytitle"><a href="apache_table.html">apache_table</a></span><span class="refpurpose"> — access and manipulate Apache tables in the request structure.</span></dt><dt><span class="refentrytitle"><a href="catch.html">catch</a></span><span class="refpurpose"> — wraps core command <span style="font-family:monospace"><span class="command"><strong>catch</strong></span></span> </span></dt><dt><span class="refentrytitle"><a href="clock_to_rfc.html">clock_to_rfc850_gmt</a></span><span class="refpurpose"> — create a rfc850 time from [clock seconds].</span></dt><dt><span class="refentrytitle"><a href="cookie.html">cookie</a></span><span class="refpurpose"> — get, set and delete cookies.</span></dt><dt><span class="refentrytitle"><a href="debug.html">debug</a></span><spa
 n class="refpurpose"> — 
+		    A command to print strings, arrays
+		    and the values of variables as specified by the arguments.
+		</span></dt><dt><span class="refentrytitle"><a href="env.html">env</a></span><span class="refpurpose"> — 
+		    Loads a single "environmental variable" into a Tcl variable.
+		</span></dt><dt><span class="refentrytitle"><a href="escape_sgml_chars.html">escape_sgml_chars</a></span><span class="refpurpose"> — escape special SGML characters in a string.</span></dt><dt><span class="refentrytitle"><a href="escape_shell_command.html">escape_shell_command</a></span><span class="refpurpose"> — escape shell metacharacters in a string.</span></dt><dt><span class="refentrytitle"><a href="escape_string.html">escape_string</a></span><span class="refpurpose"> — convert a string into escaped characters.</span></dt><dt><span class="refentrytitle"><a href="exit.html">exit</a></span><span class="refpurpose"> — terminate execution and child process</span></dt><dt><span class="refentrytitle"><a href="headers.html">headers</a></span><span class="refpurpose"> — set and parse HTTP headers.</span></dt><dt><span class="refentrytitle"><a href="html.html">html</a></span><span class="refpurpose"> — construct html tagged text.</span></dt><dt><span clas
 s="refentrytitle"><a href="http_accept.html">http_accept</a></span><span class="refpurpose"> — Parse HTTP Accept header lines</span></dt><dt><span class="refentrytitle"><a href="import_keyvalue_pairs.html">import_keyvalue_pairs</a></span><span class="refpurpose"> — Import an argument list into the named array</span></dt><dt><span class="refentrytitle"><a href="include.html">include</a></span><span class="refpurpose"> — includes a file into the output stream without modification.</span></dt><dt><span class="refentrytitle"><a href="incr0.html">incr0</a></span><span class="refpurpose"> — increment a variable or set it to 1 if nonexistent.</span></dt><dt><span class="refentrytitle"><a href="inspect.html">inspect</a></span><span class="refpurpose"> — Introspection command for Rivet configuration</span></dt><dt><span class="refentrytitle"><a href="lassign_array.html">lassign_array</a></span><span class="refpurpose"> — Assign a list of values to array variable
 s</span></dt><dt><span class="refentrytitle"><a href="lempty.html">lempty</a></span><span class="refpurpose"> — 
+		    Returns 1 if &lt;list&gt; is empty or 0 if it has any elements.  
+		    This command emulates the TclX lempty command.
+		</span></dt><dt><span class="refentrytitle"><a href="lmatch.html">lmatch</a></span><span class="refpurpose"> — 
+		    Look for elements in &lt;list&gt; that match &lt;pattern&gt;
+		</span></dt><dt><span class="refentrytitle"><a href="load_cookies.html">load_cookies</a></span><span class="refpurpose"> — get any cookie variables sent by the client.</span></dt><dt><span class="refentrytitle"><a href="load_env.html">load_env</a></span><span class="refpurpose"> — get the request's environment variables.</span></dt><dt><span class="refentrytitle"><a href="load_headers.html">load_headers</a></span><span class="refpurpose"> — get client request's headers.</span></dt><dt><span class="refentrytitle"><a href="load_response.html">load_response</a></span><span class="refpurpose"> — load form variables into an array.</span></dt><dt><span class="refentrytitle"><a href="lremove.html">lremove</a></span><span class="refpurpose"> — remove from a list elements matching one or more patterns</span></dt><dt><span class="refentrytitle"><a href="makeurl.html">makeurl</a></span><span class="refpurpose"> — construct url's based on hostname, port.</span></
 dt><dt><span class="refentrytitle"><a href="no_body.html">no_body</a></span><span class="refpurpose"> — Prevents Rivet from sending any content.</span></dt><dt><span class="refentrytitle"><a href="parray.html">parray</a></span><span class="refpurpose"> — Tcl's <span style="font-family:monospace"><span class="command"><strong>parray</strong></span></span> with html formatting.</span></dt><dt><span class="refentrytitle"><a href="parse.html">parse</a></span><span class="refpurpose"> — parses a Rivet template file.</span></dt><dt><span class="refentrytitle"><a href="raw_post.html">raw_post</a></span><span class="refpurpose"> — get the unmodified body of a POST request sent by the client.</span></dt><dt><span class="refentrytitle"><a href="redirect.html">redirect</a></span><span class="refpurpose"> — Interrupt processing and divert to a new URL</span></dt><dt><span class="refentrytitle"><a href="read_file.html">read_file</a></span><span class="refpurpose"> —
  
+			    Read the entire contents of a file and return it as a string.			
+			</span></dt><dt><span class="refentrytitle"><a href="try.html">try</a></span><span class="refpurpose"> — 
+				Catch error and exception conditions
+			</span></dt><dt><span class="refentrytitle"><a href="unescape_string.html">unescape_string</a></span><span class="refpurpose"> — unescape escaped characters in a string.</span></dt><dt><span class="refentrytitle"><a href="upload.html">upload</a></span><span class="refpurpose"> — handle a file uploaded by a client.</span></dt><dt><span class="refentrytitle"><a href="url_script.html">url_script</a></span><span class="refpurpose"> — get the code of the URL referenced Tcl script or Rivet template</span></dt><dt><span class="refentrytitle"><a href="var.html">var</a></span><span class="refpurpose"> — get the value of a form variable.</span></dt><dt><span class="refentrytitle"><a href="wrap.html">wrap</a></span><span class="refpurpose"> — 
+		    Split a string on newlines. 
+		</span></dt><dt><span class="refentrytitle"><a href="wrapline.html">wrapline</a></span><span class="refpurpose"> — 
+		    Split the line into multiple lines by splitting on space characters 
+		</span></dt><dt><span class="refentrytitle"><a href="xml.html">xml</a></span><span class="refpurpose"> — 
+                XML Fragments creation
+            </span></dt></dl></dd><dt><span class="section"><a href="examples.html">Examples and Usage</a></span></dt><dt><span class="section"><a href="tcl_packages.html">Rivet Tcl Packages</a></span></dt><dt><span class="section"><a href="dio.html">DIO - Database Interface Objects</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="dio_package.html">DIO</a></span><span class="refpurpose"> — Database Interface Objects</span></dt></dl></dd><dt><span class="section"><a href="diodisplay.html">DIODisplay - Database Interface Objects Display Class</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="diodisplay_package.html">DIODisplay</a></span><span class="refpurpose"> — Database Interface Objects Display Class</span></dt></dl></dd><dt><span class="section"><a href="session_package.html">Session Package</a></span></dt><dd><dl><dt><span class="section"><a href="session_package.html#idm3234">Introduction</a></span></dt><dt><span class="section"><a href="s
 ession_package.html#requirements">Requirements</a></span></dt><dt><span class="section"><a href="session_package.html#idm3243">Preparing To Use It</a></span></dt><dt><span class="section"><a href="session_package.html#idm3253">Example Usage</a></span></dt><dt><span class="section"><a href="session_package.html#idm3265">Using Sessions From Your Code</a></span></dt><dt><span class="section"><a href="session_package.html#idm3311">Session Configuration Options</a></span></dt><dt><span class="section"><a href="session_package.html#idm3389">Session Methods</a></span></dt><dt><span class="section"><a href="session_package.html#idm3445">Getting Additional Randomness From The Entropy File</a></span></dt></dl></dd><dt><span class="section"><a href="form.html">Form: An HTML Form Fields Generation Utility</a></span></dt><dd><dl><dt><span class="section"><a href="form.html#idm3451">Introduction</a></span></dt><dt><span class="refentrytitle"><a href="form_package.html">form</a></span><span class=
 "refpurpose"> —  a Tcl command object for creating HTML forms</span></dt></dl></dd><dt><span class="section"><a href="calendar_package.html">Calendar Package</a></span></dt><dd><dl><dt><span class="section"><a href="calendar_package.html#idm3915">Introduction</a></span></dt><dt><span class="refentrytitle"><a href="calendar.html">Calendar</a></span><span class="refpurpose"> — Utility class the builds and prints a calendar table</span></dt><dt><span class="refentrytitle"><a href="xml_calendar.html">XmlCalendar</a></span><span class="refpurpose"> — Prints XML formatted calendar tables</span></dt><dt><span class="refentrytitle"><a href="html_calendar.html">HtmlCalendar</a></span><span class="refpurpose"> — Concrete class derived from XmlCalendar</span></dt></dl></dd><dt><span class="section"><a href="entities.html">RivetEntities</a></span></dt><dd><dl><dt><span class="section"><a href="entities.html#idm4121">Introduction</a></span></dt><dt><span class="refentrytitle"
 ><a href="encode.html">encode</a></span><span class="refpurpose"> — 
+                encode a string replacing every occurrence of characters for 
+                which an SGML entity exists
+            </span></dt><dt><span class="refentrytitle"><a href="decode.html">decode</a></span><span class="refpurpose"> — 
+                decode an SGML encoded string replacing every entity with the
+                corresponding character
+            </span></dt></dl></dd><dt><span class="section"><a href="asciiglyphs.html">AsciiGlyphs</a></span></dt><dd><dl><dt><span class="section"><a href="asciiglyphs.html#idm4161">Introduction</a></span></dt><dt><span class="refentrytitle"><a href="toglyphs.html">toGlyphs</a></span><span class="refpurpose"> — 
+	            	print large ASCII glyphs
+	            </span></dt><dt><span class="section"><a href="asciiglyphs.html#idm4177">Example</a></span></dt></dl></dd><dt><span class="section"><a href="formbroker.html">The Form Broker</a></span></dt><dd><dl><dt><span class="section"><a href="formbroker.html#idm4182">Introduction</a></span></dt><dt><span class="refentrytitle"><a href="fb.html">FormBroker</a></span><span class="refpurpose"> — 
+               Form broker object creator
+            </span></dt></dl></dd><dt><span class="section"><a href="help.html">Resources - How to Get Help</a></span></dt><dd><dl><dt><span class="section"><a href="help.html#idm4310">Mailing Lists</a></span></dt><dt><span class="section"><a href="help.html#idm4317">Newsgroup</a></span></dt><dt><span class="section"><a href="help.html#websites">Web Sites</a></span></dt><dt><span class="section"><a href="help.html#idm4337">Bug Tracking System</a></span></dt><dt><span class="section"><a href="help.html#idm4341">IRC</a></span></dt><dt><span class="section"><a href="help.html#idm4344">Editing Rivet Template Files</a></span></dt></dl></dd><dt><span class="section"><a href="internals.html">Rivet Internals</a></span></dt><dd><dl><dt><span class="section"><a href="internals.html#idm4356">Rivet approach to Apache Multiprocessing Models</a></span></dt><dt><span class="section"><a href="internals.html#idm4369">mod_rivet MPM Bridge callbacks</a></span></dt><dt><span class="section"><a href="in
 ternals.html#idm4403">Server Initialization and MPM Bridge</a></span></dt><dt><span class="section"><a href="internals.html#idm4406">RivetChan</a></span></dt><dt><span class="section"><a href="internals.html#idm4411">The <span style="font-family:monospace"><span class="command"><strong>global</strong></span></span> Command</a></span></dt><dt><span class="section"><a href="internals.html#idm4419">Page Parsing, Execution and Caching</a></span></dt><dt><span class="section"><a href="internals.html#idm4427">Extending Rivet by developing C code procedures</a></span></dt><dt><span class="section"><a href="internals.html#idm4451">Debugging Rivet and Apache</a></span></dt></dl></dd><dt><span class="section"><a href="lazybridge.html">Example: the <span class="quote">“<span class="quote">Lazy</span>”</span> bridge</a></span></dt><dd><dl><dt><span class="section"><a href="lazybridge.html#idm4481">The rationale of threaded bridges</a></span></dt><dt><span class="section"><a href="lazy
 bridge.html#idm4485">Lazy bridge data structures</a></span></dt><dt><span class="section"><a href="lazybridge.html#idm4500">Handling Tcl's exit core command</a></span></dt><dt><span class="section"><a href="lazybridge.html#idm4519">HTTP request processing with the lazy bridge</a></span></dt></dl></dd></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>1. <a href="examples.html#hello_world">Hello World</a></dt><dt>2. <a href="examples.html#idm1925">Generate a Colorful Table</a></dt><dt>3. <a href="examples.html#variable_access">Variable Access</a></dt><dt>4. <a href="examples.html#file_upload">File Upload</a></dt><dt>5. <a href="examples.html#file_download">File Download</a></dt><dt>6. <a href="examples.html#ajax_xml_messaging">XML Messages and Ajax</a></dt><dt>7. <a href="examples.html#calendar_example">A Calendar Utility</a></dt></dl></div><p style="width:90%">
+    	Document revision: $Revision: 1819787 $, last modified 2018-01-09 23:03:42+01:00$ by $Author: mxmanghi $.
+  	</p><div class="section"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="introduction"></a>Introduction to Apache Rivet version 3.0</h2></div></div></div><p style="width:90%">
+      Apache Rivet is a system for creating dynamic web content by
+      integrating the 
+		<a class="ulink" href="http://www.tcl.tk/" target="_top">Tcl programming language</a> within the 
+      <a class="ulink" href="http://httpd.apache.org" target="_top">Apache Web Server</a>.
+      It is designed to be fast, powerful and extensible, consume 
+      few system resources, be easy to learn, and to provide the user with a
+      platform that can also be used for other programming tasks
+      outside the web (GUI's, system administration tasks, text
+      processing, database manipulation, XML, and so on).
+    </p><p style="width:90%">
+      In this manual, we aim to help get you started, and then
+      writing productive code as quickly as possible, as well as
+      giving you ideas on how to best take advantage of Rivet's
+      architecture to create different styles of web site.
+    </p><p style="width:90%">
+        This documentation is focused on the current version of Rivet, but
+        still a work in progress, and, like everything
+        else about Apache Rivet, it is Free Software.  If you see
+        something that needs improving, and have ideas or suggestions,
+        don't hesitate to let us know.  If you want to contribute
+        directly, better yet!
+    </p><div class="simplesect"><div class="titlepage"><div><div><h3 class="title"><a name="idm21"></a>Apache MPM and Rivet Bridge Modules</h3></div></div></div><p style="width:90%">
+	        	Rivet 3.0 is a major rewriting of mod_rivet, the Apache HTTP
+	        	Websever module at the core of Rivet. Unlike in previous versions of 
+	        	mod_rivet which only supported the <a class="ulink" href="" target="_top">prefork MPM</a>
+	        	(<a class="ulink" href="" target="_top">Multiprocessing Module</a>), 
+	        	starting with 3.0 we attained full support of different MPM for
+	        	the Apache framework.
+        </p><p style="width:90%">
+        		Threaded <a class="ulink" href="" target="_top">MPM</a>
+        		integration was achieved by making mod_rivet multithreaded and
+        		modular itself, introducing the MPM-module bridge concept.
+        		We developed a set of loadable modules 
+        		which are supposed not only to overcome the issues related to threading but also
+        		the best possible MPM mod_rivet integration.
+        		As a side effect of this modular design mod_rivet is not only able to integrate
+        		with its environment but also to work as a framework for writing more MPM bridges
+        		designed along different multi-threading schemes and workload management models. 
+        		See the <a class="link" href="internals.html" title="Rivet Internals">internals</a> section of this manual for
+        		further reading. MPM bridges are loaded accordingly to a heuristics of rules based
+        		on the Apache introspection calls but they can be determined in the configuration. 
+        		Only a bridge can be loaded at a time.
+        </p></div><div class="simplesect"><div class="titlepage"><div><div><h3 class="title"><a name="idm29"></a>Request Processing</h3></div></div></div><p style="width:90%">
+    			Request processing was performed in mod_rivet version 2.x by chaining together 3 scripts
+    	</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">BeforeScript, if defined in the configuration</li><li class="listitem">The URI referenced Tcl script or rvt template dermined with
+ 				respect to the <a class="ulink" href="https://httpd.apache.org/docs/2.4/mod/core.html#documentroot" target="_top">DocumentRoot</a> and following 
+ 				other resource determination methods such the ones offered by 
+ 				<a class="ulink" href="https://httpd.apache.org/docs/2.4/mod/mod_alias.html" target="_top">mod_alias</a> and by
+ 				<a class="ulink" href="https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html" target="_top">mod_rewrite</a>.
+ 			</li><li class="listitem">AfterScript, if defined in the configuration</li></ul></div><p style="width:90%">
+			Errors and exceptions (raised by the <a class="link" href="abort_page.html" title="abort_page">::rivet::abort_page</a> command)
+			are handled by the ErrorScript and AbortScript (ErrorScript has a default implementation
+			if undefined in the configuration)
+		</p><p style="width:90%">
+			Rivet 3.0 implements a new <a class="link" href="request.html" title="Apache Child Processes Lifecycle and Request Processing">request processing scheme</a> 
+			entirely based on Tcl. By default rivet 3.0 provides compatiblity with the 
+			version 2.x scheme to handle a request but this can be entirely overridden by
+			the developer replacing the central request handling procedure. See the 
+			<a class="link" href="request.html" title="Apache Child Processes Lifecycle and Request Processing">request processing</a> page for further reading 
+		</p></div><div class="simplesect"><div class="titlepage"><div><div><h3 class="title"><a name="idm44"></a>Acknowledgements</h3></div></div></div><p style="width:90%">This version of Rivet received substantial contributions from George Petasis who solved
+    	several problems with the threaded code, improved the code in several ways and made the CMake
+    	based build scripts</p></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="installation.html"><img src="images/next.png" alt="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"> Apache Rivet 3.0 Installation</td></tr></table></div></body></html>

Added: tcl/site/rivet/manual3.0/inspect.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual3.0/inspect.html?rev=1821429&view=auto
==============================================================================
--- tcl/site/rivet/manual3.0/inspect.html (added)
+++ tcl/site/rivet/manual3.0/inspect.html Wed Jan 17 22:31:48 2018
@@ -0,0 +1,47 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>inspect</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Apache Rivet 3.0"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="incr0.html" title="incr0"><link rel="next" href="lassign_array.html" title="lassign_array"></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">inspect</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="incr0.html"><img src="images/prev.png" alt="Prev"></a> </td><th width="60%" align="center">Rivet Tcl Commands and Variables</th><td width="20%" align="right"> <a accesskey="n" href="lassign_array.html"><img src="images/next.png" alt="Next"></a></td><
 /tr></table></div><div class="refentry"><div class="refentry.separator"><hr></div><a name="inspect"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>inspect — Introspection command for Rivet configuration</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="border: 1px solid #282; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">::rivet::inspect</span>  ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>configuration_section</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>configuration_parameter</code></em></span>?</div></div></div><div class="refsect1"><a name="idm1316"></a><h2>Description</h2><p style="width:90%">
+             <span style="font-family:monospace"><span class="command"><strong>::rivet::inspect</strong></span></span> provides introspection into the running
+             configuration of Rivet. Rivet's debug command uses it in order to gain insight
+             into the configuration, but it can be used in any script. 
+         </p><p style="width:90%">
+             <span style="font-family:monospace"><span class="command"><strong>::rivet::inspect</strong></span></span> can be called in 5 different forms
+         </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem" style="list-style-type: square">            
+               With no argument the command returns a dictionary with 3
+               keys: server, dir, user. Each key is associated to a subdictionary 
+               carrying the configuration as set for that request.  In this form the command is 
+               meant to support compatibility with previous versions of mod_rivet 
+               where three global arrays were created to be internally used by command
+               <span style="font-family:monospace"><span class="command"><strong>::rivet::debug</strong></span></span>.
+            </li><li class="listitem" style="list-style-type: square">
+					With the  ?<span style="font-family:monospace; font-weight: bold;">-all</span>? argument a dictionary
+					carrying the whole configuration for that specific request is returned. 
+					If a configuration parameter is not set it's given the
+					string <span class="emphasis"><em>undefined</em></span>. Returned configuration paramenters
+					are<pre class="programlisting">    "ServerInitScript",
+    "GlobalInitScript",
+    "ChildInitScript",
+    "ChildExitScript",
+    "BeforeScript",
+    "AfterScript",
+    "AfterEveryScript",
+    "AbortScript",
+    "ErrorScript",
+    "UploadMaxSize",
+    "UploadDirectory",
+    "UploadFilesToVar",
+    "SeparateVirtualInterps",
+    "HonorHeaderOnlyRequests"</pre></li><li class="listitem" style="list-style-type: square">
+					With one of the Rivet configuration directives listed above as
+					single argument <span style="font-family:monospace"><span class="command"><strong>::rivet::inspect</strong></span></span> returns the 
+					current value in the configuration record. 
+				</li><li class="listitem" style="list-style-type: square">
+					Passing the argument "script" <span style="font-family:monospace"><span class="command"><strong>::rivet::inspect</strong></span></span>
+					returns a path to the current script in a similar way 
+					core command <span style="font-family:monospace"><span class="command"><strong>[info script]</strong></span></span> does. The basic
+					difference is that the core command returns a relative path with
+					respect to the current working directory, whereas mod_rivet's command
+					returns the full path.
+				</li><li class="listitem" style="list-style-type: square">
+                    Passing the argument "server" <span style="font-family:monospace"><span class="command"><strong>::rivet::inspect</strong></span></span>
+                    returns a dictionary with these fields taken from the server record
+                    descriptor
+                    <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">hostname: The server hostname </li><li class="listitem">admin: The admin's contact information</li><li class="listitem">errorlog: The name of the error log</li><li class="listitem">server_path: Pathname for ServerPath</li></ul></div></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="incr0.html"><img src="images/prev.png" alt="Prev"></a> </td><td width="20%" align="center"><a accesskey="u" href="commands.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right"> <a accesskey="n" href="lassign_array.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">incr0 </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a></td><td 
 width="40%" align="right" valign="top"> lassign_array</td></tr></table></div></body></html>

Added: tcl/site/rivet/manual3.0/installation.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual3.0/installation.html?rev=1821429&view=auto
==============================================================================
--- tcl/site/rivet/manual3.0/installation.html (added)
+++ tcl/site/rivet/manual3.0/installation.html Wed Jan 17 22:31:48 2018
@@ -0,0 +1,169 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Apache Rivet 3.0 Installation</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Apache Rivet 3.0"><link rel="up" href="index.html" title="Apache Rivet 3.0"><link rel="prev" href="index.html" title="Apache Rivet 3.0"><link rel="next" href="cmake.html" title="Building Rivet 3.0 with CMake"></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 3.0 Installation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html"><img src="images/prev.png" alt="Prev"></a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="cmake.html"><img src="images/next.png" alt="Next"></
 a></td></tr></table></div><div class="section"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="installation"></a>Apache Rivet 3.0 Installation</h2></div></div></div><div class="procedure"><p style="width:90%"> 
+            Rivet 3.0 runs with the Apache 2.2.x and 2.4.x HTTP web servers. 
+            It is known to build and run on various Linux distributions 
+            (Debian &amp; Ubuntu, Redhat, SuSE and CentOS), FreeBSD and OpenBSD. For some
+            of these Unix-like operative systems 
+            <a class="ulink" href="http://tcl.apache.org/rivet/static/download.html" target="_top">binary packages</a> 
+            are already available for download.
+        </p><p style="width:90%">
+				Rivet 2.x was restricted to work with the 
+				<a class="ulink" href="http://httpd.apache.org/docs/2.4/mod/prefork.html" target="_top">prefork</a> MPM
+				of the Apache HTTP webserver. MPM modules are fundamental components of the
+				webserver architecture. They provide multiple implementations of multiprocessing
+				in order to better suit specific OS features and scalability requirements.
+				The prefork MPM exploited the UNIX traditional approach to multiprocess server
+				applications based on the
+				<a class="ulink" href="https://en.wikipedia.org/wiki/Fork_(system_call)" target="_top">fork</a>
+				system call. This model has several limitations but also some advantages. The 
+				solution we adopted tries to attain the best from any MPM as much as possible
+				and Rivet 3.0 is now able to run with the 
+				<a class="ulink" href="http://httpd.apache.org/docs/2.4/mod/worker.html" target="_top">worker</a> 
+            and the
+            <a class="ulink" href="http://httpd.apache.org/docs/2.4/mod/event.html" target="_top">worker</a> 
+            MPMs. Rivet 3.0 has not been ported to OS of the Windows family
+            but we feel that the current design would fit just fine with the Windows specific
+            MPMs such as
+            <a class="ulink" href="http://httpd.apache.org/docs/2.4/mod/mpm_winnt.html" target="_top">winnt</a>.
+        </p><p style="width:90%">
+            If you need to build Apache Rivet yourself this is the procedure to follow
+        </p><ol class="procedure" type="1"><li class="step"><p class="title"><b>Building Tcl: requirements</b></p><p style="width:90%">
+                Installing Rivet is about endowing the Apache HTTP webserver with the ability
+                of running scripts written with the Tcl programming language. 
+                Therefore the 
+                <a class="ulink" href="http://www.tcl.tk/" target="_top">Tcl</a> language with its runtime,  
+                development libraries and shell (≥8.5.10 required, ≥8.6.0 recommended) 
+                have to be installed. Building Rivet you will 
+                have to tell the scripts where the Tcl libraries are located via the
+                --with-tcl option of the <span style="font-family:monospace"><span class="command"><strong>configure</strong></span></span> script
+                (see below).
+            </p><p style="width:90%">
+            	Several Tcl packages shipped with rivet need also the 
+            	<a class="ulink" href="http://core.tcl.tk/itcl/" target="_top">Itcl</a>
+            	OOP extension of Tcl. If you need to run any of the 
+            	Session or DIO
+            	packages you need to install this language extension but you don't need it
+            	to build mod_rivet 
+            </p><p style="width:90%">
+            	The 
+            	<a class="ulink" href="" target="_top">Apache HTTP Webserver</a> development
+            	files and libraries are required along with the 
+            	<a class="ulink" href="" target="_top">Apache Portable Runtime</a>
+            	and the
+            	<a class="ulink" href="" target="_top">libapreq</a> library. 
+            </p></li><li class="step"><p class="title"><b>Building Rivet</b></p></li><li class="step"><p class="title"><b>Getting and Installing the Apache Sources</b></p><p style="width:90%">
+                You can build Rivet either statically (compiled into the Apache web
+                server) or dynamically (as a loadable shared library).  
+                We recommend that you build Rivet as a shared library, for maximum flexibility.
+                We will tell Rivet where it the Apache development files and libraries are located 
+                via the --with-apxs option to <span style="font-family:monospace"><span class="command"><strong>configure</strong></span></span> (see below).
+            </p><p style="width:90%">
+            	Most modern Unix OS (Linux and FreeBSD systems included) come with their
+            	own packages of the Apache Web Server executables, runtime libraries and development files
+            	and libraries. Check the documentation of the package manager of your OS 
+            	to find out how to install this software
+            </p></li><li class="step"><p class="title"><b>Uncompress Sources</b></p><p style="width:90%">
+                Download the sources at <a class="ulink" href="http://tcl.apache.org/rivet/html/download.html" target="_top">http://tcl.apache.org/rivet/html/download.html</a>.  
+            </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><pre class="programlisting">gunzip rivet-3.0.0.tar.gz
+tar -xvf rivet-3.0.0.tar.gz</pre><p style="width:90%">
+            </p></li><li class="step"><p class="title"><b>Building Rivet</b></p><ol type="a" class="substeps"><li class="step"><p style="width:90%">
+	       Rivet uses the standard <span style="font-family:monospace"><span class="command"><strong>./configure ; make ; make install</strong></span></span>
+	       sequence which installs to their target directories the Apache module, the binary libraries and the
+	       Tcl code
+	    </p><p style="width:90%">
+	      There are several rivet specific options to configure that might be useful (or needed):
+	      </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">--with-apache</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
+	      				Defines the configure internal variable 'apache_base'. This variable
+	      				points to the root of the Apache web server directory hierarchy
+	      			</div></div></dd><dt><span class="term">--with-tcl</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
+			              This points to the directory where the
+			              <code class="filename">tclConfig.sh</code> file is located.
+			          </div></div></dd><dt><span class="term">--with-tclsh</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">This points to the location of the
+			      		<code class="filename">tclsh</code> executable.</div></div></dd><dt><span class="term">--with-apxs</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
+			    			The location of the <code class="filename">apxs</code>
+			      		program that provides information about the
+			      		configuration and compilation options of Apache modules.
+			      	</div></div></dd><dt><span class="term">--with-apache-include[=DIR]</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
+				    		Locates the Apache include files on your computer, if they're not in standard directory. 
+			    		</div></div></dd><dt><span class="term">--enable-version-display=[yes|no]</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
+							This option enables Rivet to display its version in the
+							logfiles when Apache is started. The default is to keep the Rivet version hidden.
+			    		</div></div></dd><dt><span class="term">--with-rivet-target-dir=DIR</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
+					    	This option is for fine tuning of the installation final directories. Rivet Tcl packages, 
+					    	commands and loadable libraries go into the same directory hierarchy 
+					    	(by default is ${apache_base}/lib/rivet${PACKAGE_VERSION}, where $apache_base takes
+					    	the value set by --with-apache) 
+						</div></div></dd><dt><span class="term">--with-upload-dir=DIR</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
+			         	Configures Rivet's default upload directory. It can be overridden in the configuration
+			          	either globally or specifically for a virtual host 
+			      	</div></div></dd><dt><span class="term">--with-post-max=BYTES</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
+							The value to this option establishes a default for the maximum size of POST data.
+							Default: 0 (unlimited size)
+						</div></div></dd><dt><span class="term">--enable-head-requests</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
+				          By default HEAD requests don't go through the usual request processing which leads
+				          to script execution and therefore resource consumption and Rivet returns a
+				          standard hardcoded HTML header to save CPU time. --enable-head-requests
+				          can change the default.
+				      </div></div></dd><dt><span class="term">--enable-rivet-commands-export</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
+			         	By default Rivet's commands are put on the export list of the <code class="code">::rivet</code>
+			          	namespace. With this option you may prevent it thus forcing the programmers to
+			          	fully qualify in their code. By default this option is enabled and it can be
+			          	changed in the configuration with the directive ExportRivetNS. Disabling
+			          	this option can be also reverted to 'On' with the --enable-import-rivet-commands
+			          	switch
+			      	</div></div></dd><dt><span class="term">--enable-import-rivet-commands</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
+			         	Rivet's namespace is by default imported into the global namespace. Enabling the import 
+			         	of Rivet's commands overrides the switch and forces --enable-rivet-commands-export=yes 
+			         	thus demanding the commands to be exported (otherwise it would generate errors at run-time).
+			         	This option is disabled by default and it can be changed in the configuration with
+			         	the ImportRivetNS directive
+			      	</div></div></dd><dt><span class="term">--enable-virtual-interps-separation</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style="margin-bottom:1.5ex ; padding .5ex">
+							This option changes the default for the SeparateVirtualInterps configuration
+							variable. Default: 0 (no separation among interpreters)
+						</div></div></dd></dl></div><p style="width:90%">
+	    </p><p style="width:90%">
+		  Example: configuring the build system to compile Rivet for an Apache HTTP server custom installation, 
+		  using tcl8.6. In this specific case the determination of the apxs path is redundant and it could be 
+		  omitted since it could be inferred from the --with-apache option value 
+	    </p><pre class="programlisting">./configure --with-tcl=/usr/lib/tcl8.6/ --with-tclsh=/usr/bin/tclsh8.6 \
+	    --with-apxs=/usr/local/apache2/bin/apxs --with-apache=/usr/local/apache2 \
+	    --with-rivetlib-target-dir=/usr/local/apache2/rivet3.0</pre></li><li class="step"><p class="title"><b>Run make</b></p><p style="width:90%">
+	      At this point, you are ready to run make, which should
+	      run to completion without any errors (a warning or two
+	      is OK, generally).
+	    </p></li><li class="step"><p class="title"><b>Install</b></p><p style="width:90%">
+	      Now, you are ready to run the
+	    </p><pre class="programlisting">make install</pre><p style="width:90%"> 
+	       to install the resulting files. The <code class="code">install</code> target
+	       actually fires the <code class="code">install-binaries</code> and 
+	       <code class="code">install-packages</code> targets which in turn 
+	       copy the binary modules and Tcl packages to their destination
+	       directories. This commands create a functional Rivet environment with its
+		   core language.
+	    </p></li></ol></li><li class="step"><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><pre class="programlisting">LoadModule rivet_module	<em class="replaceable"><code>/usr/lib/apache2/modules/mod_rivet.so</code></em></pre><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 "Rivet" files and how to
+	  process them:
+	</p><pre class="programlisting">AddType application/x-httpd-rivet rvt
+AddType application/x-rivet-tcl tcl</pre><p style="width:90%">
+	  These tell Apache to process files with the
+	  <code class="filename">.rvt</code> and <code class="filename">.tcl</code>
+	  extensions as Rivet files.
+	</p><p style="width:90%">
+	  The characters encoding can be changed using the <span style="font-family:monospace"><span class="command"><strong>header type</strong></span></span> command,
+	  but you can also change the default charset for the whole site:
+	</p><pre class="programlisting">AddType 'application/x-httpd-rivet;charset=utf-8' rvt</pre><p style="width:90%">
+	   All the pages generated by Rivet on this site will be sent with a 
+	    <span style="font-family:monospace"><span class="command"><strong>Content-Type:'text/html;charset=utf-8'</strong></span></span> header.
+	</p><p style="width:90%">You may also wish to use Rivet files as index files for
+	directories.  In that case, you would do the following:</p><pre class="programlisting">DirectoryIndex index.html index.htm index.shtml index.cgi index.tcl index.rvt</pre><p style="width:90%">
+	  For other directives that Rivet provides for Apache
+	  configuration, please see <a class="xref" href="directives.html" title="Apache Rivet 3.0 Configuration">the section called “Apache Rivet 3.0 Configuration”</a>.
+	</p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html"><img src="images/prev.png" alt="Prev"></a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="cmake.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">Apache Rivet 3.0 </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top"> Building Rivet 3.0 with CMake</td></tr></table></div></body></html>

Added: tcl/site/rivet/manual3.0/internals.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual3.0/internals.html?rev=1821429&view=auto
==============================================================================
--- tcl/site/rivet/manual3.0/internals.html (added)
+++ tcl/site/rivet/manual3.0/internals.html Wed Jan 17 22:31:48 2018
@@ -0,0 +1,315 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Rivet Internals</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Apache Rivet 3.0"><link rel="up" href="index.html" title="Apache Rivet 3.0"><link rel="prev" href="help.html" title="Resources - How to Get Help"><link rel="next" href="lazybridge.html" title="Example: the “Lazy” bridge"></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"><img src="images/prev.png" alt="Prev"></a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="lazybridge.html"><img src="images/next.png" alt="Next"></a>
 </td></tr></table></div><div class="section"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="internals"></a>Rivet Internals</h2></div></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, the Subversion revision control system
+      (<span style="font-family:monospace"><span class="command"><strong>svn</strong></span></span>) can provide you with information about
+      what has been happening with the code.
+    </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm4356"></a>Rivet approach to Apache Multiprocessing Models</h3></div></div></div><p style="width:90%">
+    		The Apache HTTP web server has an extremely modular architecture
+    		that made it very popular among web developers. Most of the server
+    		features can be implemented in external modules, including some of
+    		the way the server interfaces to the operative system. The multiprocessing
+    		modules are meant to provide different models for distributing the
+    		server workload but also to cope with different operative systems
+    		having their specific architectures and services.
+    	</p><p style="width:90%">
+    		From the very beginning mod_rivet was designed to work with
+    		the  <a class="ulink" href="https://httpd.apache.org/docs/2.4/mod/prefork.html" target="_top">prefork MPM</a>
+    		MPM (Multi Processing Module) which assumes the OS to have 'fork' capabilities.
+    		This prerequisite basically restricted mod_rivet to work only with
+    		Unix-like operative systems. Starting with version 3.0 we reorganized
+    		mod_rivet to offer a design that could work together with more MPM and
+    		hopefully pave the way to support different OS that have no 'fork'
+    		call. At the same time we tried to preserve some of the basic
+    		features of mod_rivet when working with the prefork MPM, chiefly the feature of
+    		the Unix fork system call of 'cloning' a parent process
+    		memory into its child, thus allowing fast initialization of interpreters.
+    	</p><p style="width:90%">
+    		The central design of mod_rivet now relies on the idea of <span class="quote">“<span class="quote">MPM bridges</span>”</span>,
+    		loadable modules that are responsible to adapt the module procedural design to
+    		a given class of Apache MPMs. This design is open to the development of more
+    		MPM bridges coping with different multi-processing models but also to the development of
+    		different approaches to resource consumption and workload balance. By now we have only 2 bridges: 
+    	</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">rivet_prefork_mpm.c: a bridge for the prefork MPM</li><li class="listitem">rivet_worker_mpm.c: a threaded bridge creating a pool of threads
+    		each running Tcl interpreters and communicating with the worker MPM threads
+    		through a thread safe queue. This bridge is needed by the worker MPM.</li><li class="listitem">rivet_lazy_mpm.c: a threaded bridge where Tcl threads are
+    		started <span class="quote">“<span class="quote">on demand</span>”</span>. The bridge creates no threads and Tcl interpreters
+    		at start up and only when requests come in Tcl execution threads are created.
+    		This bridge is explained in detail in the <a class="xref" href="lazybridge.html" title="Example: the “Lazy” bridge">the section called “Example: the <span class="quote">“<span class="quote">Lazy</span>”</span> bridge”</a>.     		
+    		Since the resource demand at startup is minimal this bridge should work well on 
+    		development machines that go through frequent web server restarts.</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm4369"></a>mod_rivet MPM Bridge callbacks</h3></div></div></div><p style="width:90%">
+    		A bridge is a loadable library implementing different ways to handle
+    		specific features needed to mod_rivet. It was originally meant as a way
+    		to handle the prefork/worker/event MPM specificities that prevented mod_rivet
+    		from supporting each of them, at the same time avoiding the need to stuff the 
+    		code with conditional statements that would have implied useless complexity (an
+    		instance of the Apache web server can run only an MPM at a time), 
+    		error prone programming and performance costs. 
+    		New bridges could be imagined also to implement different models of workload
+    		and resource management (like the resources demanded by the Tcl interpreters). 
+			We designed an interface between the core of mod_rivet and its MPM bridges 
+			based on a set of functions defined in the rivet_bridge_table structure. 
+    	</p><pre class="programlisting">typedef struct _mpm_bridge_table {
+    RivetBridge_ServerInit    *mpm_server_init;
+    RivetBridge_ChildInit     *mpm_child_init;
+    RivetBridge_Request       *mpm_request;
+    RivetBridge_Finalize      *mpm_finalize;
+    RivetBridge_Exit_Handler  *mpm_exit_handler;
+    RivetBridge_Thread_Interp *mpm_thread_interp;
+} rivet_bridge_table;</pre><p style="width:90%">
+			</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><span class="emphasis"><em>mpm_server_init</em></span>: pointer to any
+					specific server inititalization function. This field can be NULL
+					if no bridge specific initialization has to be done. The core of
+					mod_rivet runs the <span style="font-family:monospace"><span class="command"><strong>ServerInitScript</strong></span></span> before
+					calling this function.</li><li class="listitem"><span class="emphasis"><em>mpm_child_init</em></span>: Bridge specific
+					child process initialization. If the pointer is assigned with
+					a non-NULL value the function is called by Rivet_ChildInit. 
+				</li><li class="listitem"><span class="emphasis"><em>mpm_request</em></span>: This pointer must
+					be assigned with a valid function pointer to the content generator
+					implemented by the bridge. If the pointer is not defined the Apache
+					web server will stop during start up. This condition is motivated by
+					the need of avoiding useless testing of the pointer. The fundamental
+					purpose of a content generator module (like mod_rivet) is to respond
+					to requests creating content, thus whatever it is
+					a content generating function must exist (during the early stages of
+					development you can create a simple test function for that). In a
+					threaded MPM this function typically prepares the request processing 
+					stuffing somewhere the pointer to the request_rec structure 
+					passed by the web server and then it calls some method to communicate
+					these data to the Tcl execution thread waiting for result to be
+					returned. The <span class="quote">“<span class="quote">prefork</span>”</span> bridge is an exception since there
+					are no multiple threads and the bridge calls directly Rivet_SendContent
+				</li><li class="listitem"><span class="emphasis"><em>mpm_finalize</em></span>: pointer to a finalization
+					function called during a child process exit. This function is registered
+					as child process memory pool cleanup function. If the pointer is NULL
+					the pool is given a default cleanup function (apr_pool_cleanup_null) 
+					defined in src/mod_rivet/mod_rivet.c. For instance the finalize function
+					in the <span class="emphasis"><em>worker</em></span> MPM bridge notifies
+					a supervisor thread demanding the whole pool of threads running Tcl 
+					interpreters to orderly exit. This pointer can be NULL if the bridge 
+					has no special need when a child process must exit (unlikely if you have
+					multiple threads running)
+				</li><li class="listitem"><span class="emphasis"><em>mpm_exit_handler</em></span>: mod_rivet replaces
+					the core <span style="font-family:monospace"><span class="command"><strong>exit</strong></span></span> command with a new one
+					(<span style="font-family:monospace"><span class="command"><strong>::rivet::exit</strong></span></span>). This command must handle 
+					the process exit in the best possible way for the bridge and the
+					threading model it implements (for the 2 current threaded bridges this implies
+					signaling the threads to exit). The <span style="font-family:monospace"><span class="command"><strong>::rivet::exit</strong></span></span>
+					actually doesn't terminate the process, but interrupts execution
+					returning a specific error code commands <span style="font-family:monospace"><span class="command"><strong>::rivet::catch</strong></span></span>
+					and <span style="font-family:monospace"><span class="command"><strong>::rivet::try</strong></span></span> can detect. Before the process is terminated
+					the <span style="font-family:monospace"><span class="command"><strong>AbortScript</strong></span></span> script is fired and <span style="font-family:monospace"><span class="command"><strong>::rivet::abort_code</strong></span></span>
+					returns a message describing the exit condition. For instance
+					the <span class="emphasis"><em>worker</em></span> MPM bridge the finalize function
+					is called after the current thread itself is set up for termination.
+					See function Rivet_ExitCmd in
+					<a class="ulink" href="http://svn.apache.org/repos/asf/tcl/rivet/trunk/src/mod_rivet/rivetCore.c" target="_top">rivetCore.c</a>
+					to have details on how and at what stage this callback is invoked.
+				</li><li class="listitem"><span class="emphasis"><em>mpm_thread_interp</em></span> must be a function returning
+					the interpreter object (a pointer to record of type
+					<span style="font-family:monospace"><span class="command"><strong>rivet_thread_interp</strong></span></span>) associated
+					to a given configuration as stored in a <span style="font-family:monospace"><span class="command"><strong>rivet_server_conf*</strong></span></span>
+					object. This element was temporarily introduced in the 
+					<span style="font-family:monospace"><span class="command"><strong>mpm_bridge_table</strong></span></span> table and should be accessed
+					through the macro RIVET_PEEK_INTERP.
+					<pre class="programlisting">interp_obj = RIVET_PEEK_INTERP(private,private-&gt;conf);</pre>
+					Every bridge implementation should have its own way to store interpreter data and manage their
+					status. So this macro (and associated function)	should hide from the module core function
+					the specific approach followed in a particular bridge
+				</li></ul></div><p style="width:90%">
+		</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm4403"></a>Server Initialization and MPM Bridge</h3></div></div></div><p style="width:90%">
+      </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm4406"></a>RivetChan</h3></div></div></div><p style="width:90%">
+			The <span class="structname">RivetChan</span> system was created in
+			order to have an actual Tcl channel that we could redirect
+			standard output to.  This enables us use, for instance, the
+			regular <span style="font-family:monospace"><span class="command"><strong>puts</strong></span></span> command in .rvt pages.  It
+			works by creating a channel that buffers output, and, at
+			predetermined times, passes it on to Apache's I/O 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><div><h3 class="title"><a name="idm4411"></a>The <span style="font-family:monospace"><span class="command"><strong>global</strong></span></span> Command</h3></div></div></div><p style="width:90%">
+			Rivet aims to run standard Tcl code with as few surprises as
+			possible.  At times this involves some compromises - in this
+			case regarding the <span style="font-family:monospace"><span class="command"><strong>global</strong></span></span> command.  The
+			problem is that the command will create truly global
+			variables.  If the user is just cut'n'pasting some Tcl code
+			into Rivet, they most likely just want to be able to share the
+			variable in question with other procs, and don't really care
+			if the variable is actually persistant between pages.  The
+			solution we have created is to create a proc
+			<span style="font-family:monospace"><span class="command"><strong>::request::global</strong></span></span> that takes the place of
+			the <span style="font-family:monospace"><span class="command"><strong>global</strong></span></span> command in Rivet templates.  If
+			you really need a true global variable, use either
+			<span style="font-family:monospace"><span class="command"><strong>::global</strong></span></span> or add the :: namespace qualifier
+			to variables you wish to make global.
+      </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm4419"></a>Page Parsing, Execution and Caching</h3></div></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"><span class="command"><strong>puts</strong></span></span> statement, and
+			everything inside them remains Tcl code.
+      </p><p style="width:90%">
+			Each .rvt file is evaluated in its own
+			<code class="constant">::request</code> 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;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">Note</th></tr><tr><td align="left" valign="top">
+		    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.
+	      </td></tr></table></div><p style="width:90%">
+      </p><p style="width:90%">
+	    	After a script has been loaded and parsed into it's "pure Tcl"
+	    	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 class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm4427"></a>Extending Rivet by developing C code procedures</h3></div></div></div><p style="width:90%">
+            Rivet endows the Tcl interpreter with new commands
+            serving as interface between the application layer and the
+            Apache web server. Many of these commands
+            are meaningful only when a HTTP request is under way and 
+            therefore a request_rec object allocated by the framework 
+            is existing and was passed to mod_rivet as argument of a callback. 
+            In case commands have to gain access to a valid request_rec
+            object the C procedure must check if such 
+            a pointer exists and it's initialized
+            with valid data. For this purpose the procedure handling requests 
+            (Rivet_SendContent) makes a copy of such pointer and keeps it
+            in an internal structure. The copy is set to NULL just before
+            returning to the framework, right after mod_rivet's has
+            carried out its request processing. When the pointer copy is NULL 
+            the module is outside any request processing and this
+            condition invalidates the execution of
+            many of the Rivet commands. In case they are called  
+            (for example in a ChildInitScript, GlobalInitScript, 
+            ServerInitScript or ChildExitScript) they fail with a Tcl error 
+            you can handle with a <span style="font-family:monospace"><span class="command"><strong>catch</strong></span></span> command.
+        </p><p style="width:90%">            
+            For this purpose in src/rivet.h the macro
+            CHECK_REQUEST_REC was defined accepting two arguments: the thread
+				private data object and the command name. If the pointer is NULL
+            the macro calls Tcl_NoRequestRec and returns TCL_ERROR
+            causing the command to fail. These are the steps to follow
+            in order to write a new C language command for mod_rivet 
+        </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+                Define the command and associated C language procedure
+                in src/rivetcmds/rivetCore.c using the macro
+                RIVET_OBJ_CMD<pre class="programlisting">RIVET_OBJ_CMD("mycmd",Rivet_MyCmd,private)</pre>
+                This macro ensures the command is defined as <span style="font-family:monospace"><span class="command"><strong>::rivet::mycmd</strong></span></span>
+                and its ClientData pointer is defined with the thread private data
+            </li><li class="listitem">
+                Add the code of Rivet_MyCmd to src/rivetcmd/rivetCore.c (in case
+                the code resides in a different file also src/Makefile.am should be
+                changed to tell the build system how to compile the code and
+                link it into mod_rivet.so)
+            </li><li class="listitem">
+                If the code must have access to the request record in <span style="font-family:monospace"><span class="command"><strong>private-&gt;r</strong></span></span>
+                use the macro THREAD_PRIVATE_DATA in order to claim the thread private data, then
+                check for the validity of the pointer using the macro 
+                CHECK_REQUEST_REC(private,"::rivet::&lt;cmd_name&gt;")
+
+                <pre class="programlisting">TCL_CMD_HEADER(Rivet_MyCmd)
+{
+    /* we have to get the thread private data */
+    
+    THREAD_PRIVATE_DATA(private)
+
+	/* if ::rivet::mycmd works within a request processing we have
+	 * to check if 'private' is bringing a non null request_rec pointer
+	 */
+    
+    CHECK_REQUEST_REC(private,"::rivet::mycmd");
+    ....
+    
+    return TCL_OK;
+}</pre></li><li class="listitem">
+                Add a test for this command in tests/checkfails.tcl. For 
+                instance
+                <pre class="programlisting">...
+check_fail no_body
+check_fail virtual_filename unkn
+check_fail my_cmd &lt;arg1&gt; &lt;arg2&gt;
+....</pre>
+                Where &lt;arg1&gt; &lt;arg2&gt; are optional 
+                arguments in case the command has different forms depending on
+                the arguments. Then, if <span style="font-family:monospace"><span class="command"><strong>::rivet::mycmd</strong></span></span> must fail also
+                tests/failtest.tcl should modified as
+                <pre class="programlisting">virtual_filename-&gt;1
+mycmd-&gt;1</pre>
+                The value associated to the test must be 0 in case the
+                command doesn't need to test the <span style="font-family:monospace"><span class="command"><strong>private-&gt;r</strong></span></span> pointer.
+            </li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm4451"></a>Debugging Rivet and Apache</h3></div></div></div><p style="width:90%">
+			If you are interested in hacking on Rivet, you're welcome to
+			contribute!  Invariably, when working with code, things go
+			wrong, and it's necessary to do some debugging.  In a server
+			environment like Apache, it can be a bit more difficult to
+			find the right way to do this.  Here are some techniques to
+			try.
+      </p><p style="width:90%">
+			The first thing you should know is that Apache can be launched
+			as a <span class="emphasis"><em>single process</em></span> with the
+			-X argument:
+		</p><pre class="programlisting">httpd -X</pre>.
+
+		<p style="width:90%">
+			On Linux, one of the first things to try is the system call
+			tracer, <span style="font-family:monospace"><span class="command"><strong>strace</strong></span></span>.  You don't even have to
+			recompile Rivet or Apache for this to work.
+      </p><pre class="programlisting">strace -o /tmp/outputfile -S 1000 httpd -X</pre><p style="width:90%">
+      	This command will run httpd in the system call tracer,
+			which leaves its output (there is potentially a lot of it) in
+			<code class="filename">/tmp/outputfile</code>.  The -S
+			option tells <span style="font-family:monospace"><span class="command"><strong></strong></span></span>strace to only record the
+			first 1000 bytes of a syscall.  Some calls such as
+			<code class="function">write</code> can potentially be much longer than
+			this, so you may want to increase this number.  The results
+			are a list of all the system calls made by the program.  You
+			want to look at the end, where the failure presumably occured,
+			to see if you can find anything that looks like an error.  If
+			you're not sure what to make of the results, you can always
+			ask on the Rivet development mailing list.
+      </p><p style="width:90%">
+			If <span style="font-family:monospace"><span class="command"><strong>strace</strong></span></span> (or its equivalent on your
+			operating system) doesn't answer your question, it may be time
+			to debug Apache and Rivet.  To do this, you will need to rebuild mod_rivet.
+			First of all you have to configure the build by running the
+			<span style="font-family:monospace"><span class="command"><strong>./configure</strong></span></span> script with the
+			-enable-symbols option and after you have
+			set the CFLAGS and LDFLAGS environment variables
+      </p><pre class="programlisting">export CFLAGS="-g -O0"
+export LDFLAGS="-g"
+./configure --enable-symbols ......
+make
+make install</pre><p style="width:90%">
+			Arguments to <span style="font-family:monospace"><span class="command"><strong>./configure</strong></span></span> must fit your Apache HTTP
+			web server installation. See the output produced by
+		</p><pre class="programlisting">./configure --help</pre><p style="width:90%">
+			And check the <a class="xref" href="installation.html" title="Apache Rivet 3.0 Installation">the section called “Apache Rivet 3.0 Installation”</a> page to
+			have further information.
+			Since it's easier to debug a single process, we'll still run
+			Apache in single process mode with -X:
+      </p><pre class="programlisting">@ashland [~] $ gdb /usr/sbin/apache.dbg
+GNU gdb 5.3-debian
+Copyright 2002 Free Software Foundation, Inc.
+GDB is free software, covered by the GNU General Public License, and you are
+welcome to change it and/or distribute copies of it under certain conditions.
+Type "show copying" to see the conditions.
+There is absolutely no warranty for GDB.  Type "show warranty" for details.
+This GDB was configured as "powerpc-linux"...
+(gdb) run -X
+Starting program: /usr/sbin/apache.dbg -X
+[New Thread 16384 (LWP 13598)]
+.
+.
+.</pre><p style="width:90%">
+			When your apache session is up and running, you can request a
+			web page with the browser, and see where things go wrong (if
+			you are dealing with a crash, for instance).
+      </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"><img src="images/prev.png" alt="Prev"></a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="lazybridge.html"><img src="images/next.png" alt="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"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top"> Example: the <span class="quote">“<span class="quote">Lazy</span>”</span> bridge</td></tr></table></div></body></html>

Added: tcl/site/rivet/manual3.0/lassign_array.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual3.0/lassign_array.html?rev=1821429&view=auto
==============================================================================
--- tcl/site/rivet/manual3.0/lassign_array.html (added)
+++ tcl/site/rivet/manual3.0/lassign_array.html Wed Jan 17 22:31:48 2018
@@ -0,0 +1,18 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>lassign_array</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Apache Rivet 3.0"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="inspect.html" title="inspect"><link rel="next" href="lempty.html" title="lempty"></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">lassign_array</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="inspect.html"><img src="images/prev.png" alt="Prev"></a> </td><th width="60%" align="center">Rivet Tcl Commands and Variables</th><td width="20%" align="right"> <a accesskey="n" href="lempty.html"><img src="images/next.png" alt="Next"></a></td></tr
 ></table></div><div class="refentry"><div class="refentry.separator"><hr></div><a name="lassign_array"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>lassign_array — Assign a list of values to array variables</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis" style="width:80%"><div style="border: 1px solid #282; margin:1ex ; padding:.4ex; padding-left: 0.8ex;   word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">::rivet::lassign_array</span>  ?<span style="font-family:monospace; font-weight: bold;">value_list</span>? ?<span style="font-family:monospace; font-weight: bold;">array_name</span>? ?<span style="font-family:monospace; font-weight: bold;">array_variables</span>?</div></div></div><div class="refsect1"><a name="idm1351"></a><h2>Description</h2><p style="width:90%">
+                <span style="font-family:monospace"><span class="command"><strong>lassign_array</strong></span></span> is an utility command inspired by the same Tclx command and 
+                with a close resemblance with Tcl's <span style="font-family:monospace"><span class="command"><strong>lassign</strong></span></span> for assigning list elements to variables.
+                <span style="font-family:monospace"><span class="command"><strong>lassign_array</strong></span></span> first argument is a list of values to be assigned to an array that must be 
+                given as second argument. The remaining arguments are the array's variable names which will store
+                as values the elements of the list. Variables names don't matching values in the list are given an empty string. 
+                Unassigned list elements are returned as a list.
+	       </p><pre class="programlisting">::rivet::lassign_array {1 2 3 4} assigned_array a b c d
+parray assigned_array
+<span class="strong"><strong>assigned_array</strong></span>
+assigned_array(a) = 1
+assigned_array(b) = 2
+assigned_array(c) = 3
+assigned_array(d) = 4
+
+set rem [::rivet::lassign_array {1 2 3 4 5 6 7} assigned_array a b c d]
+puts $rem
+5 6 7</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="inspect.html"><img src="images/prev.png" alt="Prev"></a> </td><td width="20%" align="center"><a accesskey="u" href="commands.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right"> <a accesskey="n" href="lempty.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">inspect </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top"> lempty</td></tr></table></div></body></html>



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