[BACK]Return to ctm.html CVS log [TXT][DIR] Up to [local] / www

Diff for /www/Attic/ctm.html between version 1.12 and 1.13

version 1.12, 2000/11/17 19:11:33 version 1.13, 2001/01/01 22:01:21
Line 6 
Line 6 
 <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#23238E">  <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#23238E">
   
 <center>  <center>
 <img alt="CTM for OpenBSD" src=images/bsdctm.gif width=401 height=126>  <img alt="CTM for OpenBSD" src="images/bsdctm.gif" width="401" height="126">
 </center>  </center>
   
 <H3>What is ctm?</H3>  <H3>What is ctm?</H3>
Line 15 
Line 15 
 Ctm is a system which was designed by Poul-Henning Kamp for making  Ctm is a system which was designed by Poul-Henning Kamp for making
 changes to a source tree available on a daily basis by email.  changes to a source tree available on a daily basis by email.
 This is a good way to stay up to date with the current source- or  This is a good way to stay up to date with the current source- or
 cvs-tree if you have a bad internet connection - for instance via modem.  CVS tree if you have a bad Internet connection, for instance via modem.
   
 <P>  <P>
 Ctm uses very low bandwidth for distributing the changes to the  Ctm uses very low bandwidth for distributing the changes to the tree,
 tree, and compresses them using gzip -9.  and compresses them using gzip -9.  In contrast to <a
   href="cvsup.html">CVSup</a>, ctm is written in plain C and therefore
   available for every platform supported by OpenBSD.
   
 <H3>How does it work?</H3>  <H3>How does it work?</H3>
   
Line 27 
Line 29 
 The basic idea of ctm is that you subscribe to a special mailing list  The basic idea of ctm is that you subscribe to a special mailing list
 for a particular source tree. Each day you receive an email message  for a particular source tree. Each day you receive an email message
 containing all the changes to that tree during that period.  containing all the changes to that tree during that period.
 One set of differences is called a &quot;delta&quot;.  One set of differences is called a "delta".
   
 <P>  <P>
 You begin with a base set against which later deltas are patched.  You begin with a base set, against which later deltas are patched.  To
 To begin using ctm you must grab the latest base set and all deltas  begin using ctm you download the latest base set and all deltas
 after that; once you have processed those you can process later  generated after that.  Once you have processed those you can process
 deltas you receive on the mailing list. The base sets are split  later deltas you receive from the mailing list. The base sets are split
 into pieces of 1400k each for easier downloading over bad lines  into pieces of 1400kB each for easier downloading over bad lines, and
 and you can even put them onto floppies this way.  you can even put them onto floppies this way.
   
 <P>  <P>
 Bases are generated approximately once every 100 relative deltas, so you never  Base sets are generated once every 50 relative deltas, so you never
 have to grab more than 100 deltas to catch up.  have to grab more than 50 deltas to catch up.
   
   <P>
   There are currently two kinds of base delta.  For quite a while we
   were making <tt><b>tar.gz</b></tt> files manually, but we are
   switching back to real ctm base deltas.  The latter contain md5
   checksums and are generated automatically, thus are a bit safer.  You
   can distinguish these two kinds of base delta by their filename.  An
   example for a <tt><b>tar.gz</b></tt> file is
   <tt><b>OpenBSD-cvs.1450.tar.gz</b></tt>, whereas a ctm base delta
   would be named <tt><b>OpenBSD-cvs.1500A.gz</b></tt>.  See below for
   detailed instructions.
   
 <H3>How much bandwidth does ctm use?</H3>  <H3>How much bandwidth does ctm use?</H3>
   
 <P>  <P>
 As mentioned above, the base set contains a full source tree in TAR format,  You obtain the base set and all relative deltas up to the recent one
 and is thus quite large.  You must obtain the base set and all relative  via ftp from the sites listed below.  Sizes are:
 deltas up to present via ftp from the site listed below.  Sizes are:  
   
 <ul>  <ul>
 <li> approximately 115Mb for OpenBSD-cvs  <li>Approximately 115MB for OpenBSD-cvs.
 <li> approximately 37Mb for OpenBSD-cvs-x11  <li>Approximately 37MB for OpenBSD-cvs-x11.
 <li> approximately 65Mb for OpenBSD-src  <li>Approximately 65MB for OpenBSD-src.
 <li> approximately 35Mb for OpenBSD-src-x11  <li>Approximately 35MB for OpenBSD-src-x11.
 <li> approximately 2Mb for OpenBSD-ports  <li>Approximately 2MB for OpenBSD-ports.
 <li> keep in mind that that are compressed sizes - count about five times  <li>Keep in mind that these are compressed sizes.  The uncompressed
      of those sizes for the unpacked files      files are about five times as large.
 <li> relative deltas vary from 10k to 100k, and occasionally a couple of Mb  <li>Relative deltas vary from 10kB to 100kB, and occasionally a couple of
 <li> ctm always splits deltas into 100k messages which are reassembled      megabytes.
      automatically  <li>ctm always splits deltas into 100kB messages which are reassembled
       automatically.
   <li>If a delta is larger than 5MB, it is not sent via mail.  Instead, you
       will receive a notification to get the delta by ftp.
 </ul>  </ul>
   
 <P>  <P>
 Larger ctm updates are rare, though, usually occurring only after a major  Larger ctm updates are rare, though, usually occurring only after a major
 import of something like binutils, perl, etc.  import of something like binutils, perl, gcc, etc.
   
 <H3>How do I use ctm?</H3>  <H3>How do I use ctm?</H3>
   
Line 71 
Line 86 
 <LI>Subscribe to the ctm mailing list for the source set you want.  <LI>Subscribe to the ctm mailing list for the source set you want.
 <p>  <p>
    There are several mailing lists related to ctm.  There is a list for     There are several mailing lists related to ctm.  There is a list for
    updates to the updates to cvs tree, a list for the source tree, a list     updates to the CVS tree, a list for the source tree, a list
    for the X11 part of both and one for the ports tree plus     for the X11 part of both, and one for the ports tree, plus
    a list for seeing log messages from the ctm delta generator runs.     a list for log messages from the ctm delta generation runs.
    <p>     <p>
    The following commands will subscribe you to the appropriate lists:     The following commands will subscribe you to the appropriate lists:
 <br><br><tt>  <p>
 For the cvs tree (without the X11 part):<br>  For the CVS tree (without the X11 part):
     <b>echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org</b><br>  <pre>
 For the X11 part of the cvs tree:<br>          echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org
     <b>echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org</b><br>  </pre>
 For the source tree (without the X11 part): <br>  For the X11 part of the CVS tree:
     <b>echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org</b><br>  <pre>
 For the X11 part of the source tree: <br>          echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org
     <b>echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org</b><br>  </pre>
 For the ports tree: <br>  For the source tree (without the X11 part):
     <b>echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org</b><br>  <pre>
 For the ctm log list:<br>          echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org
     <b>echo subscribe ctm-log | mail majordomo@OpenBSD.org</b><br>  </pre>
 </tt><br>  For the X11 part of the source tree:
   <pre>
           echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org
   </pre>
   For the ports tree:
   <pre>
           echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org
   </pre>
   For the ctm log list:
   <pre>
           echo subscribe ctm-log | mail majordomo@OpenBSD.org
   </pre>
   
 <LI>Wait until you get your first delta.  <p>
   <li>Install the ctm program from a package or from the ports
   collection.  You'll find the port at
   <tt><b>/usr/ports/devel/ctm</b></tt>.
   
 <LI>Unpack and assemble the ctm delta using ctm_rmail.  </ul>
 <br>  <b>Note:</b> The examples below just cover OpenBSD-cvs for clarity. The
 <br>  other source sets are handled in the same fashion.
 <tt>  
     <b>ctm_rmail -p. -d. -b. folder</b>  <p><ul>
 </tt>  
 <br><br>  <li>Download the base set from an FTP site. You'll find it in the
 where <b>folder</b> is the mail folder containing the delta mail.  subdirectory <tt><b>base/OpenBSD-cvs</b></tt>.  Get all files in
 <br>  that directory.  Once you have them all you can create the base set
 This will decode the ctm delta and place it in the working directory.  file and unpack it with the following commands, depending on the kind
 The delta will be a file of the form OpenBSD-XXX.YYYY.gz, where XXX is  of base delta you got:
 either "src" or "cvs", and YYYY is the number of the delta.  
   <pre>
           cat split/OpenBSD-cvs.1500A.gz.* &gt; OpenBSD-cvs.1500A.gz
           cd target
           ctm -v -v -v .../OpenBSD-cvs.1500A.gz
   </pre>
 <p>  <p>
   or
   
 <li>Grab the base set from the ftp site below, in the subdirectory  <pre>
 <b>base/OpenBSD-cvs</b> (for OpenBSD-cvs) or <b>base/OpenBSD-src</b>          cat split/OpenBSD-cvs.1500.tar.gz.* &gt; OpenBSD-cvs.1500.tar.gz
 (for OpenBSD-src).  Grab all files in that directory, and once you have          cd target
 them all you can create the base source tree with the following command:          tar -xzvf .../OpenBSD-cvs.1500.tar.gz
   </pre>
   
 <br><br>  <p>
 <tt>  where <tt><b>split</b></tt> is the directory in which you have
     <b>cd target <br>  placed the files you downloaded and <tt><b>target</b></tt> is the
     cat /split/OpenBSD-* | tar zxf - <br>  place you have chosen for the source set.
 </b></tt><br>  
   
 where <b>split</b> is the directory in which you placed the files you  <p>
 grabbed.  It is not necessary to keep these files around, if you're sure you've
   got a complete tree.  But you can keep the base set file(s) for backup
   purposes.  However, be sure to note the number of the base set before
   continuing.
   
 <p>  <p>
 It is no longer necessary to keep these files around, if you're sure  <li>You now need to get the deltas which have been generated since the
 you've got a complete tree.  However, be sure to note the number of the  base set.  Go to the FTP site in the subdirectory
 base, before continuing.  <tt><b>OpenBSD-cvs</b></tt> and download every file whose number is
   <em>larger</em> than the number of the base set you used. Then apply
   these deltas:
   
   <pre>
           cd target
           ctm -v -v -v deltas/OpenBSD-cvs.*
   </pre>
   
 <p>  <p>
 You now need to grab the deltas which have been generated since the base  where <tt><b>target</b></tt> is the directory where your source set
 was generated.  Go to the ftp site below in the subdirectory  tree is, and <tt><b>deltas</b></tt> is where you have stored the
 <b>OpenBSD-cvs</b> or <b>OpenBSD-src</b> for instance and grab  deltas.
 every file whose number is <it>larger</it> than the number of the  
 base you used.  
   
 <p>  <p>
 The addresses for the base and deltas are:  <LI>Wait until you get your first delta from the mailing list.
   <p>
   <LI>Unpack, assemble, and apply the ctm delta using ctm_rmail.
   <p>
   
   <pre>
           ctm_rmail -p /tmp -d deltas -b target folder
   </pre>
   
   <p>
   where <tt><b>folder</b></tt> is the mail folder containing the delta
   mail.  This will decode the ctm delta and save it in the
   <tt><b>deltas</b></tt> directory.  The delta will be a file of the
   form <tt><b>OpenBSD-cvs.<var>XXXX</var>.gz</b></tt>, where <var>XXXX</var>
   is the number of the delta.  Then the delta will be applied to the
   directory tree located at <tt><b>target</b></tt>, the place where you
   unpacked the base delta.
   
   <p>
   Repeat this last step every time you receive a delta from the
   mailing list.  If you like you can automate this step using procmail
   or any similar program.
   </ul>
   
   <p>
   The addresses for the deltas are:
   
 <ul>  <ul>
 <li><a href="ftp://ctm.OpenBSD.org:/pub/OpenBSD-ctm/">  <li><a href="ftp://ctm.OpenBSD.org:/pub/OpenBSD-ctm/">
      ftp://ctm.OpenBSD.org:/pub/OpenBSD-ctm/       ftp://ctm.OpenBSD.org:/pub/OpenBSD-ctm/
Line 155 
Line 223 
 </ul>  </ul>
   
 <p>  <p>
 <ul>  <b>NOTE:</b> I'm very interested in finding other sites around the world
 <li><b>NOTE:</b> I'm very interested in finding other sites around the world     that would like to mirror these deltas.
    that would be interested in mirroring these deltas.  
 </ul>  
 <p>  <p>
   
 <LI> Run ctm.  <h3>Should I choose the source or CVS tree?</h3>
 <br>  
   <br>  
   <tt>  
      <b>cd target<br>  
      ctm -v -v /deltas/OpenBSD-cvs.*</b><br></tt>  
 where <b>target</b> is the directory where you want your cvs tree to be,  
 and <b>deltas</b> is where you have stored the deltas.  
 <p>  
 It will take some time to run all of the deltas, but the daily invocations  
 of <b>ctm_rmail</b> and <b>ctm</b> will not take nearly as long.  
 </ul>  
   
 <h3>Should I choose the source or cvs tree?</h3>  
   
 <P>  <P>
 This depends on your diskspace, among other factors.  Since ctm doesn't  This depends on your diskspace, among other factors.  Since ctm
 yet deal with files which have been modified outside of the ctm process,  doesn't deal with files which have been modified locally, the "better"
 the "better" choice is probably the cvs-tree.  Then you can check out  choice is probably the CVS tree.  You then can check out your working
 your working source tree from your cvs-tree, and keep your local mods  source tree from your CVS tree, and keep your local modifications in
 in your source tree, leaving only ctm to touch your cvs tree.  your source tree, because cvs is smart enough to merge in your local
   changes.
   
 <p>  <p>
 The drawback, however, is the amount of diskspace it takes.  A checked-out  The drawback, however, is the amount of diskspace it takes.  A checked-out
 source tree takes about 300Mb or so, but if you have your own cvs tree you  source tree takes about 350MB or so, but if you have your own cvs tree you
 need 400Mb or so for it, <b>plus</b> another 300Mb for the checked out tree.  need about 1Gb for it, <b>plus</b> another 350MB for the checked out tree.
   
 <p>  <p>
 This doesn't count the 100Mb or more you will need to do a build (depending  This doesn't count the 100MB or more (depending on the architecture)
 on the architecture).  you will need to do a build, i.e. compile the sources.
   
 <p>  <p>
 If you just get the source tree, you will need to deal with local  If you just get the source tree, you will need to deal with local
Line 201 
Line 255 
 you should have no problems.  A sample of this is as follows:  you should have no problems.  A sample of this is as follows:
   
 <p>  <p>
 Suppose your ctm-updated tree is in <b>/usr/src-ctm</b>, and your real  Suppose your ctm-updated tree is in <tt><b>/usr/src-ctm</b></tt>, and
 source tree, the one you make your modifications to and do your builds from,  your real source tree, the one you make your modifications to and do
 is in <b>/usr/src</b>.  <b>/usr/src</b> should be initially an empty  your builds from, is in <tt><b>/usr/src</b></tt>.
 directory.  The following command will set up the union mount:  <tt><b>/usr/src</b></tt> should be initially an empty directory.  The
 <br><br>  following command will set up the union mount:
 <tt>  
     <b>mount -t union -o -b /usr/src-ctm /usr/src</b>  <pre>
 </tt>          mount -t union -o -b /usr/src-ctm /usr/src
 <br><br>  </pre>
   
   <p>
 Modifications made to files in /usr/src will become a file contained within  Modifications made to files in /usr/src will become a file contained within
 /usr/src, hiding the one in src-ctm.  If changes are made via ctm to the  /usr/src, hiding the one in src-ctm.  If changes are made via ctm to the
 underlying src-ctm tree, those changes will <b>not</b> be seen if there is  underlying src-ctm tree, those changes will <b>not</b> be seen if there is
Line 218 
Line 274 
 <p>  <p>
 You should periodically unmount the  You should periodically unmount the
 union and search for files which are local to the union filesystem.  union and search for files which are local to the union filesystem.
 <br><br>  
 <tt>  
     <b>umount /usr/src <br>  
     find /usr/src -type f</b> <br>  
 </tt>  
 <br><br>  
 The commands <b>ls -W</b> and <b>rm -W</b> will be useful too, as objects  
 named "whiteouts" in /usr/src will also hide files in src-ctm.  
   
   <pre>
           umount /usr/src
           find /usr/src -type f
   </pre>
   
 <p>  <p>
 If you get the cvs-tree, you can use the "cvs checkout" command to check  The commands <tt><b>ls -W</b></tt> and <tt><b>rm -W</b></tt> will be
 out a source tree from it, and each time you update with ctm you can use  useful too, as objects named "whiteouts" in /usr/src will also hide
 the "cvs update" command to update your source tree.  files in src-ctm.
   
 <br><br>  <p>
 To get an initial src tree:<br>  If you get the CVS tree, you can use the <tt><b>cvs checkout</b></tt>
 <tt>  command to check out a source tree from it, and each time you update
     <b>cd /usr <br>  with ctm you can use the <tt><b>cvs update</b></tt> command to
     cvs -qd YOUR_CVS_TREE checkout src</b> <br><br>  update your source tree.
 </tt>  
 and after each ctm update:<br>  
 <tt>  
     <b>cd /usr/src <br>  
     cvs -q update -PAd</b> <br>  
 </tt>  
   
   <p>
   To get an initial src tree:
   <pre>
           cd /usr
           cvs -qd YOUR_CVS_TREE checkout -A src
   </pre>
   <p>
   and after each ctm update:
   <pre>
           cd /usr/src
           cvs -q update -PAd
   </pre>
   
 <H3>How stable is ctm for OpenBSD?</H3>  <H3>How stable is ctm for OpenBSD?</H3>
   
 Ctm has been in use for over a year for OpenBSD, and for FreeBSD for a  Ctm has been in use for over four years for OpenBSD, and for FreeBSD
 number of years.  Ctm is quite reliable and stable.  for an even longer period of time.  Ctm is very reliable and stable.
   
 <H3>More information</H3>  <H3>More information</H3>
   
 If you have problems with ctm, a good place to start is the FreeBSD  If you want to learn more about ctm, a good place to start with is the
 handbook:  FreeBSD Handbook:
   
 <ul>  <ul>
 <li> <a href="http://www.FreeBSD.org/handbook/ctm.html">  <li> <a href="http://www.FreeBSD.org/handbook/ctm.html">
Line 260 
Line 320 
      </a>       </a>
 </ul>  </ul>
   
 There are also man pages for all of the ctm utilities included in the  There are also man pages for all of the ctm utilities.
 source package.  If you have OpenBSD, you should already have the man  
 pages, source, and binaries.  If not you can obtain them from the same  
 ftp site as the deltas below.  
   
 <p>  <p>
 You can also contact the OpenBSD mailing lists or myself if you have  
 difficulties with ctm, although my free time tends to be rather limited.  
   
 <p>  
 Summary:  Summary:
   
 <p>  <p>
Line 278 
Line 331 
 <li> Mailing lists:  <li> Mailing lists:
   
    <ul>     <ul>
    <li> <b>echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org</b>     <li><tt>echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org</tt>
    <li> <b>echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org</b>     <li><tt>echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org</tt>
    <li> <b>echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org</b>     <li><tt>echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org</tt>
    <li> <b>echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org</b>     <li><tt>echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org</tt>
    <li> <b>echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org</b>     <li><tt>echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org</tt>
    <li> <b>echo subscribe ctm-log | mail majordomo@OpenBSD.org</b>     <li><tt>echo subscribe ctm-log | mail majordomo@OpenBSD.org</tt>
    </ul>     </ul>
   
 <li> FTP (for base and relative deltas; and OpenBSD has ctm in the source  <li> FTP (for base and relative deltas):
      tree, but if you don't have source or binaries, the source is here too):  
   
    <ul>     <ul>
    <li> <a href="ftp://ctm.OpenBSD.org:/pub/OpenBSD-ctm">     <li> <a href="ftp://ctm.OpenBSD.org:/pub/OpenBSD-ctm">
          ftp://ctm.OpenBSD.org:/pub/OpenBSD-ctm          ftp://ctm.OpenBSD.org:/pub/OpenBSD-ctm</a>
            </a>  
    <li> <a href="ftp://ctm.ca.OpenBSD.org:/pub/OpenBSD-ctm">     <li> <a href="ftp://ctm.ca.OpenBSD.org:/pub/OpenBSD-ctm">
          ftp://ctm.ca.OpenBSD.org:/pub/OpenBSD-ctm          ftp://ctm.ca.OpenBSD.org:/pub/OpenBSD-ctm</a>
            </a>  
    <li> <a href="ftp://ctm.se.OpenBSD.org:/pub/OpenBSD-ctm">     <li> <a href="ftp://ctm.se.OpenBSD.org:/pub/OpenBSD-ctm">
          ftp://ctm.se.OpenBSD.org:/pub/OpenBSD-ctm          ftp://ctm.se.OpenBSD.org:/pub/OpenBSD-ctm</a>
            </a>  
    </ul>     </ul>
 </ul>  </ul>
   
 <p>  <p>
 I will make any important notes and announcements about ctm in:  Important notes and announcements about ctm will be posted to:
 <ul>  <ul>
 <li> misc@OpenBSD.org  <li> misc@OpenBSD.org
 <li> announce@OpenBSD.org  <li> announce@OpenBSD.org
 </ul>  </ul>
   
 <p>  <p>
 <b>NOTE:</b> If you use ctm for OpenBSD, please send me email so I  
 know how many people are using it!  
   
 <H3>Acknowledgements</H3>  <H3>Acknowledgements</H3>
   
   <ul>
 <li> Poul-Henning Kamp (phk@FreeBSD.org) for making ctm possible and helping  <li> Poul-Henning Kamp (phk@FreeBSD.org) for making ctm possible and helping
      me getting the delta generation running.       getting the delta generation running
   
 <li> Theo de Raadt (deraadt@theos.com) for making OpenBSD possible and  <li> Theo de Raadt (deraadt@theos.com) for making OpenBSD possible and
      initially giving me the resources i needed for creating the ctm       initially providing the resources needed for creating the ctm
      deltas on cvs.OpenBSD.org (now they are generated elsewhere) and       deltas on cvs.OpenBSD.org (now they are generated elsewhere), and
      for the nameserver magic       for the nameserver magic
   
 <li> Todd C. Miller (millert@OpenBSD.org) for setting up and  <li> Todd C. Miller (millert@OpenBSD.org) for setting up and
Line 331 
Line 379 
      Wolfram Schneider (wosch@FreeBSD.org) for setting up the ftp space       Wolfram Schneider (wosch@FreeBSD.org) for setting up the ftp space
      for the bases and deltas on ctm.*OpenBSD.org       for the bases and deltas on ctm.*OpenBSD.org
   
 <li> ... and all the others who contributed indirectly ..  <li> Thomas Graichen (graichen@OpenBSD.org) for starting ctm for
 </ul>       OpenBSD and maintaining it all those years
   
 <P>  <li> Wim Vandeputte (wvdeputte@OpenBSD.org) for hosting ctm now
 Good luck!  
   
 <P>  <li> ... and all the others who contributed indirectly
 t  </ul>
   
 <HR>  
   
 <ADDRESS><A HREF="mailto:graichen@OpenBSD.org">Thomas Graichen</A></ADDRESS>  <p>
 <br>  For any problems, suggestions, reports and questions regarding ctm
   contact the ctm maintainer
   <a href="mailto:hgw@d1906.inka.de">Hans G&uuml;nter Weigand</a>.
   <p>
 OpenBSD/CTM logo designed for the OpenBSD Project by  OpenBSD/CTM logo designed for the OpenBSD Project by
    <a href="mailto:flipk@openbsd.org">Phillip F Knaack</a>.     <a href="mailto:flipk@openbsd.org">Phillip F Knaack</a>.
 <p>  <p>
 <hr>  <hr>
 <a href="index.html"><img height="24" width="24" src="back.gif" border="0" alt="OpenBSD" /></a>  <a href="index.html"><img height="24" width="24" src="back.gif" border="0" alt="OpenBSD" /></a>
 <a href="mailto:www@openbsd.org">www@openbsd.org</a>  <a href="mailto:www@openbsd.org">www@openbsd.org</a>
 </br>  <br>
 <small>$OpenBSD$</small>  <small>$OpenBSD$</small>
   
 </body>  </body>
 </html>  </html>
   

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13