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 2014/06/17 20:22:41 UTC
svn commit: r1603247 [6/8] - in /tcl/site/rivet: ./ manual2.2/
manual2.2/images/ picts/ static/ templates/wondrous/
Added: tcl/site/rivet/manual2.2/internals.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/internals.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/internals.html (added)
+++ tcl/site/rivet/manual2.2/internals.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,179 @@
+<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.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="index.html" title="Apache Rivet"><link rel="prev" 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"><img src="images/prev.png" alt="Prev"></a>Â </td><th width="60%" align="center">Â </th><td width="20%" align="right">Â <a accesskey="n" href="upgrading.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="idp60296192"></a>Initialization</h3></div></div></div><p style="width:90%">
+ When Apache is started, (or when child Apache processes are
+ started if a threaded Tcl is used),
+ <code class="function">Rivet_InitTclStuff</code> is called, which
+ creates a new interpreter, or one interpreter per virtual
+ host, depending on the configuration. It also initializes
+ various things, like the <span class="structname">RivetChan</span>
+ channel system, creates the Rivet-specific Tcl commands, and
+ executes Rivet's <code class="filename">init.tcl</code>. The caching
+ system is also set up, and if there is a
+ <span style="font-family:monospace"><span class="command"><strong>GlobalInitScript</strong></span></span>, it is run.
+ </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp60282640"></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 lets 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 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><div><h3 class="title"><a name="idp60346288"></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="idp60351728"></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 <? ?>
+ 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="idp60356848"></a>Extending Rivet by developing C procedures implementing new commands</h3></div></div></div><p style="width:90%">
+ Rivet endows the Tcl interpreter with new commands
+ to provide an interface from the application layer to the
+ Apache web server internal data. Many of these commands
+ are meaningful only when HTTP request are being processed
+ and a fundamental data structure has been allocated and
+ intialized by the Apache framework: the request_rec object.
+ In case commands have to be written that have to gain access
+ to a valid request_rec object pointer they must check if such
+ a pointer exists and it's initialized
+ with valid data.
+ </p><p style="width:90%">
+ For this purpose in src/rivet.h the macro
+ CHECK_REQUEST_REC was defined accepting to arguments: the pointer
+ to the request_rec object (stored in the
+ <span class="structname">rivet_interp_globals</span>
+ structure) 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 step to follow
+ to implement 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)</pre>
+ This macro ensures the command is defined as <span style="font-family:monospace"><span class="command"><strong>::rivet::mycmd</strong></span></span></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 gain access to <span style="font-family:monospace"><span class="command"><strong>globals->r</strong></span></span>
+ put add the macro testing for the pointer
+ <pre class="programlisting">TCL_CMD_HEADER( Rivet_MyCmd )
+{
+ rivet_interp_globals *globals = Tcl_GetAssocData( interp, "rivet", NULL );
+ ....
+ CHECK_REQUEST_REC(globals->r,"::rivet::mycmd");
+ ...
+}</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 <arg1> <arg2>
+....</pre>
+ Where <arg1> <arg2> are optional
+ arguments in case the command needs to check for <span style="font-family:monospace"><span class="command"><strong>globals->r</strong></span></span>
+ in special cases. 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->1
+mycmd->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>globals->r</strong></span></span> pointer.
+ </li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp60372384"></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 run
+ the <span style="font-family:monospace"><span class="command"><strong>./configure.tcl</strong></span></span> script with the
+ -enable-symbols option, and recompile.
+ </p><p style="width:90%">
+ 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="upgrading.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"> Upgrading from mod_dtcl or NeoWebScript</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/lassign_array.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/lassign_array.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/lassign_array.html (added)
+++ tcl/site/rivet/manual2.2/lassign_array.html Tue Jun 17 18:22:39 2014
@@ -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.78.1"><link rel="home" href="index.html" title="Apache Rivet"><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></t
able></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="idp56810976"></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>
Added: tcl/site/rivet/manual2.2/lempty.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/lempty.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/lempty.html (added)
+++ tcl/site/rivet/manual2.2/lempty.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,7 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>lempty</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="lassign_array.html" title="lassign_array"><link rel="next" href="lmatch.html" title="lmatch"></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">lempty</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="lassign_array.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="lmatch.html"><img src="images/next.png" alt="Next"></a></td></tr
></table></div><div class="refentry"><div class="refentry.separator"><hr></div><a name="lempty"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>lempty â
+ Returns 1 if <list> is empty or 0 if it has any elements.
+ This command emulates the TclX lempty command.
+ </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::lempty</span> <span style="font-family:monospace; font-weight: bold;">list</span> </div></div></div><div class="refsect1"><a name="idp56820720"></a><h2>Description</h2><p style="width:90%">
+ Returns 1 if <list> is empty or 0 if it has any elements.
+ This command emulates the TclX lempty command.
+ </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="lassign_array.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="lmatch.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">lassign_array </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"> lmatch</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/lmatch.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/lmatch.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/lmatch.html (added)
+++ tcl/site/rivet/manual2.2/lmatch.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,14 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>lmatch</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="lempty.html" title="lempty"><link rel="next" href="load_cookies.html" title="load_cookies"></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">lmatch</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="lempty.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="load_cookies.html"><img src="images/next.png" alt="Next"></a></td></tr></
table></div><div class="refentry"><div class="refentry.separator"><hr></div><a name="lmatch"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>lmatch â
+ Look for elements in <list> that match <pattern>
+ </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::lmatch</span> (<span style="font-family:monospace; font-weight: bold;">-exact</span> | <span style="font-family:monospace; font-weight: bold;">-glob</span> | <span style="font-family:monospace; font-weight: bold;">-regexp</span>) <span style="font-family:monospace; font-weight: bold;">list</span> <span style="font-family:monospace; font-weight: bold;">pattern</span> </div></div></div><div class="refsect1"><a name="idp56830832"></a><h2>Description</h2><p style="width:90%">
+ Look for elements in <list> that match <pattern>.
+ This command is a decent replacement for TclX lmatch command when TclX is
+ not available
+ </p><p style="width:90%">
+ In the following example a regular expression is matched against
+ each element in the input list and a list containing the matching
+ elements is returned
+ </p><p style="width:90%">
+ </p><pre class="programlisting">::rivet::lmatch -regexp { aaxa bxxb ccxxxxcc } {.+[x]{2}.+}
+bxxb ccxxxxcc</pre><p style="width:90%">
+ </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="lempty.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="load_cookies.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">lempty </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"> load_cookies</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/load_cookies.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/load_cookies.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/load_cookies.html (added)
+++ tcl/site/rivet/manual2.2/load_cookies.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,5 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>load_cookies</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="lmatch.html" title="lmatch"><link rel="next" href="load_env.html" title="load_env"></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">load_cookies</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="lmatch.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="load_env.html"><img src="images/next.png" alt="Next"></a></td></tr></
table></div><div class="refentry"><div class="refentry.separator"><hr></div><a name="load_cookies"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>load_cookies â get any cookie variables sent by the client.</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::load_cookies</span> ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>array_name</code></em></span>?</div></div></div><div class="refsect1"><a name="idp56838432"></a><h2>Description</h2></div><p style="width:90%">
+ Load the array of cookie variables into the specified
+ array name. Uses array cookies by
+ default.
+ </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="lmatch.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="load_env.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">lmatch </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"> load_env</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/load_env.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/load_env.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/load_env.html (added)
+++ tcl/site/rivet/manual2.2/load_env.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,10 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>load_env</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="load_cookies.html" title="load_cookies"><link rel="next" href="load_headers.html" title="load_headers"></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">load_env</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="load_cookies.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="load_headers.html"><img src="images/next.png" alt="
Next"></a></td></tr></table></div><div class="refentry"><div class="refentry.separator"><hr></div><a name="load_env"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>load_env â get the request's environment 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::load_env</span> ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>array_name</code></em></span>?</div></div></div><div class="refsect1"><a name="idp56844464"></a><h2>Description</h2><p style="width:90%">
+ Load the array of environment variables into the specified
+ array name. Uses array ::request::env by
+ default.
+ </p><p style="width:90%">
+ As Rivet pages are run in the ::request
+ namespace, it isn't necessary to qualify the array name
+ for most uses - it's ok to access it as
+ env.
+ </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="load_cookies.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="load_headers.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">load_cookies </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"> load_headers</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/load_headers.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/load_headers.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/load_headers.html (added)
+++ tcl/site/rivet/manual2.2/load_headers.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,5 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>load_headers</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="load_env.html" title="load_env"><link rel="next" href="load_response.html" title="load_response"></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">load_headers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="load_env.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="load_response.html"><img src="images/next.png" alt="N
ext"></a></td></tr></table></div><div class="refentry"><div class="refentry.separator"><hr></div><a name="load_headers"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>load_headers â get client request's headers.</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::load_headers</span> ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>array_name</code></em></span>?</div></div></div><div class="refsect1"><a name="idp56851792"></a><h2>Description</h2><p style="width:90%">
+ Load the headers that come from a client request into the
+ provided array name, or use headers if no
+ name is provided.
+ </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="load_env.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="load_response.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">load_env </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"> load_response</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/load_response.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/load_response.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/load_response.html (added)
+++ tcl/site/rivet/manual2.2/load_response.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,27 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>load_response</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="load_headers.html" title="load_headers"><link rel="next" href="lremove.html" title="lremove"></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">load_response</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="load_headers.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="lremove.html"><img src="images/next.png" alt="Next"
></a></td></tr></table></div><div class="refentry"><div class="refentry.separator"><hr></div><a name="load_response"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>load_response â load form variables into an array.</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::load_response</span> ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>arrayName</code></em></span>?</div></div></div><div class="refsect1"><a name="idp56857840"></a><h2>Description</h2><p style="width:90%">
+ Load any form variables passed to this page into an
+ array. If <span style="font-family:monospace"><span class="command"><strong>load_response</strong></span></span> is called without
+ arguments the array response is created in
+ the scope of the caller. If the variables var1,var2,var3...
+ having values val1,val2,val3... are passed to the page, the
+ resulting array will be a collection mapping var1,var2,var3...
+ to their corresponding values. <span style="font-family:monospace"><span class="command"><strong>load_response</strong></span></span>
+ was inspired by the same NeoWebScript procedure in the way
+ it deals with multiple assignments: if a variable
+ is assigned more than once the corresponding array element will be a
+ list of the values for the variable. This can be useful in the case
+ of forms with checkbox options that are given the same name.
+ This condition is signalled by the presence of an auxiliary array
+ variable.
+ </p><p style="width:90%">
+ Example: if a group of checkboxes are associated to the var1
+ variable then <span style="font-family:monospace"><span class="command"><strong>response(var1)</strong></span></span> will store
+ the list of their values and the array will also have the extra variable
+ response(__var1) which can be tested with
+ the usual <span style="font-family:monospace"><span class="command"><strong>[info exists response(__var1)]</strong></span></span>
+ </p><p style="width:90%">
+ Calling <span style="font-family:monospace"><span class="command"><strong>load_response</strong></span></span> several times for the same
+ array results in adding more values to the array at every call.
+ When needed it is left to the caller to empty the array between
+ two subsequent calls.
+ </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="load_headers.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="lremove.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">load_headers </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"> lremove</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/lremove.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/lremove.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/lremove.html (added)
+++ tcl/site/rivet/manual2.2/lremove.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,12 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>lremove</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="load_response.html" title="load_response"><link rel="next" href="makeurl.html" title="makeurl"></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">lremove</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="load_response.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="makeurl.html"><img src="images/next.png" alt="Next"></a></td
></tr></table></div><div class="refentry"><div class="refentry.separator"><hr></div><a name="lremove"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>lremove â remove from a list elements matching one or more patterns</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><span style="font-family:monospace"><span class="command"><strong>::rivet::lremove</strong></span></span> (<span style="font-family:monospace; font-weight: bold;">-regexp | -glob | -exact</span>) <span style="font-family:monospace; font-weight: bold;">list</span> <span style="font-family:monospace; font-weight: bold;">pattern</span> ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>pattern</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>pattern</code></em></span>?</div><div class="refsect1"><a name="idp56873856"></a><h2>Description</h2><p style="width:90%">
+ <span style="font-family:monospace"><span class="command"><strong>lremove</strong></span></span> removes from list ?<span style="font-family:monospace; font-weight: bold;">list</span>? the first occurrence
+ of an element matching one of the patterns listed in the command line. By specifying the
+ -all option every occurrence of one the patterns is removed
+ </p><p style="width:90%">
+ Pattern matching can be -exact,-glob style or following
+ regular expressions (-regexp). These options are globally valid across the
+ whole pattern list (default is glob style matching)
+ </p><pre class="programlisting">::rivet::lremove -all -regexp {aa e111 bab aa} aa e111 bab
+e111 bab
+::rivet::lremove -all -regexp {aa e111 bab aa} aa "e\\d+"
+bab</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="load_response.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="makeurl.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">load_response </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"> makeurl</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/makeurl.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/makeurl.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/makeurl.html (added)
+++ tcl/site/rivet/manual2.2/makeurl.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,17 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>makeurl</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="lremove.html" title="lremove"><link rel="next" href="no_body.html" title="no_body"></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">makeurl</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="lremove.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="no_body.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="makeurl"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>makeurl â construct url's based on hostname, port.</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::makeurl</span> ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>filename</code></em></span>?</div></div></div><div class="refsect1"><a name="idp56883920"></a><h2>Description</h2><p style="width:90%">
+ Create a self referencing URL from a filename. <span style="font-family:monospace"><span class="command"><strong>makeurl</strong></span></span>
+ can be used in three ways
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> No argument is passed to the command (returns the current script URL)</li><li class="listitem">
+ A relative style path is passed (returns the argument prepended with the
+ current script's URL
+ </li><li class="listitem">
+ An absolute path is passed to the command: (returns the full URL to the
+ resource)
+ </li></ul></div><p style="width:90%">
+ </p><p style="width:90%">
+ Example of absolute path: </p><pre class="programlisting">::rivet::makeurl /tclp.gif</pre><p style="width:90%"> returns
+ <code class="computeroutput">http://[hostname]:[port]/tclp.gif</code>.
+ where hostname and port are the hostname and port of the
+ server in question. The protocol prefix is inferred from the protocol in the URL referencing the
+ script.
+ </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="lremove.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="no_body.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">lremove </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"> no_body</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/no_body.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/no_body.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/no_body.html (added)
+++ tcl/site/rivet/manual2.2/no_body.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,5 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>no_body</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="makeurl.html" title="makeurl"><link rel="next" href="parray.html" title="parray"></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">no_body</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="makeurl.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="parray.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><
div class="refentry"><div class="refentry.separator"><hr></div><a name="no_body"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>no_body â Prevents Rivet from sending any content.</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::no_body</span> </div></div></div><div class="refsect1"><a name="idp56892800"></a><h2>Description</h2><p style="width:90%">
+ This command is useful for situations where it is necessary
+ to only return HTTP headers and no actual content. For
+ instance, when returning a 304 redirect.
+ </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="makeurl.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="parray.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">makeurl </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"> parray</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/parray.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/parray.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/parray.html (added)
+++ tcl/site/rivet/manual2.2/parray.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,6 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>parray</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="no_body.html" title="no_body"><link rel="next" href="parse.html" title="parse"></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">parray</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="no_body.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="parse.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div c
lass="refentry"><div class="refentry.separator"><hr></div><a name="parray"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>parray â Tcl's <span style="font-family:monospace"><span class="command"><strong>parray</strong></span></span> with html formatting.</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::parray</span> ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>arrayName</code></em></span>? ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>?<span class="optional">pattern</span>?</code></em></span>?</div></div></div><div class="refsect1"><a name="idp56900304"></a><h2>Description</h2><p style="width:90%">
+ An html version of the standard Tcl
+ <span style="font-family:monospace"><span class="command"><strong>parray</strong></span></span> command. Displays the entire
+ contents of an array in a sorted, nicely-formatted way.
+ Mostly used for debugging purposes.
+ </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="no_body.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="parse.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">no_body </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"> parse</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/parse.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/parse.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/parse.html (added)
+++ tcl/site/rivet/manual2.2/parse.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,5 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>parse</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="parray.html" title="parray"><link rel="next" href="raw_post.html" title="raw_post"></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">parse</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parray.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="raw_post.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><d
iv class="refentry"><div class="refentry.separator"><hr></div><a name="parse"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>parse â parses a Rivet template file.</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::parse</span> ?<span style="font-family:monospace; font-weight: bold;"><em class="replaceable"><code>filename</code></em></span>?</div></div></div><div class="refsect1"><a name="idp56906640"></a><h2>Description</h2><p style="width:90%">
+ Like the Tcl <span style="font-family:monospace"><span class="command"><strong>source</strong></span></span> command, but also
+ parses for Rivet <? and ?> processing tags. Using
+ this command, you can use one .rvt file from another.
+ </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="parray.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="raw_post.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">parray </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"> raw_post</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/raw_post.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/raw_post.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/raw_post.html (added)
+++ tcl/site/rivet/manual2.2/raw_post.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,4 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>raw_post</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="parse.html" title="parse"><link rel="next" href="read_file.html" title="read_file"></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">raw_post</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parse.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="read_file.html"><img src="images/next.png" alt="Next"></a></td></tr></table></
div><div class="refentry"><div class="refentry.separator"><hr></div><a name="raw_post"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>raw_post â get the unmodified body of a POST request sent by the client.</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::raw_post</span> </div></div></div><div class="refsect1"><a name="idp56912272"></a><h2>Description</h2></div><p style="width:90%">
+ Returns the raw POST data from the request. If the request was
+ not a POST or there is no data, then "" - an empty string - is returned.
+ </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="parse.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="read_file.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">parse </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"> read_file</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/read_file.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/read_file.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/read_file.html (added)
+++ tcl/site/rivet/manual2.2/read_file.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,6 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>read_file</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="commands.html" title="Rivet Tcl Commands and Variables"><link rel="prev" href="raw_post.html" title="raw_post"><link rel="next" href="unescape_string.html" title="unescape_string"></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">read_file</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="raw_post.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="unescape_string.html"><img src="images/next.png" alt="N
ext"></a></td></tr></table></div><div class="refentry"><div class="refentry.separator"><hr></div><a name="read_file"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>read_file â
+ Read the entire contents of a file and return it as a string.
+ </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::read_file</span> ?<span style="font-family:monospace; font-weight: bold;">file name</span>?</div></div></div><div class="refsect1"><a name="idp56917952"></a><h2>Description</h2><p style="width:90%">
+ This is a utility command which loads the entire content of
+ a file and returns it as a result.
+ </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="raw_post.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="unescape_string.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">raw_post </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"> unescape_string</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/request.html
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/request.html?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/request.html (added)
+++ tcl/site/rivet/manual2.2/request.html Tue Jun 17 18:22:39 2014
@@ -0,0 +1,162 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Apache Child Processes Lifecycle and Request Processing</title><link rel="stylesheet" type="text/css" href="rivet.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="index.html" title="Apache Rivet"><link rel="prev" href="installation.html" title="Apache Rivet Installation"><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 Child Processes Lifecycle and Request Processing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="installation.html"><img src="images/prev.png" alt="Prev"></a>Â </td><th width="60%" align="center">Â </th><td width="20%" align="right">Â <a access
key="n" href="directives.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="request"></a>Apache Child Processes Lifecycle and Request Processing</h2></div></div></div><div class="simplesect"><div class="titlepage"><div><div><h3 class="title"><a name="idp56088560"></a>Apache Child Process Lifecycle</h3></div></div></div><p style="width:90%">
+ Apache Rivet delegates to the <a class="ulink" href="" target="_top">Multi-Processing Module (MPM)</a>
+ the task of managing the agents responding to network requests.
+ An MPM is responsible for creating such agents during the start-up,
+ and is in charge for terminating existing ones and recreating new
+ agents when the workload is requiring it.
+ </p><p style="width:90%">
+ Apache Rivet is currently supporting only the
+ <a class="ulink" href="http://httpd.apache.org/docs/2.2/mod/prefork.html" target="_top">prefork</a>
+ MPM which creates full fledged child processes as independent agents
+ responding to network requests.
+ Efforts are under way to extend the support to
+ the <a class="ulink" href="http://httpd.apache.org/docs/2.2/mod/worker.html" target="_top">worker</a> MPM,
+ a hybrid model where forked child processes in turn create threads as real
+ network agents. If we can achieve this the goal would open the possibility of
+ supporting also the Windows© specific
+ <a class="ulink" href="http://httpd.apache.org/docs/2.2/mod/mpm_winnt.html" target="_top">winnt</a> MPM,
+ where a single process creates and manages a large number of thread agents.
+ </p><p style="width:90%">
+ Configuration parameters about this critical point can be read in the
+ <a class="ulink" href="http://httpd.apache.org/docs/2.2/misc/perf-tuning.html" target="_top">Apache
+ documentation</a>.
+ </p><p style="width:90%">
+ There are 4 stages in the lifetime of an Apache webserver that are relevant
+ to Rivet:
+ </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><h4><a name="idp56139040"></a>Single Process Initialization</h4><div style="margin-bottom:1.5ex ; padding .5ex">
+ Apaches starts up as a single process. During this stage Apache performs
+ various preliminary tasks including reading and parsing the configuration.
+ After the configuration has been read Rivet sets up some internal resources
+ and if a Tcl script is set as argument of a <span style="font-family:monospace"><span class="command"><strong>ServerInitScript</strong></span></span> directive
+ the script is executed.
+ Variables, arrays or dictionaries created during the execution of this script
+ will be preserved and later replicated in the child process intepreters,
+ since the prefork MPM creates new child processes with a fork() system call (which
+ involves only in memory copy of sections of a process address space). Thus
+ <span style="font-family:monospace"><span class="command"><strong>ServerInitScript</strong></span></span>
+ is a good place to do global initialization that doesn't involve
+ creation of private data. Example of tasks that can be done
+ in this context are importing namespace commands and loading packages
+ providing code of general interest for every application to
+ be served. Also IPC methods can be initialized in this stage.
+ </div></li><li class="listitem"><h4><a name="idp56142560"></a>Child Process Initialization</h4><div style="margin-bottom:1.5ex ; padding .5ex">
+ Right after the webserver has forked its child processes
+ there is a chance to perform specific initialization of their Tcl interpreters.
+ This is the stage where most likely you want to open I/O channels,
+ database connections or any other resource that has to be private to an
+ interpreter. When the option <span style="font-family:monospace"><span class="command"><strong>SeparateVirtualInterps</strong></span></span> is
+ turned off child processes will have a single interpreter regardless
+ the number of virtual hosts configured. The
+ <span style="font-family:monospace"><span class="command"><strong>GlobalInitScript</strong></span></span> is the configuration script
+ the child process will run once before getting ready to
+ serve requests
+ </div><div style="margin-bottom:1.5ex ; padding .5ex">
+ When <span style="font-family:monospace"><span class="command"><strong>SeparateVirtualInterps</strong></span></span> is turned on
+ each configured virtual host will have its own slave interpreter which
+ can will run the <span style="font-family:monospace"><span class="command"><strong>ChildInitScript</strong></span></span> directive as
+ initialization script. The
+ <span style="font-family:monospace"><span class="command"><strong>ChildInitScript</strong></span></span> has to be
+ placed within a <VirtualHost...>...</VirtualHost ...>
+ stanza to associate a script to a specific virtual host initialization.
+ This scenario of interpreter separation is extremely useful to
+ prevent resource conflicts when different virtual hosts are
+ serving different web applications.
+ </div><div style="margin-bottom:1.5ex ; padding .5ex">
+ <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"><span style="font-family:monospace"><span class="command"><strong>GlobalInitScript</strong></span></span> has no effect to working interpreters
+ when <span style="font-family:monospace"><span class="command"><strong>SeparateVirtualInterps</strong></span></span> is set.
+ </td></tr></table></div>
+ </div></li><li class="listitem"><h4><a name="idp56150784"></a>Request Processing and Content Generation</h4><div style="margin-bottom:1.5ex ; padding .5ex">
+ After a child has been initialized it's ready to serve requests.
+ A child process' lifetime is almost entirely spent in this phase, waiting
+ for connections and responding to requests. At every request the URL
+ goes through filter processing and, in case, rewritten
+ (mod_rewrite, Alias directives, etc).
+ Parameter values encoded in the request are made available to the
+ environment and finally the script encoded in the URL is run.
+ The developer can tell Rivet if optionally the execution has to
+ be preceded by a <span style="font-family:monospace"><span class="command"><strong>BeforeScript</strong></span></span> and followed by an
+ <span style="font-family:monospace"><span class="command"><strong>AfterScript</strong></span></span>. The real script mod_rivet will
+ execute is the result of the concatenation of the
+ <span style="font-family:monospace"><span class="command"><strong>BeforeScript</strong></span></span>,
+ the script encoded in the URL and the <span style="font-family:monospace"><span class="command"><strong>AfterScript</strong></span></span>.
+ Thus the whole ensemble of code that makes up a web application might
+ be running within the same "before" and "after" scripts to which
+ the programmer can devolve tasks common to every
+ page of an application.
+ </div></li><li class="listitem"><h4><a name="idp56155632"></a>Child Process Exit</h4><div style="margin-bottom:1.5ex ; padding .5ex">
+ If no error condition forces the child process to a premature exit, his
+ life is determined by the Apache configuration parameters. To reduce
+ the effects of memory leaks in buggy applications the Apache webserver
+ forces a child process to exit after a
+ certain number of requests served. A child process gets replaced
+ with a brand new one if the workload of webserver requires so.
+ Before the process quits an exit handler can be run
+ to do some housekeeping, just in case something the could have been
+ left behind has to be cleaned up. Like the initialization scripts
+ <span style="font-family:monospace"><span class="command"><strong>ChildExitScript</strong></span></span> too is a "one shot" script.
+ </div><div style="margin-bottom:1.5ex ; padding .5ex">
+ The Tcl <span style="font-family:monospace"><span class="command"><strong>exit</strong></span></span> command forces an interpreter to
+ quit, thus removing the ability of the process embedding it
+ to run more Tcl scripts. The child process then is forced
+ to exit and be replaced by a new one when the workload demands it.
+ This operation implies the <span style="font-family:monospace"><span class="command"><strong>ChildExitScript</strong></span></span> be
+ run before the interpreter is actually deleted.
+ </div></li></ol></div></div><div class="simplesect"><div class="titlepage"><div><div><h3 class="title"><a name="idp56160224"></a>Apache Rivet Error and Exception Scripts Directives</h3></div></div></div><p style="width:90%">
+ Rivet is highly configurable and each of the webserver lifecycle stages
+ can be exploited to control a web application.
+ Not only the orderly sequence of stages
+ in a child lifecycle can be controlled with Tcl scripts, but also
+ Tcl error or abnormal conditions taking place during
+ the execution can be caught and handled with specific scripts.
+ </p><p style="width:90%">
+ Tcl errors (conditions generated when a command exits with code TCL_ERROR)
+ usually result in the printing of a backtrace of the code fragment
+ relevant to the error.
+ Rivet can set up scripts to trap these errors and run instead
+ an <span style="font-family:monospace"><span class="command"><strong>ErrorScript</strong></span></span> to handle it and conceal details
+ that usually have no interest for the end user and it
+ may show lines of code that ought to remain private. The ErrorScript
+ handler might create a polite error page where things
+ can be explained in human readable form, thus enabling the end user
+ to provide meaningful feedback information.
+ </p><p style="width:90%">
+ In other cases an unmanageable conditions might take place in the data and
+ this could demand an immediate interruption of the content generation. These abort
+ conditions can be fired by the <a class="xref" href="abort_page.html" title="abort_page">abort_page</a> command, which
+ in turn fires the execution of an <span style="font-family:monospace"><span class="command"><strong>AbortScript</strong></span></span> to handle
+ the abnormal condition. Starting with Rivet 2.1.0 <a class="xref" href="abort_page.html" title="abort_page">abort_page</a>
+ accepts a free form parameter that can be retrieved later with the command
+ <a class="xref" href="abort_code.html" title="abort_code">abort_code</a>
+ </p></div><div class="simplesect"><div class="titlepage"><div><div><h3 class="title"><a name="idp56166464"></a>Tcl Namespaces in Rivet and the <span style="font-family:monospace"><span class="command"><strong>::request</strong></span></span> Namespace</h3></div></div></div><p style="width:90%">
+ With the sole exception of .rvt templates, Rivet runs pure Tcl scripts
+ at the global namespace. That means that every variable or procedure
+ created in Tcl scripts resides by default in the
+ "::" namespace (just like in traditional Tcl scripting) and they
+ are persistent across different requests until explicitly unset or
+ until the interpreter is deleted.
+ You can create your own application namespaces to store data but
+ it is important to remember that subsequent requests will in general be served
+ by different child processes. Your application can rely on the fact that
+ certain application data will be in the interpreter, but you shouldn't
+ assume the state of a transaction spanning several pages
+ can be stored in this way and be safely kept available to a
+ specific client. Sessions exist for this purpose and Rivet ships its own
+ session package with support for most of popular DBMS. Nonetheless
+ storing data in the global namespace can be useful, even though scoping
+ data in a namespace is recommended. I/O channels and
+ database connections are examples of information usually specific
+ to a process for which you don't want to pay the overhead of creating them
+ at every request, probably causing a dramatic loss in the application
+ performance.
+ </p><p style="width:90%">
+ A special role in the interpreter is played by the <span style="font-family:monospace"><span class="command"><strong>::request</strong></span></span>
+ namespace. The <span style="font-family:monospace"><span class="command"><strong>::request</strong></span></span> namespace is deleted and recreated
+ at every request and Rivet templates (.rvt files) are executed within it.
+ </p><p style="width:90%">
+ Unless you're fully qualifying variable names outside the <span style="font-family:monospace"><span class="command"><strong>::request</strong></span></span>
+ namespace, every variable and procedure created in .rvt files is by default placed in
+ it and deleted before any other requests gets processed. It is therefore safe to
+ create variables or object instances in template files and foresake about them: Rivet
+ will take care of cleaning the namespace up and everything created inside the namespace
+ will be destroyed.
+ </p><div class="table"><a name="namespaces"></a><table><thead><td>Stage</td><td>Script</td><td>Namespace</td></thead><tbody><tr class="init"><td>Apache Initialization</td><td>ServerInitScript</td><td>::</td></tr><tr class="childinit"><td rowspan="2">Child Initialization</td><td>GlobalInitScript</td><td>::</td></tr><tr class="childinit"><td>ChildInitScript</td><td>::</td></tr><tr class="processing"><td rowspan="6">Request Processing</td><td>BeforeScript</td><td>::</td></tr><tr class="processing"><td>.rvt</td><td>::request</td></tr><tr class="processing"><td>.tcl</td><td>::</td></tr><tr class="processing"><td>AfterScript</td><td>::</td></tr><tr class="processing"><td>AbortScript</td><td>::</td></tr><tr class="processing"><td>AfterEveryScript</td><td>::</td></tr><tr class="processing"><td>Error Handling</td><td>ErrorScript</td><td>::</td></tr><tr class="childexit"><td>Child Termination</td><td>ChildExitScript</td><td>::</td></tr></tbody></table></div></div></div><div class="navfooter
"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="installation.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="directives.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">Apache Rivet Installation </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"> Rivet Apache Directives</td></tr></table></div></body></html>
Added: tcl/site/rivet/manual2.2/rivet.css
URL: http://svn.apache.org/viewvc/tcl/site/rivet/manual2.2/rivet.css?rev=1603247&view=auto
==============================================================================
--- tcl/site/rivet/manual2.2/rivet.css (added)
+++ tcl/site/rivet/manual2.2/rivet.css Tue Jun 17 18:22:39 2014
@@ -0,0 +1,350 @@
+BODY
+{
+ font-family: verdana;
+}
+
+DIV.ABSTRACT
+{
+ border: solid 2px;
+ padding-left: 10pt;
+ padding-right: 10pt;
+}
+PRE.SCREEN
+{
+ font-family:monospace;
+ white-space: pre;
+ width: 100%;
+ background-color: #ffffcc;
+ border:solid;
+ color: #000000;
+ border-color: #009999;
+ border-left: solid #009999 2px;
+ border-right: solid #009999 2px;
+ border-top: solid #009999 2px;
+ border-bottom: solid #009999 2px;
+ padding-left: 15pt;
+}
+
+PRE.PROGRAMLISTING
+{
+ font-family: monospace;
+ white-space: pre;
+ width: 95%;
+ background-color: #eeffee;
+ border: solid;
+ color: #000000;
+ border-color: #009999;
+ border-left: solid #009999 1px;
+ border-right: solid #009999 1px;
+ border-top: solid #009999 1px;
+ border-bottom: solid #009999 1px;
+ font-size: normal;
+ padding-top: 1em;
+ padding-left: 1em;
+ padding-bottom: 1em;
+}
+
+H1
+{
+ color: #ffffff;
+ border: solid 3px #a0a0d0;
+ background-color: #606090;
+ font-variant: small-caps;
+ width: 100%;
+}
+
+H1.TITLE
+{
+ color: #ffffff;
+ border: solid 3px #a0a0d0;
+ background-color: #606090;
+ font-variant: small-caps;
+ width: 100%;
+}
+
+.TITLE a {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+.TITLE a:active {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+.TITLE a:visited {
+ color: #ffffff;
+ text-decoration: none;
+}
+
+H2
+{
+ COLOR: #ffffff ;
+ font-style: italic;
+ BACKGROUND-color: #a0d0a0;
+ BORDER: solid 3px #609060;
+ PADDING: 5px
+}
+
+TABLE.IMPORTANT
+{
+ font-style:italic;
+ border: solid 2px #ff0000;
+ width: 70%;
+ margin-left: 15%;
+}
+TABLE.CAUTION
+{
+ font-style:italic;
+ border: ridge 2px #ffff00;
+ width: 70%;
+ margin-left: 15%;
+}
+
+TABLE.NOTE
+{
+ font-style:italic;
+ border: solid 1px #000000;
+ width: 70%;
+ margin-left: 15%;
+}
+TABLE.TIP
+{
+ font-style:italic;
+ border: solid 1px #000000;
+ width: 70%;
+ margin-left: 15%;
+}
+
+TABLE.WARNING
+{
+ font-style:italic;
+ font-weight: bold;
+ border: ridge 4px #ff0000;
+
+ width: 70%;
+ margin-left: 15%;
+}
+
+DIV.VARIABLELIST {
+ font-family: sans-serif;
+ font-style: normal;
+ font-weight: normal;
+ padding-left: 20px;
+ font-size: small;
+}
+
+.VARLISTENTRY {
+ font-weight: bold;
+ margin-top: 10px;
+ COLOR: #ffffff ;
+ BACKGROUND-color: #a0a0d0;
+ BORDER: solid 1px #606090;
+ PADDING: 1px
+}
+
+/*
+ * See http://diveintoaccessibility.org/day_26_using_relative_font_sizes.html
+ * for an explanation of the following few commands.
+ * They are really too complicated to explain here in all depth. ;-)
+*/
+
+P {
+ font-size: 12px;
+}
+
+/*/*/A{}
+BODY P {
+
+/* font-size: x-small; */
+ voice-family: "\"}\"";
+ voice-family: inherit;
+ font-size: normal;
+}
+
+HTML>BODY P {
+ font-size: normal;
+}
+/* */
+
+/* Add an external-link icon to absolute links */
+a[href^="http:"] {
+ background: url(images/remote.png) right center no-repeat;
+ padding-right: 12px;
+}
+
+a[href^="http:"]:hover {
+ background: url(images/remote.png) right center no-repeat;
+}
+
+/* Add a note icon to footnote links */
+a[href^="#FTN"] {
+ background: url(images/qbullet-note.png) right center no-repeat;
+ padding-right: 12px;
+}
+
+a[href^="#FTN"]:hover {
+ background: url(images/qbullet-note.png) right center no-repeat;
+}
+
+/* ...and a back icon to the backlinks in the footnotes themselves */
+a[name^="FTN"] {
+ background: url(images/scrollup.png) right center no-repeat;
+ padding-right: 12px;
+}
+
+a[name^="FTN"]:hover {
+ background: url(images/scrollup.png) right center no-repeat;
+}
+
+/* Add a download icon to .gz links */
+a[href$=".gz"],a[href$=".tar"],a[href$=".zip"] {
+ background: url(images/disk.png) right center no-repeat;
+ padding-right: 12px;
+}
+
+
+/* Add an Acrobat Reader icon to PDF links */
+a[href$=".pdf"] {
+ background: url(images/acrobat.png) right center no-repeat;
+ padding-right: 12px;
+}
+
+a[href$=".pdf"]:hover {
+ background: url(images/acrobat.png) right center no-repeat;
+}
+
+/* Add a Word icon to RTF links */
+a[href$=".rtf"] {
+ background: url(images/word.png) right center no-repeat;
+ padding-right: 12px;
+}
+
+
+/* ...but not to absolute links in this domain... */
+a[href^="http://www.karakas-online.de"] {
+ background: transparent;
+ padding-right: 0px;
+}
+
+a[href^="http://www.karakas-online.de"]:hover {
+ background: transparent;
+}
+
+/* ...or to the translation links on each page */
+DIV.translatelink > a[href^="http:"] {
+ background: transparent;
+ padding-right: 0px;
+}
+
+DIV.translatelink > a[href^="http:"]:hover {
+ background: transparent;
+}
+
+/* ...or to any images */
+DIV.imagelink a[href^="http:"] {
+ background: transparent;
+ padding-right: 0px;
+}
+
+DIV.imagelink a[href^="http:"]:hover {
+ background: transparent;
+}
+
+
+P.C2 {
+ COLOR: #ffffff ;
+ BACKGROUND-color: #a0a0d0;
+ BORDER: solid 1px #606090;
+ PADDING: 1px
+}
+
+
+DIV.NAVFOOTER {
+ color: #000000;
+ background-color: #DFFFDF;
+ padding: 5px;
+ margin-top: 10px;
+ width: 100%;
+ border: thin solid #a0a0d0;
+}
+
+DIV.NUKEFOOTER {
+ color: #000000;
+ background-color: #B0E0E6;
+ padding: 5px;
+ margin-top: 10px;
+ width: 100%;
+ border: thin solid #a0a0d0;
+}
+
+DIV.NAVHEADER {
+ color: #000000;
+ background-color: #DFFFDF;
+ padding: 5px;
+ margin-bottom: 10px;
+ width: 100%;
+ border: thin solid #a0a0d0;
+}
+
+DIV.SECT1,DIV.SECT2,DIV.SECT3 {
+ margin-left: 20px;
+}
+
+DIV.EXAMPLE,DIV.TOC {
+ border: thin dotted #70AAE5;
+ padding-left: 10px;
+ padding-right: 10px;
+ color: #000000;
+ background-color: #E8FFE8;
+}
+DIV.EXAMPLE {
+ border: thin dotted #22AA22;
+ background-color: #EEE;
+}
+
+DIV.TOC {
+ margin-left: 20px;
+ margin-right: 20px;
+ width: 95%;
+}
+
+UL {
+ /* list-style: url("images/tux-bullet.png") disc; */
+ }
+
+#namespaces {
+ border: 1px solid black;
+}
+
+#namespaces td {
+ padding: 0.2em 1em;
+ /* font-weight: bold; */
+}
+
+#namespaces thead {
+ background-color: #aaf;
+}
+
+#namespaces tr.init {
+ background-color: #e88;
+}
+
+#namespaces tr.childinit {
+ background-color: #eee;
+}
+
+#namespaces tr.processing {
+ background-color: #e88;
+}
+#namespaces tr.childexit {
+ background-color: #eee;
+}
+
+.note td {
+ font-size: small;
+}
+
+li.listitem {
+ font-size: small;
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: site-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: site-cvs-help@tcl.apache.org