You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rivet-dev@tcl.apache.org by da...@apache.org on 2003/11/27 10:57:55 UTC
cvs commit: tcl-rivet/doc/html index.en.html internals.en.html upgrading.en.html
davidw 2003/11/27 01:57:55
Modified: . ChangeLog
doc rivet.xml
doc/html index.en.html internals.en.html upgrading.en.html
Log:
* doc/rivet.xml: Added information about debugging Apache/Rivet.
Revision Changes Path
1.146 +4 -0 tcl-rivet/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /home/cvs/tcl-rivet/ChangeLog,v
retrieving revision 1.145
retrieving revision 1.146
diff -u -r1.145 -r1.146
--- ChangeLog 20 Nov 2003 10:51:13 -0000 1.145
+++ ChangeLog 27 Nov 2003 09:57:55 -0000 1.146
@@ -1,3 +1,7 @@
+2003-11-27 David N. Welton <da...@dedasys.com>
+
+ * doc/rivet.xml: Added information about debugging Apache/Rivet.
+
2003-11-20 David N. Welton <da...@dedasys.com>
* src/make.tcl: Changed xsltproc lines to deal with new link
1.36 +79 -2 tcl-rivet/doc/rivet.xml
Index: rivet.xml
===================================================================
RCS file: /home/cvs/tcl-rivet/doc/rivet.xml,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- rivet.xml 20 Nov 2003 10:51:13 -0000 1.35
+++ rivet.xml 27 Nov 2003 09:57:55 -0000 1.36
@@ -1590,6 +1590,83 @@
feature can significantly improve performance.
</para>
</section>
+
+ <section>
+ <title>Debugging Rivet and Apache</title>
+ <para>
+ 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.
+ </para>
+ <para>
+ The first thing you should know is that Apache can be launched
+ as a <emphasis>single process</emphasis> with the
+ <option>-X</option> argument:</para>
+ <programlisting>httpd -X</programlisting>.
+ <para>
+ On Linux, one of the first things to try is the system call
+ tracer, <command>strace</command>. You don't even have to
+ recompile Rivet or Apache for this to work.
+ </para>
+
+ <programlisting>strace -o /tmp/outputfile -S 1000 httpd -X</programlisting>
+
+ <para>This command will run httpd in the system call tracer,
+ which leaves its output (there is potentially a lot of it) in
+ <filename>/tmp/outputfile</filename>. The <option>-S</option>
+ option tells <command></command>strace to only record the
+ first 1000 bytes of a syscall. Some calls such as
+ <function>write</function> 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.
+ </para>
+
+ <para>
+ If <command>strace</command> (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 <command>./configure.tcl</command> script with the
+ <option>-enable-symbols</option> option, and recompile.
+ </para>
+ <para>
+ Since it's easier to debug a single process, we'll still run
+ Apache in single process mode with -X:
+ </para>
+
+ <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)]
+.
+.
+.
+ </programlisting>
+
+ <para>
+ 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). A helpful
+ <command>gdb</command> tutorial is available here: <ulink
+ url="http://www.delorie.com/gnu/docs/gdb/gdb_toc.html"></ulink>
+ </para>
+
+ </section>
+
</section>
<section id="upgrading">
<title>Upgrading from mod_dtcl or NeoWebScript</title>
1.3 +1 -1 tcl-rivet/doc/html/index.en.html
Index: index.en.html
===================================================================
RCS file: /home/cvs/tcl-rivet/doc/html/index.en.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- index.en.html 20 Nov 2003 11:04:55 -0000 1.2
+++ index.en.html 27 Nov 2003 09:57:55 -0000 1.3
@@ -2,7 +2,7 @@
��<tt class="email"><<a href="mailto:davidw@apache.org">davidw@apache.org</a>></tt><br>
</p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Damon</span> <span class="surname">Courtney</span></h3><div class="affiliation"><div class="address"><p><br>
��<tt class="email"><<a href="mailto:damonc@apache.org">damonc@apache.org</a>></tt><br>
- </p></div></div></div></div><div><p class="copyright">Copyright � 2002, 2003 Apache Software Foundation</p></div></div><div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="index.en.html#id5416011">Introduction to Apache Rivet</a></span></dt><dt><span class="section"><a href="installation.en.html">Apache Rivet Installation</a></span></dt><dt><span class="section"><a href="directives.en.html">Rivet Apache Directives</a></span></dt><dt><span class="section"><a href="commands.en.html">Rivet Tcl Commands and Variables</a></span></dt><dt><span class="section"><a href="examples.en.html">Examples and Usage</a></span></dt><dt><span class="section"><a href="tcl_packages.en.html">Rivet Tcl Packages</a></span></dt><dt><span class="section"><a href="help.en.html">Resources - How to Get Help</a></span></dt><dd><dl><dt><span class="section"><a href="help.en.html#id5419473">Mailing Lists</a></span></dt><dt><span class="section"><a href="help.en.html#id5419522">Newsgroup</a></span></dt><dt><span class="section"><a href="help.en.html#websites">Web Sites</a></span></dt><dt><span class="section"><a href="help.en.html#id5419635">Bug Tracking System</a></span></dt><dt><span class="section"><a href="help.en.html#id5419658">IRC</a></span></dt><dt><span class="section"><a href="help.en.html#id5419674">Editing Rivet Template Files</a></span></dt></dl></dd><dt><span class="section"><a href="internals.en.html">Rivet Internals</a></span></dt><dd><dl><dt><span class="section"><a href="internals.en.html#id5419745">Initialization</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420201">RivetChan</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420232">The global Command</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420282">Page Parsing, Execution and Caching</a></span></dt></dl></dd><dt><span class="section"><a href="upgrading.en.html">Upgrading from mod_dtcl or NeoWebScript</a></span></dt><dd><dl><dt><span class="section"><a href="upgrading.en.html#id5420364">mod_dtcl</a></span></dt><dt><span class="section"><a href="upgrading.en.html#id5420381">NeoWebScript</a></span></dt></dl></dd></dl></div><p style="width:90%">
+ </p></div></div></div></div><div><p class="copyright">Copyright � 2002, 2003 Apache Software Foundation</p></div></div><div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="index.en.html#id5416011">Introduction to Apache Rivet</a></span></dt><dt><span class="section"><a href="installation.en.html">Apache Rivet Installation</a></span></dt><dt><span class="section"><a href="directives.en.html">Rivet Apache Directives</a></span></dt><dt><span class="section"><a href="commands.en.html">Rivet Tcl Commands and Variables</a></span></dt><dt><span class="section"><a href="examples.en.html">Examples and Usage</a></span></dt><dt><span class="section"><a href="tcl_packages.en.html">Rivet Tcl Packages</a></span></dt><dt><span class="section"><a href="help.en.html">Resources - How to Get Help</a></span></dt><dd><dl><dt><span class="section"><a href="help.en.html#id5419473">Mailing Lists</a></span></dt><dt><span class="section"><a href="help.en.html#id5419522">Newsgroup</a></span></dt><dt><span class="section"><a href="help.en.html#websites">Web Sites</a></span></dt><dt><span class="section"><a href="help.en.html#id5419635">Bug Tracking System</a></span></dt><dt><span class="section"><a href="help.en.html#id5419658">IRC</a></span></dt><dt><span class="section"><a href="help.en.html#id5419674">Editing Rivet Template Files</a></span></dt></dl></dd><dt><span class="section"><a href="internals.en.html">Rivet Internals</a></span></dt><dd><dl><dt><span class="section"><a href="internals.en.html#id5419745">Initialization</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420201">RivetChan</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420232">The global Command</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420282">Page Parsing, Execution and Caching</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420340">Debugging Rivet and Apache</a></span></dt></dl></dd><dt><span class="section"><a href="upgrading.en.html">Upgrading from mod_dtcl or NeoWebScript</a></span></dt><dd><dl><dt><span class="section"><a href="upgrading.en.html#id5419788">mod_dtcl</a></span></dt><dt><span class="section"><a href="upgrading.en.html#id5419805">NeoWebScript</a></span></dt></dl></dd></dl></div><p style="width:90%">
This document is also available in the following languages: <a href="index.it.html" target="_top">Italian</a>, <a href="index.ru.html" target="_top">Russian</a>
</p><p style="width:90%">
Document reversion: $Revision$, last modified $Date$ by $Author$.
1.2 +57 -1 tcl-rivet/doc/html/internals.en.html
Index: internals.en.html
===================================================================
RCS file: /home/cvs/tcl-rivet/doc/html/internals.en.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- internals.en.html 20 Nov 2003 10:51:13 -0000 1.1
+++ internals.en.html 27 Nov 2003 09:57:55 -0000 1.2
@@ -1,4 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Rivet Internals</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.62.4"><link rel="home" href="index.en.html" title="Apache Rivet"><link rel="up" href="index.en.html" title="Apache Rivet"><link rel="previous" href="help.en.html" title="Resources - How to Get Help"><link rel="next" href="upgrading.en.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.en.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.en.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="internals"></a>Rivet Internals</h2></div></div><div></div></div><div class="toc"><dl><dt><span class="section"><a href="internals.en.html#id5419745">Initialization</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420201">RivetChan</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420232">The global Command</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420282">Page Parsing, Execution and Caching</a></span></dt></dl></div><p style="width:90%">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Rivet Internals</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.62.4"><link rel="home" href="index.en.html" title="Apache Rivet"><link rel="up" href="index.en.html" title="Apache Rivet"><link rel="previous" href="help.en.html" title="Resources - How to Get Help"><link rel="next" href="upgrading.en.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.en.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.en.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="internals"></a>Rivet Internals</h2></div></div><div></div></div><div class="toc"><dl><dt><span class="section"><a href="internals.en.html#id5419745">Initialization</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420201">RivetChan</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420232">The global Command</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420282">Page Parsing, Execution and Caching</a></span></dt><dt><span class="section"><a href="internals.en.html#id5420340">Debugging Rivet and Apache</a></span></dt></dl></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
@@ -66,4 +66,60 @@
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" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5420340"></a>Debugging Rivet and Apache</h3></div></div><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 style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " 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><b class="command">strace</b></span></span>. You don't even have to
+ recompile Rivet or Apache for this to work.
+ </p><pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " 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
+ <tt class="filename">/tmp/outputfile</tt>. The -S
+ option tells <span style="font-family:monospace"><span><b class="command"></b></span></span>strace to only record the
+ first 1000 bytes of a syscall. Some calls such as
+ <tt class="function">write</tt> 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><b class="command">strace</b></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><b class="command">./configure.tcl</b></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 style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " 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). A helpful
+ <span style="font-family:monospace"><span><b class="command">gdb</b></span></span> tutorial is available here: <a href="http://www.delorie.com/gnu/docs/gdb/gdb_toc.html" target="_top">http://www.delorie.com/gnu/docs/gdb/gdb_toc.html</a>
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="help.en.html"><img src="images/prev.png" alt="Prev"></a>�</td><td width="20%" align="center"><a accesskey="u" href="index.en.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right">�<a accesskey="n" href="upgrading.en.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.en.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>
1.2 +3 -3 tcl-rivet/doc/html/upgrading.en.html
Index: upgrading.en.html
===================================================================
RCS file: /home/cvs/tcl-rivet/doc/html/upgrading.en.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- upgrading.en.html 20 Nov 2003 10:51:13 -0000 1.1
+++ upgrading.en.html 27 Nov 2003 09:57:55 -0000 1.2
@@ -1,12 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Upgrading from mod_dtcl or NeoWebScript</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.62.4"><link rel="home" href="index.en.html" title="Apache Rivet"><link rel="up" href="index.en.html" title="Apache Rivet"><link rel="previous" href="internals.en.html" title="Rivet Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Upgrading from mod_dtcl or NeoWebScript</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="internals.en.html"><img src="images/prev.png" alt="Prev"></a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�</td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="upgrading"></a>Upgrading from mod_dtcl or NeoWebScript</h2></div></div><div></div></div><div class="toc"><dl><dt><span class="section"><a href="upgrading.en.html#id5420364">mod_dtcl</a></span></dt><dt><span class="section"><a href="upgrading.en.html#id5420381">NeoWebScript</a></span></dt></dl></div><p style="width:90%">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Upgrading from mod_dtcl or NeoWebScript</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.62.4"><link rel="home" href="index.en.html" title="Apache Rivet"><link rel="up" href="index.en.html" title="Apache Rivet"><link rel="previous" href="internals.en.html" title="Rivet Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Upgrading from mod_dtcl or NeoWebScript</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="internals.en.html"><img src="images/prev.png" alt="Prev"></a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�</td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="upgrading"></a>Upgrading from mod_dtcl or NeoWebScript</h2></div></div><div></div></div><div class="toc"><dl><dt><span class="section"><a href="upgrading.en.html#id5419788">mod_dtcl</a></span></dt><dt><span class="section"><a href="upgrading.en.html#id5419805">NeoWebScript</a></span></dt></dl></div><p style="width:90%">
Rivet is a break from the past, in that we, the authors, have
attempted to take what we like best about our past efforts, and
leave out or change things we no longer care for. Backwards
compatibility was not a primary goal when creating Rivet, but we
do provide this information which may be of use to those wishing
to upgrade from mod_dtcl or NWS installations.
- </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5420364"></a>mod_dtcl</h3></div></div><div></div></div><p style="width:90%">
+ </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5419788"></a>mod_dtcl</h3></div></div><div></div></div><p style="width:90%">
Rivet was originally based on the dtcl code, but it has
changed (improved!) quite a bit. The concepts remain the
same, but many of the commands have changed.
- </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5420381"></a>NeoWebScript</h3></div></div><div></div></div><p style="width:90%">TODO</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="internals.en.html"><img src="images/prev.png" alt="Prev"></a>�</td><td width="20%" align="center"><a accesskey="u" href="index.en.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right">�</td></tr><tr><td width="40%" align="left" valign="top">Rivet Internals�</td><td width="20%" align="center"><a accesskey="h" href="index.en.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top">�</td></tr></table></div></body></html>
+ </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5419805"></a>NeoWebScript</h3></div></div><div></div></div><p style="width:90%">TODO</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="internals.en.html"><img src="images/prev.png" alt="Prev"></a>�</td><td width="20%" align="center"><a accesskey="u" href="index.en.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right">�</td></tr><tr><td width="40%" align="left" valign="top">Rivet Internals�</td><td width="20%" align="center"><a accesskey="h" href="index.en.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top">�</td></tr></table></div></body></html>
---------------------------------------------------------------------
To unsubscribe, e-mail: rivet-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: rivet-cvs-help@tcl.apache.org