diff --git a/man/man3/9p-cmdbuf.html b/man/man3/9p-cmdbuf.html
deleted file mode 100644
index 122a585..0000000
--- a/man/man3/9p-cmdbuf.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<head>
-<title>9p-cmdbuf(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>9P-CMDBUF(3)</b><td align=right><b>9P-CMDBUF(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Cmdbuf, parsecmd, respondcmderror, lookupcmd &ndash; control message
-    parsing<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;fcall.h&gt;<br>
-    #include &lt;thread.h&gt;<br>
-    #include &lt;9p.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    typedef struct Cmdbuf<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*buf;<br>
-        char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**f;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nf;<br>
-        
-    </table>
-    } Cmdbuf;<br>
-    typedef struct Cmdtab<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index;<br>
-        char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*cmd;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;narg;<br>
-        
-    </table>
-    };<br>
-    Cmdbuf &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*parsecmd(char *p, int n)<br>
-    Cmdtab &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*lookupcmd(Cmdbuf *cb, Cmdtab *tab, int ntab)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;respondcmderror(Req *r, Cmdbuf *cb, char *fmt, ...)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These data structures and functions provide parsing of textual
-    control messages. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Parsecmd</i> treats the <i>n</i> bytes at <i>p</i> (which need not be NUL-terminated)
-    as a UTF string and splits it using <i>tokenize</i> (see <a href="../man3/getfields.html"><i>getfields</i>(3)</a>).
-    It returns a <tt><font size=+1>Cmdbuf</font></tt> structure holding pointers to each field in
-    the message. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Lookupcmd</i> walks through the array <i>ctab</i>, which has <i>ntab</i> entries,
-    looking for the first <tt><font size=+1>Cmdtab</font></tt> that matches the parsed command.
-    (If the parsed command is empty, <i>lookupcmd</i> returns nil immediately.)
-    A <tt><font size=+1>Cmdtab</font></tt> matches the command if <i>cmd</i> is equal to <i>cb</i><tt><font size=+1>&#8722;&gt;</font></tt><i>f</i><tt><font size=+1>[0]</font></tt> or if
-    <i>cmd</i> is <tt><font size=+1>*</font></tt>. Once a matching <tt><font size=+1>Cmdtab</font></tt> has been
-    found, if <i>narg</i> is not zero, then the parsed command must have
-    exactly <i>narg</i> fields (including the command string itself). If
-    the command has the wrong number of arguments, <i>lookupcmd</i> returns
-    nil. Otherwise, it returns a pointer to the <tt><font size=+1>Cmdtab</font></tt> entry. If <i>lookupcmd</i>
-    does not find a matching command at all, it returns
-    nil. Whenever <i>lookupcmd</i> returns nil, it sets the system error
-    string. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Respondcmderror</i> resoponds to request <i>r</i> with an error of the form
-    &#8216;<i>fmt</i>: <i>cmd</i>,&#8217; where <i>fmt</i> is the formatted string and <i>cmd</i> is a reconstruction
-    of the parsed command. Fmt is often simply <tt><font size=+1>%r .<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>EXAMPLES     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    This interface is not used in any distributed 9P servers. It was
-    lifted from the Plan 9 kernel. Almost any Plan 9 kernel driver
-    (<tt><font size=+1>/sys/src/9/*/dev*.c</font></tt> on Plan 9) is a good example.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9p/parse.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/9p.html"><i>9p</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/9p-fid.html b/man/man3/9p-fid.html
deleted file mode 100644
index 44bca53..0000000
--- a/man/man3/9p-fid.html
+++ /dev/null
@@ -1,170 +0,0 @@
-<head>
-<title>9p-fid(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>9P-FID(3)</b><td align=right><b>9P-FID(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Fid, Fidpool, allocfidpool, freefidpool, allocfid, closefid, lookupfid,
-    removefid, Req, Reqpool, allocreqpool, freereqpool, allocreq,
-    closereq, lookupreq, removereq &ndash; 9P fid, request tracking<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;fcall.h&gt;<br>
-    #include &lt;thread.h&gt;<br>
-    #include &lt;9p.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    typedef struct Fid<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        ulong fid;<br>
-        char &nbsp;&nbsp;&nbsp;omode; &nbsp;&nbsp;&nbsp;/* &#8722;1 if not open */<br>
-        char &nbsp;&nbsp;&nbsp;*uid;<br>
-        Qid &nbsp;&nbsp;&nbsp;&nbsp;qid;<br>
-        File &nbsp;&nbsp;&nbsp;*file;<br>
-        void &nbsp;&nbsp;&nbsp;*aux;<br>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>...<br>
-        </i>
-    </table>
-    <tt><font size=+1>} Fid;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    typedef struct Req<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        ulong tag;<br>
-        Fcall ifcall;<br>
-        Fcall ofcall;<br>
-        Req &nbsp;&nbsp;&nbsp;&nbsp;*oldreq;<br>
-        void &nbsp;&nbsp;&nbsp;*aux;<br>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>...<br>
-        </i>
-    </table>
-    <tt><font size=+1>} Req;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Fidpool* allocfidpool(void (*destroy)(Fid*))<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freefidpool(Fidpool *p)<br>
-    Fid* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allocfid(Fidpool *p, ulong fid)<br>
-    Fid* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lookupfid(Fidpool *p, ulong fid)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closefid(Fid *f)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removefid(Fid *f)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Reqpool* allocreqpool(void (*destroy)(Req*))<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freereqpool(Reqpool *p)<br>
-    Req* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allocreq(Reqpool *p, ulong tag)<br>
-    Req* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lookupreq(Reqpool *p, ulong tag)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closereq(Req *f)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removereq(Req *r)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines provide management of <tt><font size=+1>Fid</font></tt> and <tt><font size=+1>Req</font></tt> structures from
-    <tt><font size=+1>Fidpool</font></tt>s and <tt><font size=+1>Reqpool</font></tt>s. They are primarily used by the 9P server
-    loop described in <a href="../man3/9p.html"><i>9p</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>Fid</font></tt> structures are intended to represent active fids in a 9P connection,
-    as <tt><font size=+1>Chan</font></tt> structures do in the Plan 9 kernel. The <tt><font size=+1>fid</font></tt> element is
-    the integer fid used in the 9P connection. <tt><font size=+1>Omode</font></tt> is the mode under
-    which the fid was opened, or <tt><font size=+1>&#8722;1</font></tt> if this fid has not been opened
-    yet. Note that in addition to the values <tt><font size=+1>OREAD</font></tt>,
-    <tt><font size=+1>OWRITE</font></tt>, and <tt><font size=+1>ORDWR</font></tt>, <tt><font size=+1>omode</font></tt> can contain the various flags permissible
-    in an open call. To ignore the flags, use <tt><font size=+1>omode&amp;OMASK</font></tt>. <tt><font size=+1>Omode</font></tt> should
-    not be changed by the client. The fid derives from a successful
-    authentication by <tt><font size=+1>uid</font></tt>. <tt><font size=+1>Qid</font></tt> contains the qid returned in the last
-    successful <tt><font size=+1>walk</font></tt> or <tt><font size=+1>create</font></tt> transaction
-    involving the fid. In a file tree-based server, the <tt><font size=+1>Fid</font></tt>&#8217;s <tt><font size=+1>file</font></tt>
-    element points at a <tt><font size=+1>File</font></tt> structure (see <a href="../man3/9p-file.html"><i>9p-file</i>(3)</a>) corresponding
-    to the fid. The <tt><font size=+1>aux</font></tt> member is intended for use by the client to
-    hold information specific to a particular <tt><font size=+1>Fid</font></tt>. With the exception
-    of <tt><font size=+1>aux</font></tt>, these elements should be treated as read-only by
-    the client. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Allocfidpool</i> creates a new <tt><font size=+1>Fidpool</font></tt>. <i>Freefidpool</i> destroys such
-    a pool. <i>Allocfid</i> returns a new <tt><font size=+1>Fid</font></tt> whose fid number is <i>fid</i>. There
-    must not already be an extant <tt><font size=+1>Fid</font></tt> with that number in the pool.
-    Once a <tt><font size=+1>Fid</font></tt> has been allocated, it can be looked up by fid number
-    using <i>lookupfid</i>. <tt><font size=+1>Fid</font></tt>s are reference counted: both
-    <i>allocfid</i> and <i>lookupfid</i> increment the reference count on the <tt><font size=+1>Fid</font></tt>
-    structure before returning. When a reference to a <tt><font size=+1>Fid</font></tt> is no longer
-    needed, <i>closefid</i> should be called to note the destruction of the
-    reference. When the last reference to a <tt><font size=+1>Fid</font></tt> is removed, if <i>destroy</i>
-    (supplied when creating the fid pool) is not zero, it is
-    called with the <tt><font size=+1>Fid</font></tt> as a parameter. It should perform whatever
-    cleanup is necessary regarding the <tt><font size=+1>aux</font></tt> element. <i>Removefid</i> is equivalent
-    to <i>closefid</i> but also removes the <tt><font size=+1>Fid</font></tt> from the pool. Note that
-    due to lingering references, the return of <i>removefid</i> may not mean
-    that <i>destroy</i> has been called. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Allocreqpool</i>, <i>freereqpool</i>, <i>allocreq</i>, <i>lookupreq</i>, <i>closereq</i>, and
-    <i>removereq</i> are analogous but operate on <tt><font size=+1>Reqpool</font></tt>s and <tt><font size=+1>Req</font></tt> structures.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9p<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/9p.html"><i>9p</i>(3)</a>, <a href="../man3/9p-file.html"><i>9p-file</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/9p-file.html b/man/man3/9p-file.html
deleted file mode 100644
index 63ae504..0000000
--- a/man/man3/9p-file.html
+++ /dev/null
@@ -1,258 +0,0 @@
-<head>
-<title>9p-file(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>9P-FILE(3)</b><td align=right><b>9P-FILE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Tree, alloctree, freetree, File, createfile, closefile, removefile,
-    walkfile, opendirfile, readdirfile, closedirfile, hasperm &ndash; in-memory
-    file hierarchy<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;fcall.h&gt;<br>
-    #include &lt;thread.h&gt;<br>
-    #include &lt;9p.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    typedef struct File<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Ref;<br>
-            Dir;<br>
-            void*aux;<br>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <i>...<br>
-            </i>
-        </table>
-        
-    </table>
-    <tt><font size=+1>} File;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    typedef struct Tree<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            File *root;<br>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <i>...<br>
-            </i>
-        </table>
-        
-    </table>
-    <tt><font size=+1>} Tree;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Tree* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alloctree(char *uid, char *gid, ulong mode,<br>
-      
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            void (*destroy)(File*))<br>
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freetree(Tree *tree)<br>
-    File* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createfile(File *dir, char *name, char *uid,<br>
-      
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            ulong mode, void *aux)<br>
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removefile(File *file)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closefile(File *file)<br>
-    File* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;walkfile(File *dir, char *path)<br>
-    Readdir* opendirfile(File *dir)<br>
-    long &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readdirfile(Readdir *rdir, char *buf, long n)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closedirfile(Readdir *rdir)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasperm(File *file, char *uid, int p)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>File</font></tt>s and <tt><font size=+1>Tree</font></tt>s provide an in-memory file hierarchy intended for
-    use in 9P file servers. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Alloctree</i> creates a new tree of files, and <i>freetree</i> destroys it.
-    The root of the tree (also the <tt><font size=+1>root</font></tt> element in the structure)
-    will have mode <i>mode</i> and be owned by user <i>uid</i> and group <i>gid</i>. <i>Destroy</i>
-    is used when freeing <tt><font size=+1>File</font></tt> structures and is described later. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>File</font></tt>s (including directories) other than the root are created
-    using <i>createfile</i>, which attempts to create a file named <i>name</i> in
-    the directory <i>dir</i>. If created, the file will have owner <i>uid</i> and
-    have a group inherited from the directory. <i>Mode</i> and the permissions
-    of <i>dir</i> are used to calculate the permission bits for the file
-    as
-    described in <i>open</i>(9p). It is permissible for <i>name</i> to be a slash-separated
-    path rather than a single element. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Removefile</i> removes a file from the file tree. The file will not
-    be freed until the last reference to it has been removed. Directories
-    may only be removed when empty. <i>Removefile</i> returns zero on success,
-    &ndash;1 on error. It is correct to consider <i>removefile</i> to be <i>closefile</i>
-    with the side effect of removing the file when possible. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Walkfile</i> evaluates <i>path</i> relative to the directory <i>dir</i>, returning
-    the resulting file, or zero if the named file or any intermediate
-    element does not exist. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>File</font></tt> structure&#8217;s <tt><font size=+1>aux</font></tt> pointer may be used by the client for
-    per-<tt><font size=+1>File</font></tt> storage. <tt><font size=+1>File</font></tt>s are reference-counted: if not zero, <i>destroy</i>
-    (specified in the call to <i>alloctree</i>) will be called for each file
-    when its last reference is removed or when the tree is freed.
-    <i>Destroy</i> should take care of any necessary cleanup related to
-    <tt><font size=+1>aux</font></tt>. When creating new file references by copying pointers, call
-    <i>incref</i> (see <a href="../man3/lock.html"><i>lock</i>(3)</a>) to update the reference count. To note the
-    removal of a reference to a file, call <i>closefile</i>. <i>Createfile</i> and
-    <i>walkfile</i> return new references. <i>Removefile</i>, <i>closefile</i>, and <i>walkfile</i>
-    (but not <i>createfile</i>) consume the passed reference. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Directories may be read, yielding a directory entry structure
-    (see <i>stat</i>(9p)) for each file in the directory. In order to allow
-    concurrent reading of directories, clients must obtain a <tt><font size=+1>Readdir</font></tt>
-    structure by calling <i>opendirfile</i> on a directory. Subsequent calls
-    to <i>readdirfile</i> will each yield an integral number of machine-
-    independent stat buffers, until end of directory. When finished,
-    call <i>closedirfile</i> to free the <tt><font size=+1>Readdir</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Hasperm</i> does simplistic permission checking; it assumes only one-user
-    groups named by uid and returns non-zero if <i>uid</i> has permission
-    <i>p</i> (a bitwise-or of <tt><font size=+1>AREAD</font></tt>, <tt><font size=+1>AWRITE</font></tt> and <tt><font size=+1>AEXEC</font></tt>) according to <i>file</i><tt><font size=+1>&#8722;&gt;mode</font></tt>.
-    9P servers written using <tt><font size=+1>File</font></tt> trees will do standard permission
-    checks automatically; <i>hasperm</i> may be
-    called explicitly to do additional checks. A 9P server may link
-    against a different <i>hasperm</i> implementation to provide more complex
-    groups.<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The following code correctly handles references when elementwise
-    walking a path and creating a file.<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>f = tree&#8722;&gt;root;<br>
-        incref(f);<br>
-        for(i=0; i&lt;n &amp;&amp; f!=nil; i++)<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            f = walkfile(f, elem[i]);<br>
-            
-        </table>
-        if(f == nil)<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            return nil;<br>
-            
-        </table>
-        nf = createfile(f, &quot;foo&quot;, &quot;nls&quot;, 0666, nil);<br>
-        closefile(f);<br>
-        return nf;<br>
-        </font></tt>
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9p/file.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/9p.html"><i>9p</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The reference counting is cumbersome.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/9p-intmap.html b/man/man3/9p-intmap.html
deleted file mode 100644
index f6d1822..0000000
--- a/man/man3/9p-intmap.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<head>
-<title>9p-intmap(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>9P-INTMAP(3)</b><td align=right><b>9P-INTMAP(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Intmap, allocmap, freemap, insertkey, caninsertkey, lookupkey,
-    deletekey &ndash; integer to data structure maps<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;fcall.h&gt;<br>
-    #include &lt;thread.h&gt;<br>
-    #include &lt;9p.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Intmap* allocmap(void (*inc)(void*))<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freemap(Intmap *map, void (*dec)(void*))<br>
-    void* &nbsp;&nbsp;&nbsp;&nbsp;lookupkey(Intmap *map, ulong key)<br>
-    void* &nbsp;&nbsp;&nbsp;&nbsp;insertkey(Intmap *map, ulong key, void *val)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;caninsertkey(Intmap *map, ulong key, void *val)<br>
-    void* &nbsp;&nbsp;&nbsp;&nbsp;lookupkey(Intmap *map, ulong key)<br>
-    void* &nbsp;&nbsp;&nbsp;&nbsp;deletekey(Intmap *map, ulong key)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    An <tt><font size=+1>Intmap</font></tt> is an arbitrary mapping from integers to pointers. <i>Allocmap</i>
-    creates a new map, and <i>freemap</i> destroys it. The <i>inc</i> function is
-    called each time a new pointer is added to the map; similarly,
-    <i>dec</i> is called on each pointer left in the map when it is being
-    freed. Typically these functions maintain reference counts.
-    New entries are added to the map by calling <i>insertkey</i>, which will
-    return the previous value associated with the given <i>key</i>, or zero
-    if there was no previous value. <i>Caninsertkey</i> is like <i>insertkey</i>
-    but only inserts <i>val</i> if there is no current mapping. It returns
-    1 if <i>val</i> was inserted, 0 otherwise. <i>Lookupkey</i> returns the pointer
-    associated with <i>key</i>, or zero if there is no such pointer. <i>Deletekey</i>
-    removes the entry for <i>id</i> from the map, returning the associated
-    pointer, if any. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Concurrent access to <tt><font size=+1>Intmap</font></tt>s is safe, moderated via a <tt><font size=+1>QLock</font></tt> stored
-    in the <tt><font size=+1>Intmap</font></tt> structure. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    In anticipation of the storage of reference-counted structures,
-    an increment function <i>inc</i> may be specified at map creation time.
-    <i>Lookupkey</i> calls <i>inc</i> (if non-zero) on pointers before returning
-    them. If the reference count adjustments were left to the caller
-    (and thus not protected by the lock), it would be possible to
-    accidentally reclaim a structure if, for example, it was deleted
-    from the map and its reference count decremented between the return
-    of <i>insertkey</i> and the external increment. <i>Insertkey</i> and <i>caninsertkey</i>
-    do <i>not</i> call <i>inc</i> when inserting <i>val</i> into the map, nor do <i>insertkey</i>
-    or <i>deletekey</i> call <i>inc</i> when returning old map entries.
-    The rationale is that calling an insertion function transfers
-    responsibility for the reference to the map, and responsibility
-    is given back via the return value of <i>deletekey</i> or the next <i>insertkey</i>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>Intmap</font></tt>s are used by the 9P library to implement <tt><font size=+1>Fidpool</font></tt>s and <tt><font size=+1>Reqpool</font></tt>s.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9p/intmap.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/9p.html"><i>9p</i>(3)</a>, <a href="../man3/9p-fid.html"><i>9p-fid</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/9p.html b/man/man3/9p.html
deleted file mode 100644
index 9896b0b..0000000
--- a/man/man3/9p.html
+++ /dev/null
@@ -1,434 +0,0 @@
-<head>
-<title>9p(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>9P(3)</b><td align=right><b>9P(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Srv, dirread9p, emalloc9p, erealloc9p, estrdup9p, postfd, postmountsrv,
-    readbuf, readstr, respond, srv, threadpostmountsrv, walkandclone
-    &ndash; 9P file service<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;fcall.h&gt;<br>
-    #include &lt;thread.h&gt;<br>
-    #include &lt;9p.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    typedef struct Srv {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Tree* tree;<br>
-        void &nbsp;&nbsp;&nbsp;(*attach)(Req *r);<br>
-        void &nbsp;&nbsp;&nbsp;(*auth)(Req *r);<br>
-        void &nbsp;&nbsp;&nbsp;(*open)(Req *r);<br>
-        void &nbsp;&nbsp;&nbsp;(*create)(Req *r);<br>
-        void &nbsp;&nbsp;&nbsp;(*read)(Req *r);<br>
-        void &nbsp;&nbsp;&nbsp;(*write)(Req *r);<br>
-        void &nbsp;&nbsp;&nbsp;(*remove)(Req *r);<br>
-        void &nbsp;&nbsp;&nbsp;(*flush)(Req *r);<br>
-        void &nbsp;&nbsp;&nbsp;(*stat)(Req *r);<br>
-        void &nbsp;&nbsp;&nbsp;(*wstat)(Req *r);<br>
-        void &nbsp;&nbsp;&nbsp;(*walk)(Req *r);<br>
-        char* (*walk1)(Fid *fid, char *name, Qid *qid);<br>
-        char* (*clone)(Fid *oldfid, Fid *newfid);<br>
-        void &nbsp;&nbsp;&nbsp;(*destroyfid)(Fid *fid);<br>
-        void &nbsp;&nbsp;&nbsp;(*destroyreq)(Req *r);<br>
-        void &nbsp;&nbsp;&nbsp;(*end)(Srv *s);<br>
-        void* aux;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;infd;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;outfd;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;srvfd;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;nopipe;<br>
-        
-    </table>
-    } Srv;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;srv(Srv *s)<br>
-    void &nbsp;&nbsp;&nbsp;postmountsrv(Srv *s, char *name, char *mtpt, int flag)<br>
-    void &nbsp;&nbsp;&nbsp;threadpostmountsrv(Srv *s, char *name, char *mtpt, int flag)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;postfd(char *srvname, int fd)<br>
-    void &nbsp;&nbsp;&nbsp;respond(Req *r, char *error)<br>
-    ulong readstr(Req *r, char *src)<br>
-    ulong readbuf(Req *r, void *src, ulong nsrc)<br>
-    typedef int Dirgen(int n, Dir *dir, void *aux)<br>
-    void &nbsp;&nbsp;&nbsp;dirread9p(Req *r, Dirgen *gen, void *aux)<br>
-    void &nbsp;&nbsp;&nbsp;walkandclone(Req *r, char *(*walk1)(Fid *old, char *name,
-    void *v),<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char *(*clone)(Fid *old, Fid *new, void *v), void *v)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void* emalloc9p(ulong n)<br>
-    void* erealloc9p(void *v, ulong n)<br>
-    char* estrdup9p(char *s)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    extern int chatty9p;<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The function <i>srv</i> serves a 9P session by reading requests from
-    <tt><font size=+1>s&#8722;&gt;infd</font></tt>, dispatching them to the function pointers kept in <tt><font size=+1>Srv</font></tt>,
-    and writing the responses to <tt><font size=+1>s&#8722;&gt;outfd</font></tt>. (Typically, <i>postmountsrv</i>
-    or <i>threadpostmountsrv</i> initializes the <tt><font size=+1>infd</font></tt> and <tt><font size=+1>outfd</font></tt> structure
-    members. See the description below.) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>Req</font></tt> and <tt><font size=+1>Fid</font></tt> structures are allocated one-to-one with uncompleted
-    requests and active fids, and are described in <a href="../man3/9p-fid.html"><i>9p-fid</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The behavior of <i>srv</i> depends on whether there is a file tree (see
-    <a href="../man3/9p-file.html"><i>9p-file</i>(3)</a>) associated with the server, that is, whether the <tt><font size=+1>tree</font></tt>
-    element is nonzero. The differences are made explicit in the discussion
-    of the service loop below. The <tt><font size=+1>aux</font></tt> element is the client&#8217;s, to
-    do with as it pleases. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Srv</i> does not return until the 9P conversation is finished. Since
-    it is usually run in a separate process so that the caller can
-    exit, the service loop has little chance to return gracefully
-    on out of memory errors. It calls <i>emalloc9p</i>, <i>erealloc9p</i>, and <i>estrdup9p</i>
-    to obtain its memory. The default implementations of these
-    functions act as <i>malloc</i>, <i>realloc</i>, and <i>strdup</i> but abort the program
-    if they run out of memory. If alternate behavior is desired, clients
-    can link against alternate implementations of these functions.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Postmountsrv</i> and <i>threadpostmountsrv</i> are wrappers that create a
-    separate process in which to run <i>srv</i>. They do the following:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        If <i>s</i><tt><font size=+1>&#8722;&gt;</font></tt><i>nopipe</i> is zero (the common case), initialize <i>s</i><tt><font size=+1>&#8722;&gt;</font></tt><i>infd</i> and <i>s</i><tt><font size=+1>&#8722;&gt;</font></tt><i>outfd</i>
-        to be one end of a freshly allocated pipe, with <i>s</i><tt><font size=+1>&#8722;&gt;</font></tt><i>srvfd</i> initialized
-        as the other end.<br>
-        If <tt><font size=+1>name</font></tt> is non-nil, call <tt><font size=+1>postfd(</font></tt><i>s</i><tt><font size=+1>&#8722;&gt;</font></tt><i>srvfd</i><tt><font size=+1>,</font></tt> <i>name</i><tt><font size=+1>)</font></tt> to post <i>s</i><tt><font size=+1>&#8722;&gt;</font></tt><i>srvfd</i>
-        as <tt><font size=+1>/srv/</font></tt><i>name</i><tt><font size=+1>.<br>
-        </font></tt>Fork a child process via <a href="../man3/rfork.html"><i>rfork</i>(3)</a> or <i>procrfork</i> (see <a href="../man3/thread.html"><i>thread</i>(3)</a>),
-        using the <tt><font size=+1>RFFDG</font></tt>, <tt><font size=+1>RFNAMEG</font></tt>, and <tt><font size=+1>RFMEM</font></tt> flags. The child process calls
-        <i>close(</i><tt><font size=+1>s</font></tt><i>-&gt;</i><tt><font size=+1>srvfd</font></tt><i>)</i> and then <i>srv(</i><tt><font size=+1>s</font></tt><i>)</i>; it will exit once <i>srv</i> returns.<br>
-        If <i>mtpt</i> is non-nil, call <tt><font size=+1>amount(</font></tt><i>s</i><tt><font size=+1>&#8722;&gt;</font></tt><i>srvfd, mtpt</i><tt><font size=+1>,</font></tt> <i>flag</i><tt><font size=+1>, </font></tt>&quot;&quot;); otherwise,
-        close <i>s</i><tt><font size=+1>&#8722;&gt;</font></tt><i>srvfd</i>.<br>
-        The parent returns to the caller. 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-        
-    </table>
-    If any error occurs during this process, the entire process is
-    terminated by calling <a href="../man3/sysfatal.html"><i>sysfatal</i>(3)</a>.<br>
-    <p><font size=+1><b>Service functions    </b></font><br>
-    The functions in a <tt><font size=+1>Srv</font></tt> structure named after 9P transactions are
-    called to satisfy requests as they arrive. If a function is provided,
-    it <i>must</i> arrange for <i>respond</i> to be called when the request is satisfied.
-    The only parameter of each service function is a <tt><font size=+1>Req*</font></tt> parameter
-    (say <i>r</i>). The incoming request parameters are
-    stored in <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ifcall</i>; <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>fid</i> and <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>newfid</i> are pointers to <tt><font size=+1>Fid</font></tt> structures
-    corresponding to the numeric fids in <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ifcall</i>; similarly, <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>oldreq</i>
-    is the <tt><font size=+1>Req</font></tt> structure corresponding to <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ifcall.oldtag</i>. The outgoing
-    response data should be stored in <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ofcall</i>. The one exception
-    to this rule is that <i>stat</i> should fill in
-    <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>d</i> rather than <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ofcall.stat</i>: the library will convert the structure
-    into the machine-independent wire representation. Similarly, <i>wstat</i>
-    may consult <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>d</i> rather than decoding <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ifcall</i><tt><font size=+1>.</font></tt><i>stat</i> itself. When
-    a request has been handled, <i>respond</i> should be called with <i>r</i> and
-    an error string. If the request was satisfied
-    successfully, the error string should be a nil pointer. Note that
-    it is permissible for a function to return without itself calling
-    <i>respond</i>, as long as it has arranged for <i>respond</i> to be called at
-    some point in the future by another proc sharing its address space,
-    but see the discussion of <i>flush</i> below. Once <i>respond</i> has been
-    called, the <tt><font size=+1>Req*</font></tt> as well as any pointers it once contained must
-    be considered freed and not referenced. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If the service loop detects an error in a request (e.g., an attempt
-    to reuse an extant fid, an open of an already open fid, a read
-    from a fid opened for write, etc.) it will reply with an error
-    without consulting the service functions. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The service loop provided by <i>srv</i> (and indirectly by <i>postmountsrv</i>
-    and <i>threadpostmountsrv</i>) is single-threaded. If it is expected
-    that some requests might block, arranging for alternate processes
-    to handle them is suggested. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The constraints on the service functions are as follows. These
-    constraints are checked while the server executes. If a service
-    function fails to do something it ought to have, <i>srv</i> will call
-    <i>endsrv</i> and then abort.<br>
-    <i>Auth</i>&nbsp;&nbsp;&nbsp;If authentication is desired, the <i>auth</i> function should record
-    that <i>afid</i> is the new authentication fid and set <i>afid-&gt;qid</i> and <i>ofcall.qid</i>.
-    <i>Auth</i> may be nil, in which case it will be treated as having responded
-    with the error &#8220;<i>argv0: authentication not required</i>,&#8221; where <i>argv0</i>
-    is the program name variable as set by
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>ARGBEGIN</i> (see <a href="../man3/arg.html"><i>arg</i>(3)</a>).<br>
-        
-    </table>
-    <i>Attach</i>The <i>attach</i> function should check the authentication state
-    of <i>afid</i> if desired, and set <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>fid</i><tt><font size=+1>&#8722;&gt;</font></tt><i>qid</i> and <i>ofcall.qid</i> to the qid
-    of the file system root. <i>Attach</i> may be nil only if file trees
-    are in use; in this case, the qid will be filled from the root
-    of the tree, and no authentication will be done.
-    <i>Walk</i>&nbsp;&nbsp;&nbsp;If file trees are in use, <i>walk</i> is handled internally, and
-    <i>srv</i><tt><font size=+1>&#8722;&gt;</font></tt><i>walk</i> is never called.<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        If file trees are not in use, <i>walk</i> should consult <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ifcall</i><tt><font size=+1>.</font></tt><i>wname</i>
-        and <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ifcall</i><tt><font size=+1>.</font></tt><i>nwname</i>, filling in <i>ofcall</i><tt><font size=+1>.</font></tt><i>qid</i> and <i>ofcall</i><tt><font size=+1>.</font></tt><i>nqid</i>, and
-        also copying any necessary <i>aux</i> state from <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>fid</i> to <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>newfid</i> when
-        the two are different. As long as <i>walk</i> sets <i>ofcall</i><tt><font size=+1>.</font></tt><i>nqid</i> appropriately,
-        it can <i>respond</i> with a nil error string
-        even when 9P demands an error (<i>e.g.</i>, in the case of a short walk);
-        the library detects error conditions and handles them appropriately.<br>
-        Because implementing the full walk message is intricate and prone
-        to error, the helper routine <i>walkandclone</i> will handle the request
-        given pointers to two functions <i>walk1</i> and (optionally) <i>clone .
-        Clone</i>, if non-nil, is called to signal the creation of <i>newfid</i>
-        from <i>oldfid</i>. Typically a <i>clone</i> routine will copy or increment
-        a reference count in <i>oldfid</i>&#8217;s <i>aux</i> element. <i>Walk1</i> should walk <i>fid</i>
-        to <i>name</i>, initializing <i>fid</i><tt><font size=+1>&#8722;&gt;</font></tt><i>qid</i> to the new path&#8217;s qid. Both should
-        return nil on success or an error message on error. <i>Walkandclone</i>
-        will call <i>respond</i> after handling the request.<br>
-        
-    </table>
-    <i>Walk1</i>, <i>Clone<br>
-    </i>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        If the client provides functions <i>srv</i><tt><font size=+1>&#8722;&gt;</font></tt><i>walk1</i> and (optionally) <i>srv</i><tt><font size=+1>&#8722;&gt;</font></tt><i>clone</i>,
-        the 9P service loop will call <i>walkandclone</i> with these functions
-        to handle the request. Unlike the <i>walk1</i> above, <i>srv</i><tt><font size=+1>&#8722;&gt;</font></tt><i>walk1</i> must
-        fill in both <i>fid</i><tt><font size=+1>&#8722;&gt;</font></tt><i>qid</i> and <tt><font size=+1>*</font></tt><i>qid</i> with the new qid on a successful
-        walk.<br>
-        
-    </table>
-    <i>Open</i>&nbsp;&nbsp;&nbsp;If file trees are in use, the file metadata will be consulted
-    on open, create, remove, and wstat to see if the requester has
-    the appropriate permissions. If not, an error will be sent back
-    without consulting a service function. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If not using file trees or the user has the appropriate permissions,
-    <i>open</i> is called with <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ofcall</i><tt><font size=+1>.</font></tt><i>qid</i> already initialized to the one
-    stored in the <tt><font size=+1>Fid</font></tt> structure (that is, the one returned in the
-    previous walk). If the qid changes, both should be updated.<br>
-    <i>Create</i>The <i>create</i> function must fill in both <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>fid</i><tt><font size=+1>&#8722;&gt;</font></tt><i>qid</i> and <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ofcall</i><tt><font size=+1>.</font></tt><i>qid</i>
-    on success. When using file trees, <i>create</i> should allocate a new
-    <tt><font size=+1>File</font></tt> with <i>createfile</i>; note that <i>createfile</i> may return nil (because,
-    say, the file already exists). If the <i>create</i> function is nil,
-    <i>srv</i> behaves as though it were a function that always
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        responded with the error &#8220;create prohibited&#8221;.<br>
-        
-    </table>
-    <i>Remove<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Remove
-    </table>
-    </i>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-         should mark the file as removed, whether by calling <i>removefile</i>
-        when using file trees, or by updating an internal data structure.
-        In general it is not a good idea to clean up the <i>aux</i> information
-        associated with the corresponding <tt><font size=+1>File</font></tt> at this time, to avoid
-        memory errors if other fids have references to that
-        file. Instead, it is suggested that <i>remove</i> simply mark the file
-        as removed (so that further operations on it know to fail) and
-        wait until the file tree&#8217;s destroy function is called to reclaim
-        the <i>aux</i> pointer. If not using file trees, it is prudent to take
-        the analogous measures. If <i>remove</i> is not provided, all remove
-        requests will draw &#8220;remove prohibited&#8221; errors.<br>
-        
-    </table>
-    <i>Read</i>&nbsp;&nbsp;&nbsp;The <i>read</i> function must be provided; it fills <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ofcall</i><tt><font size=+1>.</font></tt><i>data</i>
-    with at most <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ifcall</i><tt><font size=+1>.</font></tt><i>count</i> bytes of data from offset <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ifcall</i><tt><font size=+1>.</font></tt><i>offset</i>
-    of the file. It also sets <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ofcall</i><tt><font size=+1>.</font></tt><i>count</i> to the number of bytes
-    being returned. If using file trees, <i>srv</i> will handle reads of
-    directories internally, only calling <i>read</i> for requests on
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        files. <i>Readstr</i> and <i>readbuf</i> are useful for satisfying read requests
-        on a string or buffer. Consulting the request in <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ifcall</i>, they
-        fill <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ofcall</i><tt><font size=+1>.</font></tt><i>data</i> and set <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ofcall</i><tt><font size=+1>.</font></tt><i>count</i>; they do not call <i>respond</i><tt><font size=+1>.</font></tt>
-        Similarly, <i>dirread9p</i> can be used to handle directory reads in
-        servers not using file trees. The passed <i>gen
-        </i>function will be called as necessary to fill <i>dir</i> with information
-        for the <i>n</i>th entry in the directory. The string pointers placed
-        in <i>dir</i> should be fresh copies made with <i>estrdup9p</i>; they will be
-        freed by <i>dirread9p</i> after each successful call to <i>gen</i>. <i>Gen</i> should
-        return zero if it successfully filled <i>dir</i>, minus one on end of
-        directory.<br>
-        
-    </table>
-    <i>Write</i>The <i>write</i> function is similar but need not be provided. If
-    it is not, all writes will draw &#8220;write prohibited&#8221; errors. Otherwise,
-    <i>write</i> should attempt to write the <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ifcall</i><tt><font size=+1>.</font></tt><i>count</i> bytes of <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ifcall</i><tt><font size=+1>.</font></tt><i>data</i>
-    to offset <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ifcall</i><tt><font size=+1>.</font></tt><i>offset</i> of the file, setting <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>ofcall</i><tt><font size=+1>.</font></tt><i>count</i>
-    to the number of bytes actually written. Most
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        programs consider it an error to write less than the requested
-        amount.<br>
-        
-    </table>
-    <i>Stat&nbsp;&nbsp;&nbsp;Stat</i> should fill <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>d</i> with the stat information for <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>fid</i>.
-    If using file trees, <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>d</i> will have been initialized with the stat
-    info from the tree, and <i>stat</i> itself may be nil.<br>
-    <i>Wstat</i>The <i>wstat</i> consults <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>d</i> in changing the metadata for <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>fid</i>
-    as described in <i>stat</i>(9p). When using file trees, <i>srv</i> will take
-    care to check that the request satisfies the permissions outlined
-    in <i>stat</i>(9p). Otherwise <i>wstat</i> should take care to enforce permissions
-    where appropriate.<br>
-    <i>Flush</i>&nbsp;&nbsp;&nbsp;Single-threaded servers, which always call <i>respond</i> before
-    returning from the service functions, need not provide a <i>flush</i>
-    implementation: <i>flush</i> is only necessary in multithreaded programs,
-    which arrange for <i>respond</i> to be called asynchronously. <i>Flush</i> should
-    cause the request <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>oldreq</i> to be cancelled or
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        hurried along. If <i>oldreq</i> is cancelled, this should be signalled
-        by calling <i>respond</i> on <i>oldreq</i> with error string &#8216;<tt><font size=+1>interrupted</font></tt>&#8217;.
-        <i>Flush</i> must respond to <i>r</i> with a nil error string. <i>Flush</i> may respond
-        to <i>r</i> before forcing a response to <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>oldreq</i>. In this case, the
-        library will delay sending the <i>Rflush</i> message until the
-        response to <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>oldreq</i> has been sent. 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-        
-    </table>
-    <i>Destroyfid</i>, <i>destroyreq</i>, and <i>end</i> are auxiliary functions, not called
-    in direct response to 9P requests.<br>
-    <i>Destroyfid<br>
-    </i>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        When a <tt><font size=+1>Fid</font></tt>&#8217;s reference count drops to zero (<i>i.e.,</i> it has been
-        clunked and there are no outstanding requests referring to it),
-        <i>destroyfid</i> is called to allow the program to dispose of the <i>fid</i><tt><font size=+1>&#8722;&gt;</font></tt><i>aux</i>
-        pointer.<br>
-        
-    </table>
-    <i>Destroyreq<br>
-    </i>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Similarly, when a <tt><font size=+1>Req</font></tt>&#8217;s reference count drops to zero (<i>i.e.</i>, it
-        has been handled via <i>respond</i> and other outstanding pointers to
-        it have been closed), <i>destroyreq</i> is called to allow the program
-        to dispose of the <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>aux</i> pointer.<br>
-        
-    </table>
-    <i>End</i>&nbsp;&nbsp;&nbsp;&nbsp;Once the 9P service loop has finished (end of file been reached
-    on the service pipe or a bad message has been read), <i>end</i> is called
-    (if provided) to allow any final cleanup. For example, it was
-    used by the Palm Pilot synchronization file system (never finished)
-    to gracefully terminate the serial conversation once the
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        file system had been unmounted. After calling <i>end</i>, the service
-        loop (which runs in a separate process from its caller) terminates
-        using <i>_exits</i> (see <a href="../man3/exits.html"><i>exits</i>(3)</a>). 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-        
-    </table>
-    If the <tt><font size=+1>chatty9p</font></tt> flag is at least one, a transcript of the 9P session
-    is printed on standard error. If the <tt><font size=+1>chatty9p</font></tt> flag is greater
-    than one, additional unspecified debugging output is generated.
-    By convention, servers written using this library accept the <tt><font size=+1>&#8722;D</font></tt>
-    option to increment <tt><font size=+1>chatty9p</font></tt>.
-    
-</table>
-<p><font size=+1><b>EXAMPLES     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9p/ramfs.c</font></tt> is an example of a simple single-threaded
-    file server. On Plan 9, see <i>archfs</i>, <i>cdfs</i>, <i>nntpfs</i>, <i>webfs</i>, and <i>sshnet</i>
-    for more examples. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    In general, the <tt><font size=+1>File</font></tt> interface is appropriate for maintaining
-    arbitrary file trees (as in <i>ramfs</i>). The <tt><font size=+1>File</font></tt> interface is best
-    avoided when the tree structure is easily generated as necessary;
-    this is true when the tree is highly structured (as in <i>cdfs</i> and
-    <i>nntpfs</i>) or is maintained elsewhere.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9p<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/9p-fid.html"><i>9p-fid</i>(3)</a>, <a href="../man3/9p-file.html"><i>9p-file</i>(3)</a>, <i>intro</i>(9p)<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/9pclient.html b/man/man3/9pclient.html
deleted file mode 100644
index 4ae50c2..0000000
--- a/man/man3/9pclient.html
+++ /dev/null
@@ -1,250 +0,0 @@
-<head>
-<title>9pclient(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>9PCLIENT(3)</b><td align=right><b>9PCLIENT(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    CFid, CFsys, fsinit, fsmount, fsroot, fssetroot, fsunmount, nsmount,
-    fsversion, fsauth, fsattach, fsclose, fscreate, fsdirread, fsdirreadall,
-    fsdirstat, fsdirfstat, fsdirwstat, fsdirfwstat, fsopen, fsopenfd,
-    fspread, fspwrite, fsread, fsreadn, fswrite &ndash; 9P client library<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;fcall.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;9pclient.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>CFsys* fsmount(int fd, char *aname) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>CFsys* nsmount(char *name, char *aname) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>CFid* &nbsp;&nbsp;&nbsp;fsroot(CFsys *fsys) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;fsunmount(CFsys *fsys) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>CFsys* fsinit(int fd) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsversion(CFsys *fsys, int msize, char *version, int nversion)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>CFid &nbsp;&nbsp;&nbsp;&nbsp;*fsauth(CFsys *fsys, char *uname, char *aname) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>CFid &nbsp;&nbsp;&nbsp;&nbsp;*fsattach(CFsys *fsys, CFid *afid, char *uname, char *aname)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;fssetroot(CFsys *fsys, CFid *fid) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;fsclose(CFid *fid) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>CFid &nbsp;&nbsp;&nbsp;&nbsp;*fscreate(CFsys *fs, char *path, int mode, ulong perm) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>CFid* &nbsp;&nbsp;&nbsp;fsopen(CFsys *fs, char *path, int mode) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;fspread(CFid *fid, void *buf, long n, vlong offset) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;fspwrite(CFid *fid, void *buf, long n, vlong offset) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;fsread(CFid *fid, void *buf, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;fsreadn(CFid *fid, void *buf, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;fswrite(CFid *fid, void *buf, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;fsdirread(CFid *fid, Dir **d) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;fsdirreadall(CFid *fid, Dir **d) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Dir* &nbsp;&nbsp;&nbsp;&nbsp;fsdirstat(CFsys *fs, char *path) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Dir* &nbsp;&nbsp;&nbsp;&nbsp;fsdirfstat(CFid *fid) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsdirwstat(CFsys *fs, char *path, Dir *d) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsdirfwstat(CFid *fid, Dir *d) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsopenfd(CFsys *fs, char *path, int mode)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The <i>9pclient</i> library helps client programs interact with 9P servers.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A <tt><font size=+1>CFsys*</font></tt> represents a connection to a 9P server. A <tt><font size=+1>CFid*</font></tt> represents
-    an active fid on some connection; see <i>intro</i>(9p). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A new connection to a 9P server is typically established by <i>fsmount</i>
-    or <i>nsmount</i>. <i>Fsmount</i> initializes a new 9P conversation on the open
-    file descriptor <i>fd</i>; <i>nsmount</i> connects to a service named <i>name</i> in
-    the current name space directory (see <a href="../man4/intro.html"><i>intro</i>(4)</a>). Both attach to
-    the root of the file system using the attach name <i>aname</i>.
-    <i>Fsroot</i> returns the <tt><font size=+1>CFid*</font></tt> corresponding to this root. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Fsinit</i>, <i>fsversion</i>, <i>fsauth</i>, <i>fsattach</i>, and <i>fssetroot</i> provide more
-    detailed control over the file system connection than <i>fsmount</i>
-    and <i>nsmount</i>. <i>Fsinit</i> allocates a new <tt><font size=+1>CFsys*</font></tt> corresponding to a
-    9P conversation on the file descriptor <i>fd</i>. <i>Fsversion</i> executes
-    a <i>version</i>(9p) transaction to establish maximum message size and
-    9P
-    version. <i>Fsauth</i> executes an <i>auth</i>(9p) transaction, returning the
-    new auth fid. (<i>Fsread</i> and <i>fswrite</i> can then be used to run the
-    authentication protocol over the fid.) <i>Fsattach</i> executes an <i>attach</i>(9p)
-    transaction to connect to the root of a file tree served by the
-    server. It presents <i>afid</i> (which may be nil) to establish
-    identity. <i>Fssetroot</i> sets the root fid used by <i>fsopen</i>, <i>fsopenfd</i>,
-    <i>fsdirstat</i>, and <i>fsdirwstat</i>, which evaluate rooted path names. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    When a fid is no longer needed, it should be clunked by calling
-    <i>fsclose</i> and then considered freed. Similarly, when the connection
-    to the server is no longer needed, it should be closed by calling
-    <i>fsunmount</i>, which will take care of calling <i>fsclose</i> on the current
-    root fid. Once all fids have been clunked <i>and</i> the connection
-    has been closed (the order is not important), the allocated structures
-    will be freed and the file descriptor corresponding to the connection
-    will be closed (see <a href="../man2/close.html"><i>close</i>(2)</a>). Fids are not reference counted:
-    when <i>fsclose</i> is called, the clunk transaction and freeing of storage
-    happen immediately. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Fscreate</i> and <i>fsopen</i> establish new fids using the <i>walk</i>, <i>create</i>
-    and <i>open</i> transactions (see <i>walk</i>(9p) and <i>open</i>(9p)). The <i>path</i> argument
-    is evaluated relative to the <tt><font size=+1>CFsys</font></tt> root (see <i>fsroot</i> and <i>fssetroot</i>
-    above). The path is parsed as a slash-separated sequence of path
-    elements, as on Unix and Plan 9. Elements that are
-    empty or dot (<tt><font size=+1>.</font></tt>) are ignored. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Once opened, these fids can be read and written using <i>fspread</i>
-    and <i>fspwrite</i>, which execute <i>read</i> and <i>write</i> transactions (see <i>read</i>(9p)).
-    The library maintains an offset for each fid, analagous to the
-    offset maintained by the kernel for each open file descriptor.
-    <i>Fsread</i> and <i>fswrite</i> read and write from this offset, and
-    update it after successful calls. Calling <i>fspread</i> or <i>fspwrite</i>
-    with an <i>offset</i> of &ndash;1 is identical to calling <i>fsread</i> or <i>fswrite</i>.
-    <i>Fsreadn</i> calls <i>fsread</i> repeatedly to obtain exactly <i>n</i> bytes of data,
-    unless it encounters end-of-file or an error. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Reading an open a directory returns directory entries encoded
-    as described in <i>stat</i>(9p). <i>Fsdirread</i> calls <i>fsread</i> and then parses
-    the encoded entries into an array of <tt><font size=+1>Dir*</font></tt> data structures, storing
-    a pointer to the array in <tt><font size=+1>*d</font></tt> and returning the number of entries.
-    <i>Fsdirreadall</i> is similar but reads the entire directory. The
-    returned pointer should be freed with <i>free</i> (see <a href="../man3/malloc.html"><i>malloc</i>(3)</a>) when
-    no longer needed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Fsdirfstat</i> and <i>fsdirfwstat</i> execute <i>stat</i> and <i>wstat</i> (see <i>stat</i>(9p))
-    transactions. The <tt><font size=+1>Dir</font></tt> structure returned by <i>fsdirfstat</i> should
-    be freed with <i>free</i> (see <a href="../man3/malloc.html"><i>malloc</i>(3)</a>) when no longer needed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Fsdirstat</i> and <i>fsdirwstat</i> are similar to <i>fsdirfstat</i> and <i>fsdirfwstat</i>
-    but operate on paths relative to the file system root (see <i>fsopen</i>
-    and <i>fscreate</i> above). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Fsopenfd</i> opens a file on the 9P server for reading or writing
-    but returns a Unix file descriptor instead of a fid structure.
-    The file descriptor is actually one end of a <a href="../man2/pipe.html"><i>pipe</i>(2)</a>. A proxy
-    process on the other end is ferrying data between the pipe and
-    the 9P fid. Because of the implementation as a pipe, the only
-    signal of a
-    read or write error is the closing of the pipe. The file descriptor
-    remains valid even after the <tt><font size=+1>CFsys</font></tt> is unmounted.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9pclient<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man4/intro.html"><i>intro</i>(4)</a>, <i>intro</i>(9p)<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The implementation should use a special version string to distinguish
-    between servers that support <i>openfd</i>(9p) and servers that do not.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The interface does not provide access to the <i>walk</i>(9p) transaction,
-    or to <i>open</i> and <i>create</i> on already-established fids. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    There is no <i>fsseek</i>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/INDEX b/man/man3/INDEX
index 4739b17..0844b3c 100644
--- a/man/man3/INDEX
+++ b/man/man3/INDEX
@@ -84,6 +84,41 @@
 fsversion 9pclient.3
 fswrite 9pclient.3
 nsmount 9pclient.3
+9pcmdbuf 9pcmdbuf.3
+Cmdbuf 9pcmdbuf.3
+lookupcmd 9pcmdbuf.3
+parsecmd 9pcmdbuf.3
+respondcmderror 9pcmdbuf.3
+9pfid 9pfid.3
+Fid 9pfid.3
+Fidpool 9pfid.3
+Req 9pfid.3
+Reqpool 9pfid.3
+allocfid 9pfid.3
+allocfidpool 9pfid.3
+allocreq 9pfid.3
+allocreqpool 9pfid.3
+closefid 9pfid.3
+closereq 9pfid.3
+freefidpool 9pfid.3
+freereqpool 9pfid.3
+lookupfid 9pfid.3
+lookupreq 9pfid.3
+removefid 9pfid.3
+removereq 9pfid.3
+9pfile 9pfile.3
+File 9pfile.3
+Tree 9pfile.3
+alloctree 9pfile.3
+closedirfile 9pfile.3
+closefile 9pfile.3
+createfile 9pfile.3
+freetree 9pfile.3
+hasperm 9pfile.3
+opendirfile 9pfile.3
+readdirfile 9pfile.3
+removefile 9pfile.3
+walkfile 9pfile.3
 Dx addpt.3
 Dy addpt.3
 Pt addpt.3
@@ -248,6 +283,9 @@
 reject dial.3
 dirread dirread.3
 dirreadall dirread.3
+Disk disk.3
+disk disk.3
+opendisk disk.3
 ARROW draw.3
 Image draw.3
 _string draw.3
@@ -479,6 +517,14 @@
 targetname html.3
 toStr html.3
 validitems html.3
+Intmap intmap.3
+allocmap intmap.3
+caninsertkey intmap.3
+deletekey intmap.3
+freemap intmap.3
+insertkey intmap.3
+intmap intmap.3
+lookupkey intmap.3
 closeioproc ioproc.3
 iocall ioproc.3
 ioclose ioproc.3
@@ -925,6 +971,9 @@
 read read.3
 readn read.3
 write read.3
+RGB readcolmap.3
+readcolmap readcolmap.3
+writecolmap readcolmap.3
 regcomp regexp.3
 regcomplit regexp.3
 regcompnl regexp.3
@@ -934,6 +983,15 @@
 regsub regexp.3
 rregexec regexp.3
 rregsub regexp.3
+regcomp regexp9.3
+regcomplit regexp9.3
+regcompnl regexp9.3
+regerror regexp9.3
+regexec regexp9.3
+regexp9 regexp9.3
+regsub regexp9.3
+rregexec regexp9.3
+rregsub regexp9.3
 rfork rfork.3
 
 X509dump rsa.3
@@ -979,6 +1037,11 @@
 runestrncpy runestrcat.3
 runestrrchr runestrcat.3
 runestrstr runestrcat.3
+openscsi scsi.3
+scsi scsi.3
+scsicmd scsi.3
+scsierror scsi.3
+scsiready scsi.3
 hmac_md5 sechash.3
 hmac_sha1 sechash.3
 md4 sechash.3
diff --git a/man/man3/addpt.html b/man/man3/addpt.html
deleted file mode 100644
index 1c327aa..0000000
--- a/man/man3/addpt.html
+++ /dev/null
@@ -1,174 +0,0 @@
-<head>
-<title>addpt(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>ADDPT(3)</b><td align=right><b>ADDPT(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    addpt, subpt, mulpt, divpt, rectaddpt, rectsubpt, insetrect, canonrect,
-    eqpt, eqrect, ptinrect, rectinrect, rectXrect, rectclip, combinerect,
-    Dx, Dy, Pt, Rect, Rpt &ndash; arithmetic on points and rectangles<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;draw.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addpt(Point p, Point q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subpt(Point p, Point q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mulpt(Point p, int a) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;divpt(Point p, int a) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rectangle rectaddpt(Rectangle r, Point p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rectangle rectsubpt(Rectangle r, Point p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rectangle insetrect(Rectangle r, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rectangle canonrect(Rectangle r) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eqpt(Point p, Point q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eqrect(Rectangle r, Rectangle s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ptinrect(Point p, Rectangle r) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rectinrect(Rectangle r, Rectangle s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rectXrect(Rectangle r, Rectangle s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rectclip(Rectangle *rp, Rectangle b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;combinerect(Rectangle *rp, Rectangle b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dx(Rectangle r) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dy(Rectangle r) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pt(int x, int y) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rectangle Rect(int x0, int y0, int x1, int y1) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rectangle Rpt(Point p, Point q)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The functions <i>Pt</i>, <i>Rect</i> and <i>Rpt</i> construct geometrical data types
-    from their components. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Addpt</i> returns the Point sum of its arguments: <tt><font size=+1>Pt(</font></tt><i>p</i><tt><font size=+1>.x+</font></tt><i>q</i><tt><font size=+1>.x,</font></tt> <i>p</i><tt><font size=+1>.y+</font></tt><i>q</i><tt><font size=+1>.y)</font></tt>.
-    <i>Subpt</i> returns the Point difference of its arguments: <tt><font size=+1>Pt(</font></tt><i>p</i><tt><font size=+1>.x&#8722;</font></tt><i>q</i><tt><font size=+1>.x,</font></tt>
-    <i>p</i><tt><font size=+1>.y&#8722;</font></tt><i>q</i><tt><font size=+1>.y)</font></tt>. <i>Mulpt</i> returns the Point <tt><font size=+1>Pt(</font></tt><i>p</i><tt><font size=+1>.x*</font></tt><i>a</i><tt><font size=+1>,</font></tt> <i>p</i><tt><font size=+1>.y*</font></tt><i>a</i><tt><font size=+1>)</font></tt>. <i>Divpt</i> returns
-    the Point <tt><font size=+1>Pt(</font></tt><i>p</i><tt><font size=+1>.x/</font></tt><i>a</i><tt><font size=+1>,</font></tt> <i>p</i><tt><font size=+1>.y/</font></tt><i>a</i><tt><font size=+1>)</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Rectaddpt</i> returns the Rectangle <tt><font size=+1>Rect(add(</font></tt><i>r</i><tt><font size=+1>.min,</font></tt> <i>p</i><tt><font size=+1>)</font></tt>, <tt><font size=+1>add(</font></tt><i>r</i><tt><font size=+1>.max,</font></tt>
-    <i>p</i><tt><font size=+1>))</font></tt>; <i>rectsubpt</i> returns the Rectangle <tt><font size=+1>Rpt(sub(</font></tt><i>r</i><tt><font size=+1>.min,</font></tt> <i>p</i><tt><font size=+1>), sub(</font></tt><i>r</i><tt><font size=+1>.max,</font></tt>
-    <i>p</i><tt><font size=+1>))</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Insetrect</i> returns the Rectangle <tt><font size=+1>Rect(</font></tt><i>r</i><tt><font size=+1>.min.x+</font></tt><i>n</i>, <i>r</i><tt><font size=+1>.min.y+</font></tt><i>n</i>, <i>r</i><tt><font size=+1>.max.x&#8722;</font></tt><i>n</i>,
-    <i>r</i><tt><font size=+1>.max.y&#8722;</font></tt><i>n</i><tt><font size=+1>)</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Canonrect</i> returns a rectangle with the same extent as <i>r</i>, canonicalized
-    so that <tt><font size=+1>min.x </font></tt>&le; <tt><font size=+1>max.x</font></tt>, and <tt><font size=+1>min.y </font></tt>&le; <tt><font size=+1>max.y</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Eqpt</i> compares its argument Points and returns 0 if unequal, 1
-    if equal. <i>Eqrect</i> does the same for its argument Rectangles. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Ptinrect</i> returns 1 if <i>p</i> is a point within <i>r</i>, and 0 otherwise.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Rectinrect</i> returns 1 if all the pixels in <i>r</i> are also in <i>s</i>, and
-    0 otherwise. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>RectXrect</i> returns 1 if <i>r</i> and <i>s</i> share any point, and 0 otherwise.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Rectclip</i> clips in place the Rectangle pointed to by <i>rp</i> so that
-    it is completely contained within <i>b</i>. The return value is 1 if
-    any part of *<i>rp</i> is within <i>b</i>. Otherwise, the return value is 0
-    and *<i>rp</i> is unchanged. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Combinerect</i> overwrites <tt><font size=+1>*rp</font></tt> with the smallest rectangle sufficient
-    to cover all the pixels of <tt><font size=+1>*rp</font></tt> and <tt><font size=+1>b</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The functions <i>Dx</i> and <i>Dy</i> give the width (&#916;x) and height (&#916;y) of
-    a Rectangle. They are implemented as macros.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/graphics.html"><i>graphics</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/aes.html b/man/man3/aes.html
deleted file mode 100644
index 1a455c2..0000000
--- a/man/man3/aes.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<head>
-<title>aes(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>AES(3)</b><td align=right><b>AES(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    setupAESstate, aesCBCencrypt, aesCBCdecrypt - advanced encryption
-    standard (rijndael)<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mp.h&gt;<br>
-    #include &lt;libsec.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void setupAESstate(AESstate *s, uchar key[], int keybytes, uchar
-    *ivec) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void aesCBCencrypt(uchar*, int, AESstate*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void aesCBCdecrypt(uchar*, int, AESstate*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    DES is being replaced by Rijndael, also known as AES, as the preferred
-    block ciper. <i>setupAESstate</i>, <i>aesCBCencrypt</i>, and <i>aesCBCdecrypt</i> implement
-    cipher block chaining encryption. <i>Keybytes</i> should be 16, 24, or
-    32. The initialization vector <i>ivec</i> of <i>AESbsize</i> bytes should random
-    enough to be unlikely to be reused but
-    does not need to be cryptographically strongly unpredictable.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libsec<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mp.html"><i>mp</i>(3)</a>, <a href="../man3/blowfish.html"><i>blowfish</i>(3)</a>, <a href="../man3/des.html"><i>des</i>(3)</a>, <a href="../man3/dsa.html"><i>dsa</i>(3)</a>, <a href="../man3/elgamal.html"><i>elgamal</i>(3)</a>, <a href="../man3/rc4.html"><i>rc4</i>(3)</a>, <a href="../man3/rsa.html"><i>rsa</i>(3)</a>,
-    <a href="../man3/sechash.html"><i>sechash</i>(3)</a>, <a href="../man3/prime.html"><i>prime</i>(3)</a>, <a href="../man3/rand.html"><i>rand</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/allocimage.html b/man/man3/allocimage.html
deleted file mode 100644
index d36fb0e..0000000
--- a/man/man3/allocimage.html
+++ /dev/null
@@ -1,321 +0,0 @@
-<head>
-<title>allocimage(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>ALLOCIMAGE(3)</b><td align=right><b>ALLOCIMAGE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    allocimage, allocimagemix, freeimage, nameimage, namedimage, setalpha,
-    loadimage, cloadimage, unloadimage, readimage, writeimage, bytesperline,
-    wordsperline &ndash; allocating, freeing, reading, writing images<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;draw.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Image *allocimage(Display *d, Rectangle r, <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            ulong chan, int repl, int col)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>Image *allocimagemix(Display *d, ulong one, ulong three)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;freeimage(Image *i)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;nameimage(Image *i, char *name, int in)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Image *namedimage(Display *d, char *name)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong setalpha(ulong color, uchar alpha)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;loadimage(Image *i, Rectangle r, uchar *data, int ndata)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;cloadimage(Image *i, Rectangle r, uchar *data, int ndata)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;unloadimage(Image *i, Rectangle r, uchar *data, int ndata)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Image *readimage(Display *d, int fd, int dolock)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;writeimage(int fd, Image *i, int dolock)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;bytesperline(Rectangle r, int d)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;wordsperline(Rectangle r, int d)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>enum<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        DOpaque &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0xFFFFFFFF,<br>
-        DTransparent &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x00000000,<br>
-        DBlack &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x000000FF,<br>
-        DWhite &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0xFFFFFFFF,<br>
-        DRed &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0xFF0000FF,<br>
-        DGreen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x00FF00FF,<br>
-        DBlue &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x0000FFFF,<br>
-        DCyan &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x00FFFFFF,<br>
-        DMagenta &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0xFF00FFFF,<br>
-        DYellow &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0xFFFF00FF,<br>
-        DPaleyellow &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0xFFFFAAFF,<br>
-        DDarkyellow &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0xEEEE9EFF,<br>
-        DDarkgreen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x448844FF,<br>
-        DPalegreen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0xAAFFAAFF,<br>
-        DMedgreen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x88CC88FF,<br>
-        DDarkblue &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x000055FF,<br>
-        DPalebluegreen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0xAAFFFFFF,<br>
-        DPaleblue &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x0000BBFF,<br>
-        DBluegreen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x008888FF,<br>
-        DGreygreen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x55AAAAFF,<br>
-        DPalegreygreen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x9EEEEEFF,<br>
-        DYellowgreen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x99994CFF,<br>
-        DMedblue &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x000099FF,<br>
-        DGreyblue &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x005DBBFF,<br>
-        DPalegreyblue &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x4993DDFF,<br>
-        DPurpleblue &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x8888CCFF,<br>
-        DNotacolor &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0xFFFFFF00,<br>
-        DNofill &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= DNotacolor,<br>
-        <br>
-        
-    </table>
-    };<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    A new <tt><font size=+1>Image</font></tt> on <tt><font size=+1>Display d</font></tt> is allocated with <tt><font size=+1>allocimage</font></tt>; it will
-    have the rectangle, pixel channel format, and replication flag
-    given by its arguments. Convenient pixel channels like <tt><font size=+1>GREY1</font></tt>,
-    <tt><font size=+1>GREY2</font></tt>, <tt><font size=+1>CMAP8</font></tt>, <tt><font size=+1>RGB16</font></tt>, <tt><font size=+1>RGB24</font></tt>, and <tt><font size=+1>RGBA32</font></tt> are predefined. All the
-    new image&#8217;s pixels will have initial value <i>col</i>. If <i>col
-    </i>is <tt><font size=+1>DNofill</font></tt>, no initialization is done. Representative useful values
-    of color are predefined: <tt><font size=+1>DBlack</font></tt>, <tt><font size=+1>DWhite</font></tt>, <tt><font size=+1>DRed</font></tt>, and so on. Colors
-    are specified by 32-bit numbers comprising, from most to least
-    significant byte, 8-bit values for red, green, blue, and alpha.
-    The values correspond to illumination, so 0 is black
-    and 255 is white. Similarly, for alpha 0 is transparent and 255
-    is opaque. The <i>id</i> field will have been set to the identifying
-    number used by <tt><font size=+1>/dev/draw</font></tt> (see <a href="../man3/draw.html"><i>draw</i>(3)</a>), and the <i>cache</i> field will
-    be zero. If <i>repl</i> is true, the clip rectangle is set to a very
-    large region; if false, it is set to <i>r</i>. The <i>depth</i> field will be
-    set to the
-    number of bits per pixel specified by the channel descriptor (see
-    <a href="../man7/image.html"><i>image</i>(7)</a>). <i>Allocimage</i> returns 0 if the server has run out of image
-    memory. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Allocimagemix</i> is used to allocate background colors. On 8-bit
-    color-mapped displays, it returns a 2x2 replicated image with one
-    pixel colored the color <i>one</i> and the other three with <i>three</i>. (This
-    simulates a wider range of tones than can be represented by a
-    single pixel value on a color-mapped display.) On true color
-    displays, it returns a 1x1 replicated image whose pixel is the
-    result of mixing the two colors in a one to three ratio. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Freeimage</i> frees the resources used by its argument image. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Nameimage</i> publishes in the server the image <i>i</i> under the given
-    <i>name</i>. If <i>in</i> is non-zero, the image is published; otherwise <i>i</i> must
-    be already named <i>name</i> and it is withdrawn from publication. <i>Namedimage</i>
-    returns a reference to the image published under the given <i>name</i>
-    on <tt><font size=+1>Display</font></tt> <i>d</i>. These routines permit
-    unrelated applications sharing a display to share an image; for
-    example they provide the mechanism behind <tt><font size=+1>getwindow</font></tt> (see <a href="../man3/graphics.html"><i>graphics</i>(3)</a>).
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The RGB values in a color are <i>premultiplied</i> by the alpha value;
-    for example, a 50% red is <tt><font size=+1>0x7F00007F</font></tt> not <tt><font size=+1>0xFF00007F</font></tt>. The function
-    <i>setalpha</i> performs the alpha computation on a given <tt><font size=+1>color</font></tt>, ignoring
-    its initial alpha value, multiplying the components by the supplied
-    <tt><font size=+1>alpha</font></tt>. For example, to make a 50% red
-    color value, one could execute <tt><font size=+1>setalpha(DRed, 0x7F)</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The remaining functions deal with moving groups of pixel values
-    between image and user space or external files. There is a fixed
-    format for the exchange and storage of image data (see <a href="../man7/image.html"><i>image</i>(7)</a>).
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Unloadimage</i> reads a rectangle of pixels from image <i>i</i> into <i>data</i>,
-    whose length is specified by <i>ndata</i>. It is an error if <i>ndata</i> is
-    too small to accommodate the pixels. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Loadimage</i> replaces the specified rectangle in image <i>i</i> with the
-    <i>ndata</i> bytes of <i>data</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The pixels are presented one horizontal line at a time, starting
-    with the top-left pixel of <i>r</i>. In the data processed by these routines,
-    each scan line starts with a new byte in the array, leaving the
-    last byte of the previous line partially empty, if necessary.
-    Pixels are packed as tightly as possible within <i>data</i>, regardless
-    of
-    the rectangle being extracted. Bytes are filled from most to least
-    significant bit order, as the <i>x</i> coordinate increases, aligned
-    so <i>x</i>=0 would appear as the leftmost pixel of its byte. Thus, for
-    <tt><font size=+1>depth</font></tt> 1, the pixel at <i>x</i> offset 165 within the rectangle will be
-    in a <i>data</i> byte at bit-position <tt><font size=+1>0x04</font></tt> regardless of the overall
-    rectangle: 165 mod 8 equals 5, and <tt><font size=+1>0x80 &gt;&gt; 5</font></tt> equals <tt><font size=+1>0x04</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>Cloadimage</font></tt> does the same as <i>loadimage</i>, but for <i>ndata</i> bytes of
-    compressed image <i>data</i> (see <a href="../man7/image.html"><i>image</i>(7)</a>). On each call to <i>cloadimage,</i>
-    the <i>data</i> must be at the beginning of a compressed data block,
-    in particular, it should start with the <tt><font size=+1>y</font></tt> coordinate and data
-    length for the block. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Loadimage</i>, <i>cloadimage</i>, and <i>unloadimage</i> return the number of bytes
-    copied. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Readimage</i> creates an image from data contained in an external
-    file (see <a href="../man7/image.html"><i>image</i>(7)</a> for the file format); <i>fd</i> is a file descriptor
-    obtained by opening such a file for reading. The returned image
-    is allocated using <i>allocimage</i>. The <i>dolock</i> flag specifies whether
-    the <tt><font size=+1>Display</font></tt> should be synchronized for multithreaded access;
-    single-threaded programs can leave it zero. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Writeimage</i> writes image <i>i</i> onto file descriptor <i>fd</i>, which should
-    be open for writing. The format is as described for <i>readimage</i>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Readimage</i> and <i>writeimage</i> do not close <i>fd</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bytesperline</i> and <i>wordsperline</i> return the number of bytes or words
-    occupied in memory by one scan line of rectangle <i>r</i> in an image
-    with <i>d</i> bits per pixel.<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To allocate a single-pixel replicated image that may be used to
-    paint a region red,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>red = allocimage(display, Rect(0, 0, 1, 1), RGB24, 1, DRed);<br>
-        </font></tt>
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man7/image.html"><i>image</i>(7)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions return pointer 0 or integer &ndash;1 on failure, usually
-    due to insufficient memory. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    May set <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>Depth</font></tt> must be a divisor or multiple of 8.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/arg.html b/man/man3/arg.html
deleted file mode 100644
index 8ca66c8..0000000
--- a/man/man3/arg.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<head>
-<title>arg(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>ARG(3)</b><td align=right><b>ARG(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    ARGBEGIN, ARGEND, ARGC, ARGF, EARGF, arginit, argopt &ndash; process
-    option letters from argv<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ARGBEGIN { <br>
-    char *ARGF(); <br>
-    char *EARGF(code); <br>
-    Rune ARGC(); <br>
-    } ARGEND <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>extern char *argv0; <br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These macros assume the names <i>argc</i> and <i>argv</i> are in scope; see
-    <a href="../man3/exec.html"><i>exec</i>(3)</a>. <i>ARGBEGIN</i> and <i>ARGEND</i> surround code for processing program
-    options. The code should be the cases of a C switch on option
-    characters; it is executed once for each option character. Options
-    end after an argument <tt><font size=+1>&#8722;&#8722;</font></tt>, before an argument <tt><font size=+1>&#8722;</font></tt>, or
-    before an argument that doesn&#8217;t begin with <tt><font size=+1>&#8722;</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The function macro <i>ARGC</i> returns the current option character,
-    as an integer. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The function macro <i>ARGF</i> returns the current option argument: a
-    pointer to the rest of the option string if not empty, or the
-    next argument in <i>argv</i> if any, or 0. <i>ARGF</i> must be called just once
-    for each option that takes an argument. The macro <i>EARGF</i> is like
-    <i>ARGF</i> but instead of returning zero runs <i>code</i> and, if that
-    returns, calls <a href="../man3/abort.html"><i>abort</i>(3)</a>. A typical value for <i>code</i> is <tt><font size=+1>usage()</font></tt>,
-    as in <tt><font size=+1>EARGF(usage())</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    After <i>ARGBEGIN</i>, <i>argv0</i> is a copy of <tt><font size=+1>argv[0]</font></tt> (conventionally the
-    name of the program). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    After <i>ARGEND</i>, <i>argv</i> points at a zero-terminated list of the remaining
-    <i>argc</i> arguments.<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    This C program can take option <tt><font size=+1>b</font></tt> and option <tt><font size=+1>f</font></tt>, which requires
-    an argument.<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>#include &lt;u.h&gt;<br>
-        #include &lt;libc.h&gt;<br>
-        void<br>
-        main(int argc, char *argv[])<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char *f;<br>
-            print(&quot;%s&quot;, argv[0]);<br>
-            ARGBEGIN {<br>
-            case 'b':<br>
-             print(&quot; &#8722;b&quot;);<br>
-             break;<br>
-            case 'f':<br>
-             print(&quot; &#8722;f(%s)&quot;, (f=ARGF())? f: &quot;no arg&quot;);<br>
-             break;<br>
-            default:<br>
-             print(&quot; badflag('%c')&quot;, ARGC());<br>
-            } ARGEND<br>
-            print(&quot; %d args:&quot;, argc);<br>
-            while(*argv)<br>
-             print(&quot; '%s'&quot;, *argv++);<br>
-            print(&quot;\n&quot;);<br>
-            exits(nil);<br>
-            
-        </table>
-        }<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    Here is the output from running the command <tt><font size=+1>prog &#8722;bffile1 &#8722;r &#8722;f
-    file2 arg1 arg2<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        prog &#8722;b &#8722;f(file1) badflag('r') &#8722;f(file2) 2 args: 'arg1' 'arg2'
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/include/libc.h<br>
-    </font></tt>
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/arith3.html b/man/man3/arith3.html
deleted file mode 100644
index 71cf815..0000000
--- a/man/man3/arith3.html
+++ /dev/null
@@ -1,216 +0,0 @@
-<head>
-<title>arith3(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>ARITH3(3)</b><td align=right><b>ARITH3(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    add3, sub3, neg3, div3, mul3, eqpt3, closept3, dot3, cross3, len3,
-    dist3, unit3, midpt3, lerp3, reflect3, nearseg3, pldist3, vdiv3,
-    vrem3, pn2f3, ppp2f3, fff2p3, pdiv4, add4, sub4 &ndash; operations on
-    3-d points and planes<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;draw.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;geometry.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 add3(Point3 a, Point3 b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 sub3(Point3 a, Point3 b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 neg3(Point3 a) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 div3(Point3 a, double b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 mul3(Point3 a, double b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int eqpt3(Point3 p, Point3 q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int closept3(Point3 p, Point3 q, double eps) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double dot3(Point3 p, Point3 q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 cross3(Point3 p, Point3 q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double len3(Point3 p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double dist3(Point3 p, Point3 q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 unit3(Point3 p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 midpt3(Point3 p, Point3 q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 lerp3(Point3 p, Point3 q, double alpha) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 reflect3(Point3 p, Point3 p0, Point3 p1) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 nearseg3(Point3 p0, Point3 p1, Point3 testp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double pldist3(Point3 p, Point3 p0, Point3 p1) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double vdiv3(Point3 a, Point3 b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 vrem3(Point3 a, Point3 b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 pn2f3(Point3 p, Point3 n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 ppp2f3(Point3 p0, Point3 p1, Point3 p2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 fff2p3(Point3 f0, Point3 f1, Point3 f2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 pdiv4(Point3 a) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 add4(Point3 a, Point3 b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 sub4(Point3 a, Point3 b)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines do arithmetic on points and planes in affine or
-    projective 3-space. Type <tt><font size=+1>Point3</font></tt> is<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct Point3 Point3;<br>
-        struct Point3{<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            double x, y, z, w;<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    Routines whose names end in <tt><font size=+1>3</font></tt> operate on vectors or ordinary points
-    in affine 3-space, represented by their Euclidean <tt><font size=+1>(x,y,z)</font></tt> coordinates.
-    (They assume <tt><font size=+1>w=1</font></tt> in their arguments, and set <tt><font size=+1>w=1</font></tt> in their results.)<br>
-    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br>
-    <tt><font size=+1>add3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add the coordinates of two points.<br>
-    <tt><font size=+1>sub3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subtract coordinates of two points.<br>
-    <tt><font size=+1>neg3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Negate the coordinates of a point.<br>
-    <tt><font size=+1>mul3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Multiply coordinates by a scalar.<br>
-    <tt><font size=+1>div3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Divide coordinates by a scalar.<br>
-    <tt><font size=+1>eqpt3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test two points for exact equality.<br>
-    <tt><font size=+1>closept3</font></tt>&nbsp;&nbsp;&nbsp;Is the distance between two points smaller than <i>eps</i>?<br>
-    <tt><font size=+1>dot3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dot product.<br>
-    <tt><font size=+1>cross3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cross product.<br>
-    <tt><font size=+1>len3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Distance to the origin.<br>
-    <tt><font size=+1>dist3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Distance between two points.<br>
-    <tt><font size=+1>unit3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A unit vector parallel to <i>p</i>.<br>
-    <tt><font size=+1>midpt3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The midpoint of line segment <i>pq</i>.<br>
-    <tt><font size=+1>lerp3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Linear interpolation between <i>p</i> and <i>q</i>.<br>
-    <tt><font size=+1>reflect3</font></tt>&nbsp;&nbsp;&nbsp;The reflection of point <i>p</i> in the segment joining <i>p0</i> and
-    <i>p1</i>.<br>
-    <tt><font size=+1>nearseg3</font></tt>&nbsp;&nbsp;&nbsp;The closest point to <i>testp</i> on segment <i>p0 p1</i>.<br>
-    <tt><font size=+1>pldist3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;The distance from <i>p</i> to segment <i>p0 p1</i>.<br>
-    <tt><font size=+1>vdiv3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vector divide -- the length of the component of <i>a</i> parallel
-    to <i>b</i>, in units of the length of <i>b</i>.<br>
-    <tt><font size=+1>vrem3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vector remainder -- the component of <i>a</i> perpendicular to <i>b</i>.
-    Ignoring roundoff, we have <tt><font size=+1>eqpt3(add3(mul3(b, vdiv3(a, b)), vrem3(a,
-    b)), a)</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The following routines convert amongst various representations
-    of points and planes. Planes are represented identically to points,
-    by duality; a point <tt><font size=+1>p</font></tt> is on a plane <tt><font size=+1>q</font></tt> whenever <tt><font size=+1>p.x*q.x+p.y*q.y+p.z*q.z+p.w*q.w=0</font></tt>.
-    Although when dealing with affine points we assume <tt><font size=+1>p.w=1</font></tt>, we can&#8217;t
-    make the same
-    assumption for planes. The names of these routines are extra-cryptic.
-    They contain an <tt><font size=+1>f</font></tt> (for &#8216;face&#8217;) to indicate a plane, <tt><font size=+1>p</font></tt> for a point
-    and <tt><font size=+1>n</font></tt> for a normal vector. The number <tt><font size=+1>2</font></tt> abbreviates the word &#8216;to.&#8217;
-    The number <tt><font size=+1>3</font></tt> reminds us, as before, that we&#8217;re dealing with affine
-    points. Thus <tt><font size=+1>pn2f3</font></tt> takes a point and a normal
-    vector and returns the corresponding plane.<br>
-    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br>
-    <tt><font size=+1>pn2f3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the plane passing through <i>p</i> with normal <i>n</i>.<br>
-    <tt><font size=+1>ppp2f3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the plane passing through three points.<br>
-    <tt><font size=+1>fff2p3</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute the intersection point of three planes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The names of the following routines end in <tt><font size=+1>4</font></tt> because they operate
-    on points in projective 4-space, represented by their homogeneous
-    coordinates.<br>
-    pdiv4Perspective division. Divide <tt><font size=+1>p.w</font></tt> into <i>p</i>&#8217;s coordinates, converting
-    to affine coordinates. If <tt><font size=+1>p.w</font></tt> is zero, the result is the same
-    as the argument.<br>
-    add4&nbsp;&nbsp;&nbsp;Add the coordinates of two points.<br>
-    sub4&nbsp;&nbsp;&nbsp;Subtract the coordinates of two points.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libgeometry<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/matrix.html"><i>matrix</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/atof.html b/man/man3/atof.html
deleted file mode 100644
index ef464d0..0000000
--- a/man/man3/atof.html
+++ /dev/null
@@ -1,170 +0,0 @@
-<head>
-<title>atof(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>ATOF(3)</b><td align=right><b>ATOF(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    atof, atoi, atol, atoll, charstod, strtod, strtol, strtoll, strtoul,
-    strtoull &ndash; convert text to numbers<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double atof(char *nptr)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;atoi(char *nptr)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;atol(char *nptr)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>vlong &nbsp;&nbsp;&nbsp;atoll(char *nptr)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double charstod(int (*f)(void *), void *a)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double strtod(char *nptr, char **rptr)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;strtol(char *nptr, char **rptr, int base)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>vlong &nbsp;&nbsp;&nbsp;strtoll(char *nptr, char **rptr, int base)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;strtoul(char *nptr, char **rptr, int base)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>vlong &nbsp;&nbsp;&nbsp;strtoull(char *nptr, char **rptr, int base)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Atof</i>, <i>atoi</i>, <i>atol</i>, and <i>atoll</i> convert a string pointed to by <i>nptr</i>
-    to floating, integer, long integer, and long long integer (<tt><font size=+1>vlong</font></tt>)
-    representation respectively. The first unrecognized character
-    ends the string. Leading C escapes are understood, as in <i>strtol</i>
-    with <i>base</i> zero (described below). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Atof</i> recognizes an optional string of tabs and spaces, then an
-    optional sign, then a string of digits optionally containing a
-    decimal point, then an optional <tt><font size=+1>e</font></tt> or <tt><font size=+1>E</font></tt> followed by an optionally
-    signed integer. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Atoi</i> and <i>atol</i> recognize an optional string of tabs and spaces,
-    then an optional sign, then a string of decimal digits. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strtod</i>, <i>strtol</i>, <i>strtoll</i>, <i>strtoul</i>, and <i>strtoull</i> behave similarly
-    to <i>atof</i> and <i>atol</i> and, if <i>rptr</i> is not zero, set <i>*rptr</i> to point
-    to the input character immediately after the string converted.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strtol</i>, <i>strtoll</i>, <i>strtoul</i>, and <i>strtoull</i> interpret the digit string
-    in the specified <i>base</i>, from 2 to 36, each digit being less than
-    the base. Digits with value over 9 are represented by letters,
-    a-z or A-Z. If <i>base</i> is 0, the input is interpreted as an integral
-    constant in the style of C (with no suffixed type indicators):
-    numbers are
-    octal if they begin with <tt><font size=+1>0</font></tt>, hexadecimal if they begin with <tt><font size=+1>0x</font></tt>
-    or <tt><font size=+1>0X</font></tt>, otherwise decimal. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Charstod</i> interprets floating point numbers in the manner of <i>atof</i>,
-    but gets successive characters by calling <tt><font size=+1>(*</font></tt><i>f</i><tt><font size=+1>)(a)</font></tt>. The last call
-    to <i>f</i> terminates the scan, so it must have returned a character
-    that is not a legal continuation of a number. Therefore, it may
-    be necessary to back up the input stream one character after
-    calling <i>charstod</i>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/fscanf.html"><i>fscanf</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Zero is returned if the beginning of the input string is not interpretable
-    as a number; even in this case, <i>rptr</i> will be updated.<br>
-    These routines set <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Atoi</i> and <i>atol</i> accept octal and hexadecimal numbers in the style
-    of C, contrary to the ANSI specification. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Atof</i>, <i>strtod</i>, <i>strtol</i>, <i>strtoul</i>, <i>strtoll</i>, and <i>strtoull</i> are not provided:
-    they are expected to be provided by the underlying system. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Because they are implemented in the fmt library, <i>charstod</i> and
-    <i>strtod</i> are preprocessor macros defined as <i>fmtcharstod</i> and <i>fmtstrtod</i>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    To avoid name conflicts with the underlying system, <i>atoi</i>, <i>atol</i>,
-    and <i>atoll</i> are preprocessor macros defined as <i>p9atoi</i>, <i>p9atol</i>, and
-    <i>p9atoll</i>; see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/bin.html b/man/man3/bin.html
deleted file mode 100644
index f016622..0000000
--- a/man/man3/bin.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<head>
-<title>bin(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>BIN(3)</b><td align=right><b>BIN(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    binalloc, bingrow, binfree &ndash; grouped memory allocation<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;bin.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct BinBin; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;*binalloc(Bin **bp, ulong size, int clr); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;*bingrow(Bin **bp, void *op, ulong osize,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            ulong size, int clr); 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;binfree(Bin **bp);<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines provide simple grouped memory allocation and deallocation.
-    Items allocated with <i>binalloc</i> are added to the <i>Bin</i> pointed to
-    by <i>bp</i>. All items in a bin may be freed with one call to <i>binfree</i>;
-    there is no way to free a single item. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Binalloc</i> returns a pointer to a new block of at least <i>size</i> bytes.
-    The block is suitably aligned for storage of any type of object.
-    No two active pointers from <i>binalloc</i> will have the same value.
-    The call <tt><font size=+1>binalloc(0)</font></tt> returns a valid pointer rather than null.
-    If <i>clr</i> is non-zero, the allocated memory is set to 0; otherwise,
-    the contents are undefined. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bingrow</i> is used to extend the size of a block of memory returned
-    by <i>binalloc</i>. <i>Bp</i> must point to the same bin group used to allocate
-    the original block, and <i>osize</i> must be the last size used to allocate
-    or grow the block. A pointer to a block of at least <i>size</i> bytes
-    is returned, with the same contents in the first <i>osize
-    </i>locations. If <i>clr</i> is non-zero, the remaining bytes are set to
-    0, and are undefined otherwise. If <i>op</i> is <tt><font size=+1>nil</font></tt>, it and <i>osize</i> are
-    ignored, and the result is the same as calling <i>binalloc</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Binalloc</i> and <i>bingrow</i> allocate large chunks of memory using <a href="../man3/malloc.html"><i>malloc</i>(3)</a>
-    and return pieces of these chunks. The chunks are <i>free</i>&#8217;d upon
-    a call to <i>binfree</i>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libbin<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/malloc.html"><i>malloc</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>binalloc</i> and <i>bingrow</i> return 0 if there is no available memory.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/bio.html b/man/man3/bio.html
deleted file mode 100644
index 7825992..0000000
--- a/man/man3/bio.html
+++ /dev/null
@@ -1,293 +0,0 @@
-<head>
-<title>bio(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>BIO(3)</b><td align=right><b>BIO(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Bopen, Bfdopen, Binit, Binits, Brdline, Brdstr, Bgetc, Bgetrune,
-    Bgetd, Bungetc, Bungetrune, Bread, Bseek, Boffset, Bfildes, Blinelen,
-    Bputc, Bputrune, Bprint, Bvprint, Bwrite, Bflush, Bterm, Bbuffered
-    &ndash; buffered input/output<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;bio.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Biobuf* Bopen(char *file, int mode) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Biobuf* Bfdopen(int fd, int mode) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Binit(Biobuf *bp, int fd, int mode) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Binits(Biobufhdr *bp, int fd, int mode, uchar *buf, int size)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bterm(Biobufhdr *bp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bprint(Biobufhdr *bp, char *format, ...) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bvprint(Biobufhdr *bp, char *format, va_list arglist); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void* &nbsp;&nbsp;&nbsp;&nbsp;Brdline(Biobufhdr *bp, int delim) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;&nbsp;Brdstr(Biobufhdr *bp, int delim, int nulldelim) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Blinelen(Biobufhdr *bp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>vlong &nbsp;&nbsp;&nbsp;&nbsp;Boffset(Biobufhdr *bp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bfildes(Biobufhdr *bp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bgetc(Biobufhdr *bp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bgetrune(Biobufhdr *bp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bgetd(Biobufhdr *bp, double *d) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bungetc(Biobufhdr *bp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bungetrune(Biobufhdr *bp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>vlong &nbsp;&nbsp;&nbsp;&nbsp;Bseek(Biobufhdr *bp, vlong n, int type) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bputc(Biobufhdr *bp, int c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bputrune(Biobufhdr *bp, long c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bread(Biobufhdr *bp, void *addr, long nbytes) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bwrite(Biobufhdr *bp, void *addr, long nbytes) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bflush(Biobufhdr *bp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bbuffered(Biobufhdr *bp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines implement fast buffered I/O. I/O on different file
-    descriptors is independent. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bopen</i> opens <i>file</i> for mode <tt><font size=+1>OREAD</font></tt> or creates for mode <tt><font size=+1>OWRITE</font></tt>. It
-    calls <a href="../man3/malloc.html"><i>malloc</i>(3)</a> to allocate a buffer. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bfdopen</i> allocates a buffer for the already-open file descriptor
-    <i>fd</i> for mode <tt><font size=+1>OREAD</font></tt> or <tt><font size=+1>OWRITE</font></tt>. It calls <a href="../man3/malloc.html"><i>malloc</i>(3)</a> to allocate a
-    buffer. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Binit</i> initializes a standard size buffer, type <i>Biobuf</i>, with the
-    open file descriptor passed in by the user. <i>Binits</i> initializes
-    a non-standard size buffer, type <i>Biobufhdr</i>, with the open file
-    descriptor, buffer area, and buffer size passed in by the user.
-    <i>Biobuf</i> and <i>Biobufhdr</i> are related by the declaration:
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct Biobuf Biobuf;<br>
-        struct Biobuf<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Biobufhdr;<br>
-            uchar b[Bungetsize+Bsize];<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    Arguments of types pointer to Biobuf and pointer to Biobufhdr
-    can be used interchangeably in the following routines. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bopen</i>, <i>Binit</i>, or <i>Binits</i> should be called before any of the other
-    routines on that buffer. <i>Bfildes</i> returns the integer file descriptor
-    of the associated open file. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bterm</i> flushes the buffer for <i>bp</i>. If the buffer was allocated by
-    <i>Bopen</i>, the buffer is <i>freed</i> and the file is closed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Brdline</i> reads a string from the file associated with <i>bp</i> up to
-    and including the first <i>delim</i> character. The delimiter character
-    at the end of the line is not altered. <i>Brdline</i> returns a pointer
-    to the start of the line or <tt><font size=+1>0</font></tt> on end-of-file or read error. <i>Blinelen</i>
-    returns the length (including the delimiter) of the most recent
-    string
-    returned by <i>Brdline</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Brdstr</i> returns a <a href="../man3/malloc.html"><i>malloc</i>(3)</a>-allocated buffer containing the next
-    line of input delimited by <i>delim</i>, terminated by a NUL (0) byte.
-    Unlike <i>Brdline</i>, which returns when its buffer is full even if
-    no delimiter has been found, <i>Brdstr</i> will return an arbitrarily
-    long line in a single call. If <i>nulldelim</i> is set, the terminal
-    delimiter will be
-    overwritten with a NUL. After a successful call to <i>Brdstr</i>, the
-    return value of <i>Blinelen</i> will be the length of the returned buffer,
-    excluding the NUL. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bgetc</i> returns the next character from <i>bp</i>, or a negative value
-    at end of file. <i>Bungetc</i> may be called immediately after <i>Bgetc</i>
-    to allow the same character to be reread. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bgetrune</i> calls <i>Bgetc</i> to read the bytes of the next UTF sequence
-    in the input stream and returns the value of the rune represented
-    by the sequence. It returns a negative value at end of file. <i>Bungetrune</i>
-    may be called immediately after <i>Bgetrune</i> to allow the same UTF
-    sequence to be reread as either bytes or a rune.
-    <i>Bungetc</i> and <i>Bungetrune</i> may back up a maximum of five bytes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bgetd</i> uses <i>charstod</i> (see <a href="../man3/atof.html"><i>atof</i>(3)</a>) and <i>Bgetc</i> to read the formatted
-    floating-point number in the input stream, skipping initial blanks
-    and tabs. The value is stored in <tt><font size=+1>*d. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <i>Bread</i> reads <i>nbytes</i> of data from <i>bp</i> into memory starting at <i>addr</i>.
-    The number of bytes read is returned on success and a negative
-    value is returned if a read error occurred. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bseek</i> applies <a href="../man3/seek.html"><i>seek</i>(3)</a> to <i>bp</i>. It returns the new file offset. <i>Boffset</i>
-    returns the file offset of the next character to be processed.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bputc</i> outputs the low order 8 bits of <i>c</i> on <i>bp</i>. If this causes
-    a <i>write</i> to occur and there is an error, a negative value is returned.
-    Otherwise, a zero is returned. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bputrune</i> calls <i>Bputc</i> to output the low order 16 bits of <i>c</i> as a
-    rune in UTF format on the output stream. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bprint</i> is a buffered interface to <a href="../man3/print.html"><i>print</i>(3)</a>. If this causes a <i>write</i>
-    to occur and there is an error, a negative value (<tt><font size=+1>Beof</font></tt>) is returned.
-    Otherwise, the number of bytes output is returned. <i>Bvprint</i> does
-    the same except it takes as argument a <tt><font size=+1>va_list</font></tt> parameter, so it
-    can be called within a variadic function. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bwrite</i> outputs <i>nbytes</i> of data starting at <i>addr</i> to <i>bp</i>. If this
-    causes a <i>write</i> to occur and there is an error, a negative value
-    is returned. Otherwise, the number of bytes written is returned.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bflush</i> causes any buffered output associated with <i>bp</i> to be written.
-    The return is as for <i>Bputc</i>. <i>Bflush</i> is called on exit for every
-    buffer still open for writing. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bbuffered</i> returns the number of bytes in the buffer. When reading,
-    this is the number of bytes still available from the last read
-    on the file; when writing, it is the number of bytes ready to
-    be written.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libbio<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/open.html"><i>open</i>(3)</a>, <a href="../man3/print.html"><i>print</i>(3)</a>, <a href="../man3/exits.html"><i>exits</i>(3)</a>, <a href="../man7/utf.html"><i>utf</i>(7)</a>,<br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Bio</i> routines that return integers yield <tt><font size=+1>Beof</font></tt> if <i>bp</i> is not the
-    descriptor of an open file. <i>Bopen</i> returns zero if the file cannot
-    be opened in the given mode. All routines set <i>errstr</i> on error.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Brdline</i> returns an error on strings longer than the buffer associated
-    with the file and also if the end-of-file is encountered before
-    a delimiter. <i>Blinelen</i> will tell how many characters are available
-    in these cases. In the case of a true end-of-file, <i>Blinelen</i> will
-    return zero. At the cost of allocating a buffer, <i>Brdstr</i> sidesteps
-    these issues. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The data returned by <i>Brdline</i> may be overwritten by calls to any
-    other <i>bio</i> routine on the same <i>bp.</i><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/blowfish.html b/man/man3/blowfish.html
deleted file mode 100644
index d8da66d..0000000
--- a/man/man3/blowfish.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<head>
-<title>blowfish(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>BLOWFISH(3)</b><td align=right><b>BLOWFISH(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    setupBFstate, bfCBCencrypt, bfCBCdecrypt, bfECBencrypt, bfECBdecrypt
-    - blowfish encryption<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mp.h&gt;<br>
-    #include &lt;libsec.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void setupBFstate(BFstate *s, uchar key[], int keybytes,    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uchar
-    *ivec) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void bfCBCencrypt(uchar *data, int len, BFstate *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void bfCBCdecrypt(uchar *data, int len, BFstate *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void bfECBencrypt(uchar *data, int len, BFstate *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void bfECBdecrypt(uchar *data, int len, BFstate *s)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Blowfish is Bruce Schneier&#8217;s symmetric block cipher. It supports
-    variable length keys from 32 to 448 bits and has a block size
-    of 64 bits. Both CBC and ECB modes are supported. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    setupBFstate takes a BFstate structure, a key of at most 56 bytes,
-    the length of the key in bytes, and an initialization vector of
-    8 bytes (set to all zeroes if argument is nil). The encryption
-    and decryption functions take a BFstate structure, a data buffer,
-    and a length, which must be a multiple of eight bytes as padding
-    is
-    currently unsupported.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libsec<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mp.html"><i>mp</i>(3)</a>, <a href="../man3/aes.html"><i>aes</i>(3)</a>, <a href="../man3/des.html"><i>des</i>(3)</a>, <a href="../man3/dsa.html"><i>dsa</i>(3)</a>, <a href="../man3/elgamal.html"><i>elgamal</i>(3)</a>, <a href="../man3/rc4.html"><i>rc4</i>(3)</a>, <a href="../man3/rsa.html"><i>rsa</i>(3)</a>, <a href="../man3/sechash.html"><i>sechash</i>(3)</a>,
-    <a href="../man3/prime.html"><i>prime</i>(3)</a>, <a href="../man3/rand.html"><i>rand</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/cachechars.html b/man/man3/cachechars.html
deleted file mode 100644
index 382b5e7..0000000
--- a/man/man3/cachechars.html
+++ /dev/null
@@ -1,292 +0,0 @@
-<head>
-<title>cachechars(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>CACHECHARS(3)</b><td align=right><b>CACHECHARS(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    cachechars, agefont, loadchar, Subfont, Fontchar, Font &ndash; font utilities<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;draw.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;cachechars(Font *f, char **s, Rune **r, ushort *c, int max,
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <tt><font size=+1>int *widp, char **sfname) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            </font></tt>
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;loadchar(Font *f, Rune r, Cacheinfo *c, int h, 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <tt><font size=+1>int noclr, char **sfname) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            </font></tt>
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>void agefont(Font *f)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    A <i>Font</i> may contain too many characters to hold in memory simultaneously.
-    The graphics library and draw device (see <a href="../man3/draw.html"><i>draw</i>(3)</a>) cooperate to
-    solve this problem by maintaining a cache of recently used character
-    images. The details of this cooperation need not be known by most
-    programs: <i>initdraw</i> and its associated
-    <i>font</i> variable, <i>openfont</i>, <i>stringwidth</i>, <i>string</i>, and <i>freefont</i> are
-    sufficient for most purposes. The routines described below are
-    used internally by the graphics library to maintain the font cache.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A <tt><font size=+1>Subfont</font></tt> is a set of images for a contiguous range of characters,
-    stored as a single image with the characters placed side-by-side
-    on a common baseline. It is described by the following data structures.<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef<br>
-        struct Fontchar {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* left edge of bits */<br>
-            uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* first non&#8722;zero scan&#8722;line */<br>
-            uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bottom; &nbsp;&nbsp;&nbsp;&nbsp;/* last non&#8722;zero scan&#8722;line */<br>
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* offset of baseline */<br>
-            uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* width of baseline */<br>
-            
-        </table>
-        } Fontchar;<br>
-        typedef<br>
-        struct Subfont {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*name;<br>
-            short &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* number of chars in subfont */<br>
-            uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height; &nbsp;&nbsp;&nbsp;&nbsp;/* height of image */<br>
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascent; &nbsp;&nbsp;&nbsp;&nbsp;/* top of image to baseline */<br>
-            Fontchar *info; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* n+1 Fontchars */<br>
-            Image &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*bits; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* of font */<br>
-            
-        </table>
-        } Subfont;<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    The image fills the rectangle <tt><font size=+1>(0, 0,</font></tt> <i>w</i><tt><font size=+1>, height)</font></tt>, where <i>w</i> is the
-    sum of the horizontal extents (of non-zero pixels) for all characters.
-    The pixels to be displayed for character <i>c</i> are in the rectangle
-    <tt><font size=+1>(</font></tt><i>i</i><tt><font size=+1>&#8722;&gt;x,</font></tt> <i>i</i><tt><font size=+1>&#8722;&gt;top, (</font></tt><i>i</i><tt><font size=+1>+1)&#8722;&gt;x,</font></tt> <i>i</i><tt><font size=+1>&#8722;&gt;bottom)</font></tt> where <i>i</i> is <tt><font size=+1>&amp;subfont&#8722;&gt;info[</font></tt><i>c</i><tt><font size=+1>]</font></tt>. When
-    a character is displayed
-    at <tt><font size=+1>Point p</font></tt> in an image, the character rectangle is placed at <tt><font size=+1>(p.x+</font></tt><i>i</i><tt><font size=+1>&#8722;&gt;left,
-    p.y)</font></tt> and the next character of the string is displayed at <tt><font size=+1>(p.x+</font></tt><i>i</i><tt><font size=+1>&#8722;&gt;width,
-    p.y)</font></tt>. The baseline of the characters is <tt><font size=+1>ascent</font></tt> rows down from
-    the top of the subfont image. The <tt><font size=+1>info</font></tt> array has <tt><font size=+1>n+1</font></tt> elements,
-    one each for characters 0
-    to <tt><font size=+1>n&#8722;1</font></tt> plus an additional entry so the size of the last character
-    can be calculated. Thus the width, <i>w</i>, of the <tt><font size=+1>Image</font></tt> associated
-    with a <tt><font size=+1>Subfont s</font></tt> is <tt><font size=+1>s&#8722;&gt;info[s&#8722;&gt;n].x</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A <tt><font size=+1>Font</font></tt> consists of an overall height and ascent and a collection
-    of subfonts together with the ranges of runes (see <a href="../man7/utf.html"><i>utf</i>(7)</a>) they
-    represent. Fonts are described by the following structures.<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef<br>
-        struct Cachefont {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Rune &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* value of 0th char in subfont */<br>
-            Rune &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* value+1 of last char in subfont */<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offset; &nbsp;&nbsp;&nbsp;&nbsp;/* posn in subfont of char at min */<br>
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*name; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* stored in font */<br>
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*subfontname;/* to access subfont */<br>
-            
-        </table>
-        } Cachefont;<br>
-        typedef<br>
-        struct Cacheinfo {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* left edge of bits */<br>
-            uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* width of baseline */<br>
-            schar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* offset of baseline */<br>
-            Rune &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* of char at this slot in cache */<br>
-            ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age;<br>
-            
-        </table>
-        } Cacheinfo;<br>
-        typedef<br>
-        struct Cachesubf {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* for replacement */<br>
-            Cachefont *cf; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* font info that owns us */<br>
-            Subfont &nbsp;&nbsp;&nbsp;&nbsp;*f; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* attached subfont */<br>
-            
-        </table>
-        } Cachesubf;<br>
-        typedef<br>
-        struct Font {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*name;<br>
-            Display &nbsp;&nbsp;&nbsp;&nbsp;*display;<br>
-            short &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height; &nbsp;&nbsp;&nbsp;&nbsp;/* max ht of image;interline space*/<br>
-            short &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascent; &nbsp;&nbsp;&nbsp;&nbsp;/* top of image to baseline */<br>
-            short &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* widest so far; used in caching */<br>
-            short &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nsub; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* number of subfonts */<br>
-            ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* increasing counter; for LRU */<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ncache; &nbsp;&nbsp;&nbsp;&nbsp;/* size of cache */<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nsubf; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* size of subfont list */<br>
-            Cacheinfo *cache;<br>
-            Cachesubf *subf;<br>
-            Cachefont **sub; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* as read from file */<br>
-            Image &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*cacheimage;<br>
-            
-        </table>
-        } Font;<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    The <tt><font size=+1>height</font></tt> and <tt><font size=+1>ascent</font></tt> fields of Font are described in <a href="../man3/graphics.html"><i>graphics</i>(3)</a>.
-    <tt><font size=+1>Sub</font></tt> contains <tt><font size=+1>nsub</font></tt> pointers to <tt><font size=+1>Cachefonts</font></tt>. A <tt><font size=+1>Cachefont</font></tt> connects
-    runes <tt><font size=+1>min</font></tt> through <tt><font size=+1>max</font></tt>, inclusive, to the subfont with file name
-    <tt><font size=+1>name</font></tt>; it corresponds to a line of the file describing the font.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The characters are taken from the subfont starting at character
-    number <tt><font size=+1>offset</font></tt> (usually zero) in the subfont, permitting selection
-    of parts of subfonts. Thus the image for rune <i>r</i> is found in position
-    <i>r</i><tt><font size=+1>&#8722;min+offset</font></tt> of the subfont. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    For each font, the library, with support from the graphics server,
-    maintains a cache of subfonts and a cache of recently used character
-    images. The <tt><font size=+1>subf</font></tt> and <tt><font size=+1>cache</font></tt> fields are used by the library to maintain
-    these caches. The <tt><font size=+1>width</font></tt> of a font is the maximum of the horizontal
-    extents of the characters in the cache.
-    <i>String</i> draws a string by loading the cache and emitting a sequence
-    of cache indices to draw. <i>Cachechars</i> guarantees the images for
-    the characters pointed to by <i>*s</i> or <i>*r</i> (one of these must be nil
-    in each call) are in the cache of <i>f</i>. It calls <i>loadchar</i> to put
-    missing characters into the cache. <i>Cachechars</i> translates the
-    character string into a set of cache indices which it loads into
-    the array <i>c</i>, up to a maximum of <i>n</i> indices or the length of the
-    string. <i>Cachechars</i> returns in <i>c</i> the number of cache indices emitted,
-    updates <i>*s</i> to point to the next character to be processed, and
-    sets <i>*widp</i> to the total width of the characters processed.
-    <i>Cachechars</i> may return before the end of the string if it cannot
-    proceed without destroying active data in the caches. If it needs
-    to load a new subfont, it will fill <tt><font size=+1>*sfname</font></tt> with the name of the
-    subfont it needs and return &ndash;1. It can return zero if it is unable
-    to make progress because it cannot resize the caches. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Loadchar</i> loads a character image into the character cache. Then
-    it tells the graphics server to copy the character into position
-    <i>h</i> in the character cache. If the current font <tt><font size=+1>width</font></tt> is smaller
-    than the horizontal extent of the character being loaded, <i>loadfont</i>
-    clears the cache and resets it to accept characters with the
-    bigger width, unless <i>noclr</i> is set, in which case it just returns
-    &ndash;1. If the character does not exist in the font at all, <i>loadfont</i>
-    returns 0; if it is unable to load the character without destroying
-    cached information, it returns &ndash;1, updating <tt><font size=+1>*sfname</font></tt> as described
-    above. It returns 1 to indicate success. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>age</font></tt> fields record when subfonts and characters have been used.
-    The font <tt><font size=+1>age</font></tt> is increased every time the font is used (<i>agefont</i>
-    does this). A character or subfont <tt><font size=+1>age</font></tt> is set to the font age
-    at each use. Thus, characters or subfonts with small ages are
-    the best candidates for replacement when the cache is full.
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, <a href="../man3/allocimage.html"><i>allocimage</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man3/subfont.html"><i>subfont</i>(3)</a>, <a href="../man7/image.html"><i>image</i>(7)</a>, <a href="../man7/font.html"><i>font</i>(7)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    All of the functions use the graphics error function (see <a href="../man3/graphics.html"><i>graphics</i>(3)</a>).<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/cleanname.html b/man/man3/cleanname.html
deleted file mode 100644
index eba3996..0000000
--- a/man/man3/cleanname.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<head>
-<title>cleanname(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>CLEANNAME(3)</b><td align=right><b>CLEANNAME(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    cleanname &ndash; clean a path name<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cleanname(char *filename)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Cleanname</i> takes a <i>filename</i> and by lexical processing only returns
-    the shortest string that names the same (possibly hypothetical)
-    file. It eliminates multiple and trailing slashes, and it lexically
-    interprets <tt><font size=+1>.</font></tt> and <tt><font size=+1>..</font></tt> directory components in the name. The string
-    is overwritten in place. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The shortest string <i>cleanname</i> can return is two bytes: the null-terminated
-    string <tt><font size=+1>&quot;.&quot;</font></tt>. Therefore <i>filename</i> must contain room for at least two
-    bytes.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/cleanname.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/cleanname.html"><i>cleanname</i>(1)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/color.html b/man/man3/color.html
deleted file mode 100644
index a827470..0000000
--- a/man/man3/color.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<head>
-<title>color(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>COLOR(3)</b><td align=right><b>COLOR(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    cmap2rgb, cmap2rgba, rgb2cmap &ndash; colors and color maps<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;draw.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;rgb2cmap(int red, int green, int blue) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;cmap2rgb(int col) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;cmap2rgba(int col)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines convert between &#8216;true color&#8217; red/green/blue triples
-    and the Plan 9 color map. See <a href="../man7/color.html"><i>color</i>(7)</a> for a description of RGBV,
-    the standard color map. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Rgb2cmap</i> takes a trio of color values, scaled from 0 (no intensity)
-    to 255 (full intensity), and returns the index of the color in
-    RGBV closest to that represented by those values. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Cmap2rgb</i> decomposes the color of RGBV index <i>col</i> and returns a
-    24-bit integer with the low 8 bits representing the blue value,
-    the next 8 representing green, and the next 8 representing red.
-    <i>Cmap2rgba</i> decomposes the color of RGBV index <i>col</i> and returns a
-    32-bit integer with the low 8 bits representing an alpha
-    value, defined to be 255, and the next 8 representing blue, then
-    green, then red, as for <i>cmap2rgba</i> shifted up 8 bits. This 32-bit
-    representation is the format used by <a href="../man3/draw.html"><i>draw</i>(3)</a> and <a href="../man3/memdraw.html"><i>memdraw</i>(3)</a> library
-    routines that take colors as arguments.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, <a href="../man3/allocimage.html"><i>allocimage</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man7/image.html"><i>image</i>(7)</a>, <a href="../man7/color.html"><i>color</i>(7)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/complete.html b/man/man3/complete.html
deleted file mode 100644
index 2945375..0000000
--- a/man/man3/complete.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<head>
-<title>complete(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>COMPLETE(3)</b><td align=right><b>COMPLETE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    complete, freecompletion &ndash; file name completion<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;complete.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>typedef struct CompletionCompletion;<br>
-    struct Completion{<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        uchar advance;<br>
-        uchar complete;<br>
-        char *string;<br>
-        int nmatch;<br>
-        int nfile;<br>
-        char **filename;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Completion* complete(char *dir, char *s); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void freecompletion(Completion *c);<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The <i>complete</i> function implements file name completion. Given a
-    directory <i>dir</i> and a string <i>s</i>, it returns an analysis of the file
-    names in that directory that begin with the string <i>s</i>. The fields
-    <tt><font size=+1>nmatch</font></tt> and <tt><font size=+1>nfile</font></tt> will be set to the number of files that match
-    the prefix and <tt><font size=+1>filename</font></tt> will be filled in with their names. If
-    the file named is a directory, a slash character will be appended
-    to it. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If no files match the string, <tt><font size=+1>nmatch</font></tt> will be zero, but <i>complete</i>
-    will return the full set of files in the directory, with <i>nfile</i>
-    set to their number. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The flag <tt><font size=+1>advance</font></tt> reports whether the string <i>s</i> can be extended
-    without changing the set of files that match. If true, <tt><font size=+1>string</font></tt>
-    will be set to the extension; that is, the value of <tt><font size=+1>string</font></tt> may
-    be appended to <i>s</i> by the caller to extend the embryonic file name
-    unambiguously. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The flag <tt><font size=+1>complete</font></tt> reports whether the extended file name uniquely
-    identifies a file. If true, <tt><font size=+1>string</font></tt> will be suffixed with a blank,
-    or a slash and a blank, depending on whether the resulting file
-    name identifies a plain file or a directory. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <i>freecompletion</i> function frees a <tt><font size=+1>Completion</font></tt> structure and its
-    contents. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    In <a href="../man1/rio.html"><i>rio</i>(1)</a> and <a href="../man1/acme.html"><i>acme</i>(1)</a>, file name completion is triggered by a
-    control-F character or an Insert character.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libcomplete<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/rio.html"><i>rio</i>(1)</a>, <a href="../man1/acme.html"><i>acme</i>(1)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The <i>complete</i> function returns a null pointer and sets <i>errstr</i> if
-    the directory is unreadable or there is some other error.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The behavior of file name completion should be controlled by the
-    plumber.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/cputime.html b/man/man3/cputime.html
deleted file mode 100644
index fafc7f5..0000000
--- a/man/man3/cputime.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<head>
-<title>cputime(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>CPUTIME(3)</b><td align=right><b>CPUTIME(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    cputime, times &ndash; cpu time in this process and children<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;times(long t[4]) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double cputime(void)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    If <i>t</i> is non-null, <i>times</i> fills it in with the number of milliseconds
-    spent in user code, system calls, child processes in user code,
-    and child processes in system calls. <i>Cputime</i> returns the sum of
-    those same times, converted to seconds. <i>Times</i> returns the elapsed
-    real time, in milliseconds, that the process has been
-    running.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/time.c<br>
-    </font></tt>
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/ctime.html b/man/man3/ctime.html
deleted file mode 100644
index 4c16239..0000000
--- a/man/man3/ctime.html
+++ /dev/null
@@ -1,150 +0,0 @@
-<head>
-<title>ctime(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>CTIME(3)</b><td align=right><b>CTIME(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    ctime, localtime, gmtime, asctime, tm2sec, timezone &ndash; convert date
-    and time<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* ctime(long clock) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Tm* &nbsp;&nbsp;&nbsp;&nbsp;localtime(long clock) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Tm* &nbsp;&nbsp;&nbsp;&nbsp;gmtime(long clock) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* asctime(Tm *tm) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;tm2sec(Tm *tm)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Ctime</i> converts a time <i>clock</i> such as returned by <a href="../man3/time.html"><i>time</i>(3)</a> into ASCII
-    (sic) and returns a pointer to a 30-byte string in the following
-    form. All the fields have constant width. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <tt><font size=+1>Wed Aug &nbsp;&nbsp;&nbsp;5 01:07:47 EST 1973\n\0 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            </font></tt>
-            
-        </table>
-        
-    </table>
-    <i>Localtime</i> and <i>gmtime</i> return pointers to structures containing
-    the broken-down time. <i>Localtime</i> corrects for the time zone and
-    possible daylight savings time; <i>gmtime</i> converts directly to GMT.
-    <i>Asctime</i> converts a broken-down time to ASCII and returns a pointer
-    to a 30-byte string.<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef<br>
-        struct {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int &nbsp;&nbsp;&nbsp;sec; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* seconds (range 0..59) */<br>
-            int &nbsp;&nbsp;&nbsp;min; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* minutes (0..59) */<br>
-            int &nbsp;&nbsp;&nbsp;hour; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* hours (0..23) */<br>
-            int &nbsp;&nbsp;&nbsp;mday; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* day of the month (1..31) */<br>
-            int &nbsp;&nbsp;&nbsp;mon; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* month of the year (0..11) */<br>
-            int &nbsp;&nbsp;&nbsp;year; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* year A.D. &ndash; 1900 */<br>
-            int &nbsp;&nbsp;&nbsp;wday; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* day of week (0..6, Sunday = 0) */<br>
-            int &nbsp;&nbsp;&nbsp;yday; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* day of year (0..365) */<br>
-            char zone[4]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* time zone name */<br>
-            int &nbsp;&nbsp;&nbsp;tzoff; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* time zone delta from GMT */<br>
-            
-        </table>
-        } Tm;<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    <i>Tm2sec</i> converts a broken-down time to seconds since the start
-    of the epoch. It ignores <tt><font size=+1>wday</font></tt>, and assumes the local time zone
-    if <tt><font size=+1>zone</font></tt> is not <tt><font size=+1>GMT</font></tt>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/date.c<br>
-    /usr/local/plan9/src/lib9/ctime.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/date.html"><i>date</i>(1)</a>, <a href="../man3/time.html"><i>time</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The return values point to static data whose content is overwritten
-    by each call. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Daylight Savings Time is &#8220;normal&#8221; in the Southern hemisphere.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    These routines are not equipped to handle non-ASCII text, and
-    are provincial anyway. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    To avoid name conflicts with the underlying system, <i>ctime</i>, <i>localtime</i>,
-    <i>gmtime</i>, <i>asctime</i>, and <i>tm2sec</i> are preprocessor macros defined as
-    <i>p9ctime</i>, <i>p9localtime</i>, <i>p9gmtime</i>, <i>p9asctime</i>, and <i>p9tm2sec</i>; see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/des.html b/man/man3/des.html
deleted file mode 100644
index 0752e8c..0000000
--- a/man/man3/des.html
+++ /dev/null
@@ -1,170 +0,0 @@
-<head>
-<title>des(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>DES(3)</b><td align=right><b>DES(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    setupDESstate, des_key_setup, block_cipher, desCBCencrypt, desCBCdecrypt,
-    desECBencrypt, desECBdecrypt, des3CBCencrypt, des3CBCdecrypt,
-    des3ECBencrypt, des3ECBdecrypt, key_setup, des56to64, des64to56,
-    setupDES3state, triple_block_cipher, - single and triple digital
-    encryption standard
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mp.h&gt;<br>
-    #include &lt;libsec.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void des_key_setup(uchar key[8], ulong schedule[32]) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void block_cipher(ulong *schedule, uchar *data,  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int decrypting)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void setupDESstate(DESstate *s, uchar key[8], uchar *ivec) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void desCBCencrypt(uchar*, int, DESstate*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void desCBCdecrypt(uchar*, int, DESstate*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void desECBencrypt(uchar*, int, DESstate*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void desECBdecrypt(uchar*, int, DESstate*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void triple_block_cipher(ulong keys[3][32], uchar*, int) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void setupDES3state(DES3state *s, uchar key[3][8],    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uchar *ivec)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void des3CBCencrypt(uchar*, int, DES3state*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void des3CBCdecrypt(uchar*, int, DES3state*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void des3ECBencrypt(uchar*, int, DES3state*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void des3ECBdecrypt(uchar*, int, DES3state*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void key_setup(uchar[7], ulong[32]) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void des56to64(uchar *k56, uchar *k64) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void des64to56(uchar *k64, uchar *k56)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The Digital Encryption Standard (DES) is a shared key or symmetric
-    encryption using either a 56 bit key for single DES or three 56
-    bit keys for triple des. The keys are encoded into 64 bits where
-    every eight bit is parity. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The basic DES function, <i>block_cipher</i>, works on a block of 8 bytes,
-    converting them in place. It takes a key schedule, a pointer to
-    the block, and a flag indicating encrypting (0) or decrypting
-    (1). The key schedule is created from the key using <i>des_key_setup</i>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Since it is a bit awkward, <i>block_cipher</i> is rarely called directly.
-    Instead, one normally uses routines that encrypt larger buffers
-    of data and which may chain the encryption state from one buffer
-    to the next. These routines keep track of the state of the encryption
-    using a <tt><font size=+1>DESstate</font></tt> structure that contains the key
-    schedule and any chained state. <i>SetupDESstate</i> sets up the <tt><font size=+1>DESstate</font></tt>
-    structure using the key and an 8 byte initialization vector. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Electronic code book, using <i>desECBencrypt</i> and <i>desECBdecrypt</i>, is
-    the less secure mode. The encryption of each 8 bytes does not
-    depend on the encryption of any other. Hence the encryption is
-    a substitution cipher using 64 bit characters. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Cipher block chaining mode, using <i>desCBCencrypt</i> and <i>desCBCdecrypt</i>,
-    is more secure. Every block encrypted depends on the initialization
-    vector and all blocks encrypted before it. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    For both CBC and ECB modes, a stream of data can be encrypted
-    as multiple buffers. However, all buffers except the last must
-    be a multiple of 8 bytes to ensure successful decryption of the
-    stream. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    There are equivalent triple DES functions for each of the DES
-    functions. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    In the past Plan 9 used a 56 bit or 7 byte format for DES keys.
-    To be compatible with the rest of the world, we&#8217;ve abandoned this
-    format. There are two functions: <i>des56to64</i> and <i>des64to56</i> to convert
-    back and forth between the two formats. Also a key schedule can
-    be set up from the 7 byte format using <i>key_setup</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libsec<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mp.html"><i>mp</i>(3)</a>, <a href="../man3/aes.html"><i>aes</i>(3)</a>, <a href="../man3/blowfish.html"><i>blowfish</i>(3)</a>, <a href="../man3/dsa.html"><i>dsa</i>(3)</a>, <a href="../man3/elgamal.html"><i>elgamal</i>(3)</a>, <a href="../man3/rc4.html"><i>rc4</i>(3)</a>, <a href="../man3/rsa.html"><i>rsa</i>(3)</a>,
-    <a href="../man3/sechash.html"><i>sechash</i>(3)</a>, <a href="../man3/prime.html"><i>prime</i>(3)</a>, <a href="../man3/rand.html"><i>rand</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/dial.html b/man/man3/dial.html
deleted file mode 100644
index e101485..0000000
--- a/man/man3/dial.html
+++ /dev/null
@@ -1,241 +0,0 @@
-<head>
-<title>dial(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>DIAL(3)</b><td align=right><b>DIAL(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    dial, announce, listen, accept, reject, netmkaddr, dialparse &ndash;
-    make and break network connections<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;dial(char *addr, char *local, char *dir, int *cfdp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;announce(char *addr, char *dir) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;listen(char *dir, char *newdir) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;accept(int ctl, char *dir) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;reject(int ctl, char *dir, char *cause) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* netmkaddr(char *addr, char *defnet, char *defservice) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;dialparse(char *addr, char **net, char **unix,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            u32int *host, int *port)<br>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    For these routines, <i>addr</i> is a network address of the form <i>network</i><tt><font size=+1>!</font></tt><i>netaddr</i><tt><font size=+1>!</font></tt><i>service</i>,
-    <i>network</i><tt><font size=+1>!</font></tt><i>netaddr</i>, or simply <i>netaddr</i>. <i>Network</i> is <tt><font size=+1>tcp</font></tt>, <tt><font size=+1>udp</font></tt>, <tt><font size=+1>unix</font></tt>,
-    or the special token, <tt><font size=+1>net</font></tt>. <tt><font size=+1>Net</font></tt> is a free variable that stands
-    for any network in common between the source and the host <i>netaddr</i>.
-    <i>Netaddr</i> can be a host name, a
-    domain name, or a network address. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    On Plan 9, the <i>dir</i> argument is a path name to a <i>line directory</i>
-    that has files for accessing the connection. To keep the same
-    function signatures, the Unix port of these routines uses strings
-    of the form <tt><font size=+1>/dev/fd/</font></tt><i>n</i> instead of line directory paths. These strings
-    should be treated as opaque data and ignored. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Dial</i> makes a call to destination <i>addr</i> on a multiplexed network.
-    If the network in <i>addr</i> is <tt><font size=+1>net</font></tt>, <i>dial</i> will try in succession all
-    networks in common between source and destination until a call
-    succeeds. It returns a file descriptor open for reading and writing
-    the <tt><font size=+1>data</font></tt> file in the line directory. The <tt><font size=+1>addr</font></tt> file in the line
-    directory contains the address called. <i>Dial</i>&#8217;s <i>local</i>, <i>dir</i>, and
-    <i>cfdp</i> arguments are not supported and must be zero. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Announce</i> and <i>listen</i> are the complements of <i>dial</i>. <i>Announce</i> establishes
-    a network name to which calls can be made. Like <i>dial</i>, <i>announce</i>
-    returns an open <tt><font size=+1>ctl</font></tt> file. The <i>netaddr</i> used in announce may be
-    a local address or an asterisk, to indicate all local addresses,
-    e.g. <tt><font size=+1>tcp!*!echo</font></tt>. The <i>listen</i> routine takes as its
-    first argument the <i>dir</i> of a previous <i>announce</i>. When a call is
-    received, <i>listen</i> returns an open <tt><font size=+1>ctl</font></tt> file for the line the call
-    was received on. It sets <i>newdir</i> to the path name of the new line
-    directory. <i>Accept</i> accepts a call received by <i>listen</i>, while <i>reject</i>
-    refuses the call because of <i>cause</i>. <i>Accept</i> returns a file descriptor
-    for
-    the data file opened <tt><font size=+1>ORDWR</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Netmkaddr</i> makes an address suitable for dialing or announcing.
-    It takes an address along with a default network and service to
-    use if they are not specified in the address. It returns a pointer
-    to static data holding the actual address to use. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Dialparse</i> parses a network address as described above into a network
-    name, a Unix domain socket address, an IPv4 host address, and
-    an IPv4 port number.<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLES     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Make a call and return an open file descriptor to use for communications:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>int callkremvax(void)<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            return dial(&quot;kremvax&quot;, 0, 0, 0);<br>
-            
-        </table>
-        }<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    Connect to a Unix socket served by <a href="../man4/acme.html"><i>acme</i>(4)</a>:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>int dialacme(void)<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            return dial(&quot;unix!/tmp/ns.ken.:0/acme&quot;, 0, 0, 0);<br>
-            
-        </table>
-        }<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    Announce as <tt><font size=+1>kremvax</font></tt> on TCP/IP and loop forever receiving calls
-    and echoing back to the caller anything sent:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>int<br>
-        bekremvax(void)<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int dfd, acfd, lcfd;<br>
-            char adir[40], ldir[40];<br>
-            int n;<br>
-            char buf[256];<br>
-            acfd = announce(&quot;tcp!*!7&quot;, adir);<br>
-            if(acfd &lt; 0)<br>
-             return &#8722;1;<br>
-            for(;;){<br>
-             /* listen for a call */<br>
-             lcfd = listen(adir, ldir);<br>
-             if(lcfd &lt; 0)<br>
-              return &#8722;1;<br>
-             /* fork a process to echo */<br>
-             switch(fork()){<br>
-             case &#8722;1:<br>
-              perror(&quot;forking&quot;);<br>
-              close(lcfd);<br>
-              break;<br>
-             case 0:<br>
-              /* accept the call and open the data file */<br>
-              dfd = accept(lcfd, ldir);<br>
-              if(dfd &lt; 0)<br>
-               return &#8722;1;<br>
-              /* echo until EOF */<br>
-              while((n = read(dfd, buf, sizeof(buf))) &gt; 0)<br>
-               write(dfd, buf, n);<br>
-              exits(0);<br>
-             default:<br>
-              close(lcfd);<br>
-              break;<br>
-             }<br>
-            }<br>
-            
-        </table>
-        }<br>
-        </font></tt>
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/dial.c<br>
-    /usr/local/plan9/src/lib9/announce.c<br>
-    /usr/local/plan9/src/lib9/_p9dialparse.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Dial</i>, <i>announce</i>, and <i>listen</i> return &ndash;1 if they fail.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To avoid name conflicts with the underlying system, <i>dial</i>, <i>announce</i>,
-    <i>listen</i>, <i>netmkaddr</i>, and <i>reject</i> are preprocessor macros defined
-    as <i>p9dial</i>, <i>p9announce</i>, and so on; see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/dirread.html b/man/man3/dirread.html
deleted file mode 100644
index 7c5ba4e..0000000
--- a/man/man3/dirread.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<head>
-<title>dirread(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>DIRREAD(3)</b><td align=right><b>DIRREAD(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    dirread, dirreadall &ndash; read directory<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long dirread(int fd, Dir **buf) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long dirreadall(int fd, Dir **buf) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#define &nbsp;&nbsp;&nbsp;&nbsp;STATMAX &nbsp;&nbsp;&nbsp;&nbsp;65535U 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#define &nbsp;&nbsp;&nbsp;&nbsp;DIRMAX &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(sizeof(Dir)+STATMAX)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The data returned by a <a href="../man3/read.html"><i>read</i>(3)</a> on a directory is a set of complete
-    directory entries in a machine-independent format, exactly equivalent
-    to the result of a <a href="../man3/stat.html"><i>stat</i>(3)</a> on each file or subdirectory in the
-    directory. <i>Dirread</i> decodes the directory entries into a machine-dependent
-    form. It reads from <i>fd</i> and unpacks the data
-    into an array of <tt><font size=+1>Dir</font></tt> structures whose address is returned in <tt><font size=+1>*buf</font></tt>
-    (see <a href="../man3/stat.html"><i>stat</i>(3)</a> for the layout of a <tt><font size=+1>Dir</font></tt>). The array is allocated
-    with <a href="../man3/malloc.html"><i>malloc</i>(3)</a> each time <i>dirread</i> is called. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Dirreadall</i> is like <i>dirread</i>, but reads in the entire directory;
-    by contrast, <i>dirread</i> steps through a directory one <a href="../man3/read.html"><i>read</i>(3)</a> at
-    a time. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Directory entries have variable length. A successful <i>read</i> of a
-    directory always returns an integral number of complete directory
-    entries; <i>dirread</i> always returns complete <tt><font size=+1>Dir</font></tt> structures. See <i>read</i>(9p)
-    for more information. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The constant <tt><font size=+1>STATMAX</font></tt> is the maximum size that a directory entry
-    can occupy. The constant <tt><font size=+1>DIRMAX</font></tt> is an upper limit on the size
-    necessary to hold a <tt><font size=+1>Dir</font></tt> structure and all the associated data.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Dirread</i> and <i>dirreadall</i> return the number of <tt><font size=+1>Dir</font></tt> structures filled
-    in <tt><font size=+1>buf</font></tt>. The file offset is advanced by the number of bytes actually
-    read.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/dirread.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/intro.html"><i>intro</i>(3)</a>, <a href="../man3/open.html"><i>open</i>(3)</a>, <a href="../man3/read.html"><i>read</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Dirread</i> and <i>Dirreadall</i> return zero for end of file and a negative
-    value for error. In either case, <tt><font size=+1>*buf</font></tt> is set to <tt><font size=+1>nil</font></tt> so the pointer
-    can always be freed with impunity. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    These functions set <i>errstr</i>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/draw.html b/man/man3/draw.html
deleted file mode 100644
index f90b16f..0000000
--- a/man/man3/draw.html
+++ /dev/null
@@ -1,1174 +0,0 @@
-<head>
-<title>draw(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>DRAW(3)</b><td align=right><b>DRAW(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Image, draw, drawop, gendraw, gendrawop, drawreplxy, drawrepl,
-    replclipr, line, lineop, poly, polyop, fillpoly, fillpolyop, bezier,
-    bezierop, bezspline, bezsplineop, bezsplinepts, fillbezier, fillbezierop,
-    fillbezspline, fillbezsplineop, ellipse, ellipseop, fillellipse,
-    fillellipseop, arc, arcop, fillarc, fillarcop, icossin, icossin2,
-    border, string, stringop, stringn, stringnop, runestring, runestringop,
-    runestringn, runestringnop, stringbg, stringbgop, stringnbg, stringnbgop,
-    runestringbg, runestringbgop, runestringnbg, runestringnbgop,
-    _string, ARROW, drawsetdebug &ndash; graphics functions<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;draw.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    typedef<br>
-    struct Image<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Display &nbsp;&nbsp;&nbsp;&nbsp;*display; /* display holding data */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* id of system&#8722;held Image */<br>
-        Rectangle r;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* rectangle in data area, local coords */<br>
-        Rectangle clipr; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* clipping region */<br>
-        ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chan; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* pixel channel format descriptor */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;depth; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* number of bits per pixel */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repl; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* flag: data replicates to tile clipr */<br>
-        Screen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*screen; &nbsp;&nbsp;&nbsp;/* 0 if not a window */<br>
-        Image &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*next; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* next in list of windows */<br>
-        
-    </table>
-    } Image;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    typedef enum<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        /* Porter&#8722;Duff compositing operators */<br>
-        Clear &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0,<br>
-        SinD = 8,<br>
-        DinS = 4,<br>
-        SoutD &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 2,<br>
-        DoutS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1,<br>
-        S  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= SinD|SoutD,<br>
-        SoverD &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= SinD|SoutD|DoutS,<br>
-        SatopD &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= SinD|DoutS,<br>
-        SxorD &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= SoutD|DoutS,<br>
-        D  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= DinS|DoutS,<br>
-        DoverS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= DinS|DoutS|SoutD,<br>
-        DatopS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= DinS|SoutD,<br>
-        DxorS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= DoutS|SoutD, /* == SxorD */<br>
-        Ncomp = 12,<br>
-        
-    </table>
-    } Drawop;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    void &nbsp;&nbsp;&nbsp;draw(Image *dst, Rectangle r, Image *src,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *mask, Point p)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;drawop(Image *dst, Rectangle r, Image *src,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *mask, Point p, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;gendraw(Image *dst, Rectangle r, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *mask, Point mp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;gendrawop(Image *dst, Rectangle r, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *mask, Point mp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;drawreplxy(int min, int max, int x)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Point drawrepl(Rectangle r, Point p)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    void &nbsp;&nbsp;&nbsp;replclipr(Image *i, int repl, Rectangle clipr)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    void &nbsp;&nbsp;&nbsp;line(Image *dst, Point p0, Point p1, int end0, int end1,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int radius, Image *src, Point sp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;lineop(Image *dst, Point p0, Point p1, int end0, int end1,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int radius, Image *src, Point sp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;poly(Image *dst, Point *p, int np, int end0, int end1,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int radius, Image *src, Point sp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;polyop(Image *dst, Point *p, int np, int end0, int end1,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int radius, Image *src, Point sp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;fillpoly(Image *dst, Point *p, int np, int wind,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *src, Point sp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;fillpolyop(Image *dst, Point *p, int np, int wind,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *src, Point sp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;bezier(Image *dst, Point p0, Point p1, Point p2, Point p3,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int end0, int end1, int radius, Image *src, Point sp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;bezierop(Image *dst, Point p0, Point p1, Point p2, Point p3,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int end0, int end1, int radius, Image *src, Point sp,<br>
-             Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;bezspline(Image *dst, Point *pt, int npt, int end0, int end1,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int radius, Image *src, Point sp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;bezsplineop(Image *dst, Point *pt, int npt, int end0, int
-    end1,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int radius, Image *src, Point sp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;bezsplinepts(Point *pt, int npt, Point **pp)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;fillbezier(Image *dst, Point p0, Point p1, Point p2, Point
-    p3,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int w, Image *src, Point sp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;fillbezierop(Image *dst, Point p0, Point p1, Point p2, Point
-    p3,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int w, Image *src, Point sp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;fillbezspline(Image *dst, Point *pt, int npt, int w,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *src, Point sp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;fillbezsplineop(Image *dst, Point *pt, int npt, int w,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *src, Point sp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;ellipse(Image *dst, Point c, int a, int b, int thick,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *src, Point sp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;ellipseop(Image *dst, Point c, int a, int b, int thick,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *src, Point sp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;fillellipse(Image *dst, Point c, int a, int b,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *src, Point sp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;fillellipseop(Image *dst, Point c, int a, int b,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *src, Point sp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;arc(Image *dst, Point c, int a, int b, int thick,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *src, Point sp, int alpha, int phi)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;arcop(Image *dst, Point c, int a, int b, int thick,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *src, Point sp, int alpha, int phi, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;fillarc(Image *dst, Point c, int a, int b, Image *src,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Point sp, int alpha, int phi)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;fillarcop(Image *dst, Point c, int a, int b, Image *src,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Point sp, int alpha, int phi, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;icossin(int deg, int *cosp, int *sinp)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;icossin2(int x, int y, int *cosp, int *sinp)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    void &nbsp;&nbsp;&nbsp;border(Image *dst, Rectangle r, int i, Image *color, Point
-    sp)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Point string(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, char *s)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point stringop(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, char *s, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point stringn(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, char *s, int len)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point stringnop(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, char *s, int len, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point runestring(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, Rune *r)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point runestringop(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, Rune *r, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point runestringn(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, Rune *r, int len)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point runestringnop(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, Rune *r, int len, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point stringbg(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, char *s, Image *bg, Point bgp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point stringbgop(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, char *s, Image *bg, Point bgp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point stringnbg(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, char *s, int len, Image *bg, Point bgp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point stringnbgop(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, char *s, int len, Image *bg, Point bgp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point runestringbg(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, Rune *r, Image *bg, Point bgp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point runestringbgop(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, Rune *r, Image *bg, Point bgp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point runestringnbg(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, Rune *r, int len, Image *bg, Point bgp)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point runestringnbgop(Image *dst, Point p, Image *src, Point sp,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font *f, Rune *r, int len, Image *bg, Point bgp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Point _string(Image *dst, Point p, Image *src,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Point sp, Font *f, char *s, Rune *r, int len,<br>
-             Rectangle clipr, Image *bg, Point bgp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;drawsetdebug(int on)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    enum<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            /* line ends */<br>
-            Endsquare &nbsp;&nbsp;&nbsp;= 0,<br>
-            Enddisc  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1,<br>
-            Endarrow = 2,<br>
-            Endmask  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0x1F<br>
-            
-        </table>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    #define ARROW(a, b, c) (Endarrow|((a)&lt;&lt;5)|((b)&lt;&lt;14)|((c)&lt;&lt;23))<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The <tt><font size=+1>Image</font></tt> type defines rectangular pictures and the methods to
-    draw upon them; it is also the building block for higher level
-    objects such as windows and fonts. In particular, a window is
-    represented as an <tt><font size=+1>Image</font></tt>; no special operators are needed to draw
-    on a window. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>r</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The coordinates of the rectangle in the plane for which the <tt><font size=+1>Image</font></tt>
-    has defined pixel values. It should not be modified after the
-    image is created.<br>
-    <tt><font size=+1>clipr</font></tt>&nbsp;&nbsp;&nbsp;The clipping rectangle: operations that read or write the
-    image will not access pixels outside <tt><font size=+1>clipr</font></tt>. Frequently, <tt><font size=+1>clipr</font></tt>
-    is the same as <tt><font size=+1>r</font></tt>, but it may differ; see in particular the discussion
-    of <tt><font size=+1>repl</font></tt>. The clipping region may be modified dynamically using
-    <i>replclipr</i> (<i>q.v.</i>).<br>
-    <tt><font size=+1>chan</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;The pixel channel format descriptor, as described in <a href="../man7/image.html"><i>image</i>(7)</a>.
-    The value should not be modified after the image is created.<br>
-    <tt><font size=+1>depth</font></tt>&nbsp;&nbsp;&nbsp;The number of bits per pixel in the picture; it is identically
-    <tt><font size=+1>chantodepth(chan)</font></tt> (see <a href="../man3/graphics.html"><i>graphics</i>(3)</a>) and is provided as a convenience.
-    The value should not be modified after the image is created.<br>
-    <tt><font size=+1>repl</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;A boolean value specifying whether the image is tiled to cover
-    the plane when used as a source for a drawing operation. If <tt><font size=+1>repl</font></tt>
-    is zero, operations are restricted to the intersection of <tt><font size=+1>r</font></tt> and
-    <tt><font size=+1>clipr</font></tt>. If <tt><font size=+1>repl</font></tt> is set, <tt><font size=+1>r</font></tt> defines the tile to be replicated and
-    <tt><font size=+1>clipr</font></tt> defines the portion of the plane covered by the
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            tiling, in other words, <tt><font size=+1>r</font></tt> is replicated to cover <tt><font size=+1>clipr</font></tt>; in such
-            cases <tt><font size=+1>r</font></tt> and <tt><font size=+1>clipr</font></tt> are independent.<br>
-            For example, a replicated image with <tt><font size=+1>r</font></tt> set to ((0, 0), (1, 1))
-            and <tt><font size=+1>clipr</font></tt> set to ((0, 0), (100, 100)), with the single pixel of
-            <tt><font size=+1>r</font></tt> set to blue, behaves identically to an image with <tt><font size=+1>r</font></tt> and <tt><font size=+1>clipr</font></tt>
-            both set to ((0, 0), (100, 100)) and all pixels set to blue. However,
-            the first image requires far less memory. The
-            replication flag may be modified dynamically using <i>replclipr</i> (<i>q.v.</i>).
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    Most of the drawing functions come in two forms: a basic form,
-    and an extended form that takes an extra <tt><font size=+1>Drawop</font></tt> to specify a Porter-Duff
-    compositing operator to use. The basic forms assume the operator
-    is <tt><font size=+1>SoverD</font></tt>, which suffices for the vast majority of applications.
-    The extended forms are named by adding an
-    -<tt><font size=+1>op</font></tt> suffix to the basic form. Only the basic forms are listed
-    below.<br>
-    <tt><font size=+1>draw(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>r</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>mask</i><tt><font size=+1>,</font></tt> <i>p</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Draw</i> is the standard drawing function. Only those pixels within
-        the intersection of <i>dst</i><tt><font size=+1>&#8722;&gt;r</font></tt> and <i>dst</i><tt><font size=+1>&#8722;&gt;clipr</font></tt> will be affected; <i>draw</i>
-        ignores <i>dst</i><tt><font size=+1>&#8722;&gt;repl</font></tt>. The operation proceeds as follows (this is a
-        description of the behavior, not the implementation):<br>
-        1.&nbsp;&nbsp;&nbsp;&nbsp;If <tt><font size=+1>repl</font></tt> is set in <i>src</i> or <i>mask</i>, replicate their contents to fill
-        their clip rectangles.<br>
-        2.&nbsp;&nbsp;&nbsp;&nbsp;Translate <i>src</i> and <i>mask</i> so <i>p</i> is aligned with <i>r</i><tt><font size=+1>.min</font></tt>.<br>
-        3.&nbsp;&nbsp;&nbsp;&nbsp;Set <i>r</i> to the intersection of <i>r</i> and <i>dst</i><tt><font size=+1>&#8722;&gt;r</font></tt>.<br>
-        4.&nbsp;&nbsp;&nbsp;&nbsp;Intersect <i>r</i> with <i>src</i><tt><font size=+1>&#8722;&gt;clipr</font></tt>. If <i>src</i><tt><font size=+1>&#8722;&gt;repl</font></tt> is false, also intersect
-        <i>r</i> with <i>src</i><tt><font size=+1>&#8722;&gt;r</font></tt>.<br>
-        5.&nbsp;&nbsp;&nbsp;&nbsp;Intersect <i>r</i> with <i>mask</i><tt><font size=+1>&#8722;&gt;clipr</font></tt>. If <i>mask</i><tt><font size=+1>&#8722;&gt;repl</font></tt> is false, also intersect
-        <i>r</i> with <i>mask</i><tt><font size=+1>&#8722;&gt;r</font></tt>.<br>
-        6.&nbsp;&nbsp;&nbsp;&nbsp;For each location in <i>r</i>, combine the <i>dst</i> pixel with the <i>src</i> pixel
-        using the alpha value corresponding to the <i>mask</i> pixel. If the
-        <i>mask</i> has an explicit alpha channel, the alpha value corresponding
-        to the <i>mask</i> pixel is simply that pixel&#8217;s alpha channel. Otherwise,
-        the alpha value is the NTSC greyscale
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            equivalent of the color value, with white meaning opaque and black
-            transparent. In terms of the Porter-Duff compositing algebra,
-            <i>draw</i> replaces the <i>dst</i> pixels with (<i>src</i> in <i>mask</i>) over <i>dst</i>. (In
-            the extended form, &#8220;over&#8221; is replaced by <i>op</i>).<br>
-            
-        </table>
-        The various pixel channel formats involved need not be identical.
-        If the channels involved are smaller than 8-bits, they will be
-        promoted before the calculation by replicating the extant bits;
-        after the calculation, they will be truncated to their proper
-        sizes.<br>
-        
-    </table>
-    <tt><font size=+1>gendraw(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>r</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>p0</i><tt><font size=+1>,</font></tt> <i>mask</i><tt><font size=+1>,</font></tt> <i>p1</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Similar to <i>draw</i> except that <i>gendraw</i> aligns the source and mask
-        differently: <i>src</i> is aligned so <i>p0</i> corresponds to <i>r</i><tt><font size=+1>.min</font></tt> and <i>mask</i>
-        is aligned so <i>p1</i> corresponds to <i>r</i><tt><font size=+1>.min</font></tt><i>.</i> For most purposes with
-        simple masks and source images, <tt><font size=+1>draw</font></tt> is sufficient, but <tt><font size=+1>gendraw</font></tt>
-        is the general operator and the one all other
-        drawing primitives are built upon.<br>
-        
-    </table>
-    <tt><font size=+1>drawreplxy(</font></tt><i>min</i><tt><font size=+1>,</font></tt><i>max</i><tt><font size=+1>,</font></tt><i>x</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Clips <i>x</i> to be in the half-open interval [<i>min</i>, <i>max</i>) by adding or
-        subtracting a multiple of <i>max-min</i>.<br>
-        
-    </table>
-    <tt><font size=+1>drawrepl(</font></tt><i>r</i><tt><font size=+1>,</font></tt><i>p</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Clips the point <i>p</i> to be within the rectangle <i>r</i> by translating
-        the point horizontally by an integer multiple of rectangle width
-        and vertically by the height.<br>
-        
-    </table>
-    <tt><font size=+1>replclipr(</font></tt><i>i</i><tt><font size=+1>,</font></tt><i>repl</i><tt><font size=+1>,</font></tt><i>clipr</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Because the image data is stored on the server, local modifications
-        to the <tt><font size=+1>Image</font></tt> data structure itself will have no effect. <i>Repclipr</i>
-        modifies the local <tt><font size=+1>Image</font></tt> data structure&#8217;s <tt><font size=+1>repl</font></tt> and <tt><font size=+1>clipr</font></tt> fields,
-        and notifies the server of their modification.<br>
-        
-    </table>
-    <tt><font size=+1>line(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>p0</i><tt><font size=+1>,</font></tt> <i>p1</i><tt><font size=+1>,</font></tt> <i>end0</i><tt><font size=+1>,</font></tt> <i>end1</i><tt><font size=+1>,</font></tt> <i>thick</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Line draws in <i>dst</i> a line of width 1+2*<i>thick</i> pixels joining points
-        <i>p0</i> and <i>p1</i>. The line is drawn using pixels from the <i>src</i> image aligned
-        so <i>sp</i> in the source corresponds to <i>p0</i> in the destination. The
-        line touches both <i>p0</i> and <i>p1</i>, and <i>end0</i> and <i>end1</i> specify how the
-        ends of the line are drawn. <tt><font size=+1>Endsquare
-        </font></tt>terminates the line perpendicularly to the direction of the line;
-        a thick line with <tt><font size=+1>Endsquare</font></tt> on both ends will be a rectangle.
-        <tt><font size=+1>Enddisc</font></tt> terminates the line by drawing a disc of diameter 1+2*<i>thick</i>
-        centered on the end point. <tt><font size=+1>Endarrow</font></tt> terminates the line with an
-        arrowhead whose tip touches the endpoint.
-        The macro <tt><font size=+1>ARROW</font></tt> permits explicit control of the shape of the arrow.
-        If all three parameters are zero, it produces the default arrowhead,
-        otherwise, <i>a</i> sets the distance along line from end of the regular
-        line to tip, <i>b</i> sets the distance along line from the barb to the
-        tip, and <i>c</i> sets the distance perpendicular to the
-        line from edge of line to the tip of the barb, all in pixels.<br>
-        <i>Line</i> and the other geometrical operators are equivalent to calls
-        to <i>gendraw</i> using a mask produced by the geometric procedure.<br>
-        
-    </table>
-    <tt><font size=+1>poly(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>p</i><tt><font size=+1>,</font></tt> <i>np</i><tt><font size=+1>,</font></tt> <i>end0</i><tt><font size=+1>,</font></tt> <i>end1</i><tt><font size=+1>,</font></tt> <i>thick</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Poly</i> draws a general polygon; it is conceptually equivalent to
-        a series of calls to <i>line</i> joining adjacent points in the array
-        of <tt><font size=+1>Points</font></tt> <i>p</i>, which has <i>np</i> elements. The ends of the polygon are
-        specified as in <i>line</i>; interior lines are terminated with <tt><font size=+1>Enddisc</font></tt>
-        to make smooth joins. The source is aligned so <i>sp
-        </i>corresponds to <i>p</i><tt><font size=+1>[0]</font></tt>.<br>
-        
-    </table>
-    <tt><font size=+1>fillpoly(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>p</i><tt><font size=+1>,</font></tt> <i>np</i><tt><font size=+1>,</font></tt> <i>wind</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Fillpoly</i> is like <i>poly</i> but fills in the resulting polygon rather
-        than outlining it. The source is aligned so <i>sp</i> corresponds to
-        <i>p</i><tt><font size=+1>[0]</font></tt>. The winding rule parameter <i>wind</i> resolves ambiguities about
-        what to fill if the polygon is self-intersecting. If <i>wind</i> is <tt><font size=+1>~0</font></tt>,
-        a pixel is inside the polygon if the polygon&#8217;s winding number
-        about the point is non-zero. If <i>wind</i> is <tt><font size=+1>1</font></tt>, a pixel is inside if
-        the winding number is odd. Complementary values (0 or ~1) cause
-        outside pixels to be filled. The meaning of other values is undefined.
-        The polygon is closed with a line if necessary.<br>
-        
-    </table>
-    <tt><font size=+1>bezier(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>a</i><tt><font size=+1>,</font></tt> <i>b</i><tt><font size=+1>,</font></tt> <i>c</i><tt><font size=+1>,</font></tt> <i>d</i><tt><font size=+1>,</font></tt> <i>end0</i><tt><font size=+1>,</font></tt> <i>end1</i><tt><font size=+1>,</font></tt> <i>thick</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Bezier</i> draws the cubic Bezier curve defined by <tt><font size=+1>Points</font></tt> <i>a</i>, <i>b</i>, <i>c</i>,
-        and <i>d</i>. The end styles are determined by <i>end0</i> and <i>end1</i>; the thickness
-        of the curve is 1+2*<i>thick</i>. The source is aligned so <i>sp</i> in <i>src</i>
-        corresponds to <i>a</i> in <i>dst</i>.<br>
-        
-    </table>
-    <tt><font size=+1>bezspline(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>p</i><tt><font size=+1>,</font></tt> <i>end0</i><tt><font size=+1>,</font></tt> <i>end1</i><tt><font size=+1>,</font></tt> <i>thick</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Bezspline</i> takes the same arguments as <i>poly</i> but draws a quadratic
-        B-spline (despite its name) rather than a polygon. If the first
-        and last points in <i>p</i> are equal, the spline has periodic end conditions.<br>
-        
-    </table>
-    <tt><font size=+1>bezsplinepts(</font></tt><i>pt</i><tt><font size=+1>,</font></tt> <i>npt</i><tt><font size=+1>,</font></tt> <i>pp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Bezsplinepts</i> returns in <i>pp</i> a list of points making up the open
-        polygon that <i>bezspline</i> would draw. The caller is responsible for
-        freeing <i>*pp</i>.<br>
-        
-    </table>
-    <tt><font size=+1>fillbezier(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>a</i><tt><font size=+1>,</font></tt> <i>b</i><tt><font size=+1>,</font></tt> <i>c</i><tt><font size=+1>,</font></tt> <i>d</i><tt><font size=+1>,</font></tt> <i>wind</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Fillbezier</i> is to <i>bezier</i> as <i>fillpoly</i> is to <i>poly</i>.<br>
-        
-    </table>
-    <tt><font size=+1>fillbezspline(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>p</i><tt><font size=+1>,</font></tt> <i>wind</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Fillbezspline</i> is like <i>fillpoly</i> but fills the quadratic B-spline
-        rather than the polygon outlined by <i>p</i>. The spline is closed with
-        a line if necessary.<br>
-        
-    </table>
-    <tt><font size=+1>ellipse(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>c</i><tt><font size=+1>,</font></tt> <i>a</i><tt><font size=+1>,</font></tt> <i>b</i><tt><font size=+1>,</font></tt> <i>thick</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Ellipse</i> draws in <i>dst</i> an ellipse centered on <i>c</i> with horizontal
-        and vertical semiaxes <i>a</i> and <i>b</i>. The source is aligned so <i>sp</i> in
-        <i>src</i> corresponds to <i>c</i> in <i>dst</i>. The ellipse is drawn with thickness
-        1+2*<i>thick</i>.<br>
-        
-    </table>
-    <tt><font size=+1>fillellipse(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>c</i><tt><font size=+1>,</font></tt> <i>a</i><tt><font size=+1>,</font></tt> <i>b</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Fillellipse</i> is like <i>ellipse</i> but fills the ellipse rather than
-        outlining it.<br>
-        
-    </table>
-    <tt><font size=+1>arc(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>c</i><tt><font size=+1>,</font></tt> <i>a</i><tt><font size=+1>,</font></tt> <i>b</i><tt><font size=+1>,</font></tt> <i>thick</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>,</font></tt> <i>alpha</i><tt><font size=+1>,</font></tt> <i>phi</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Arc</i> is like <i>ellipse</i>, but draws only that portion of the ellipse
-        starting at angle <i>alpha</i> and extending through an angle of <i>phi</i>.
-        The angles are measured in degrees counterclockwise from the positive
-        <i>x</i> axis.<br>
-        
-    </table>
-    <tt><font size=+1>fillarc(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>c</i><tt><font size=+1>,</font></tt> <i>a</i><tt><font size=+1>,</font></tt> <i>b</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>,</font></tt> <i>alpha</i><tt><font size=+1>,</font></tt> <i>phi</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Fillarc</i> is like <i>arc</i>, but fills the sector with the source color.<br>
-        
-    </table>
-    <tt><font size=+1>icossin(</font></tt><i>deg</i><tt><font size=+1>,</font></tt> <i>cosp</i><tt><font size=+1>,</font></tt> <i>sinp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Icossin</i> stores in <tt><font size=+1>*</font></tt><i>cosp</i> and <tt><font size=+1>*</font></tt><i>sinp</i> scaled integers representing
-        the cosine and sine of the angle <i>deg</i>, measured in integer degrees.
-        The values are scaled so cos(0) is 1024.<br>
-        
-    </table>
-    <tt><font size=+1>icossin2(</font></tt><i>x</i><tt><font size=+1>,</font></tt> <i>y</i><tt><font size=+1>,</font></tt> <i>cosp</i><tt><font size=+1>,</font></tt> <i>sinp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Icossin2</i> is analogous to <i>icossin,</i> with the angle represented not
-        in degrees but implicitly by the point (<i>x</i>,<i>y</i>). It is to <i>icossin</i>
-        what <tt><font size=+1>atan2</font></tt> is to <tt><font size=+1>atan</font></tt> (see <a href="../man3/sin.html"><i>sin</i>(3)</a>).<br>
-        
-    </table>
-    <tt><font size=+1>border(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>r</i><tt><font size=+1>,</font></tt> <i>i</i><tt><font size=+1>,</font></tt> <i>color</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Border</i> draws an outline of rectangle <i>r</i> in the specified <i>color</i>.
-        The outline has width <i>i</i>; if positive, the border goes inside the
-        rectangle; negative, outside. The source is aligned so <i>sp</i> corresponds
-        to <i>r</i><tt><font size=+1>.min</font></tt><i>.<br>
-        </i>
-    </table>
-    <tt><font size=+1>string(</font></tt><i>dst</i><tt><font size=+1>,</font></tt> <i>p</i><tt><font size=+1>,</font></tt> <i>src</i><tt><font size=+1>,</font></tt> <i>sp</i><tt><font size=+1>,</font></tt> <i>font</i><tt><font size=+1>,</font></tt> <i>s</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>String</i> draws in <i>dst</i> characters specified by the string <i>s</i> and <i>font</i>;
-        it is equivalent to a series of calls to <i>gendraw</i> using source
-        <i>src</i> and masks determined by the character shapes. The text is
-        positioned with the left of the first character at <i>p</i><tt><font size=+1>.x</font></tt> and the
-        top of the line of text at <i>p</i><tt><font size=+1>.y</font></tt>. The source is positioned so <i>sp</i>
-        in
-        <i>src</i> corresponds to <i>p</i> in <i>dst</i>. <i>String</i> returns a <tt><font size=+1>Point</font></tt> that is the
-        position of the next character that would be drawn if the string
-        were longer.<br>
-        For characters with undefined or zero-width images in the font,
-        the character at font position 0 (NUL) is drawn.<br>
-        The other string routines are variants of this basic form, and
-        have names that encode their variant behavior. Routines whose
-        names contain <tt><font size=+1>rune</font></tt> accept a string of Runes rather than UTF-encoded
-        bytes. Routines ending in <tt><font size=+1>n</font></tt> accept an argument, <i>n</i>, that defines
-        the number of characters to draw rather than
-        accepting a NUL-terminated string. Routines containing <tt><font size=+1>bg</font></tt> draw
-        the background behind the characters in the specified color (<i>bg</i>)
-        and alignment (<i>bgp</i>); normally the text is drawn leaving the background
-        intact.<br>
-        The routine <i>_string</i> captures all this behavior into a single operator.
-        Whether it draws a UTF string or Rune string depends on whether
-        <i>s</i> or <i>r</i> is null (the string length is always determined by <i>len</i>).
-        If <i>bg</i> is non-null, it is used as a background color. The <i>clipr</i>
-        argument allows further management of clipping when
-        drawing the string; it is intersected with the usual clipping
-        rectangles to further limit the extent of the text.<br>
-        
-    </table>
-    <tt><font size=+1>drawsetdebug(</font></tt><i>on</i><tt><font size=+1>)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Turns on or off debugging output (usually to a serial line) according
-        to whether <i>on</i> is non-zero.<br>
-        
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, <a href="../man3/stringsize.html"><i>stringsize</i>(3)</a>, <a href="../man7/color.html"><i>color</i>(7)</a>, <a href="../man7/utf.html"><i>utf</i>(7)</a>, <a href="../man3/addpt.html"><i>addpt</i>(3)</a> 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    T. Porter, T. Duff. &#8220;Compositing Digital Images&#8221;, <i>Computer Graphics</i>
-    (Proc. SIGGRAPH), 18:3, pp. 253-259, 1984.<br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines call the graphics error function on fatal errors.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Anti-aliased characters can be drawn by defining a font with multiple
-    bits per pixel, but there are no anti-aliasing geometric primitives.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/dsa.html b/man/man3/dsa.html
deleted file mode 100644
index 765ddd7..0000000
--- a/man/man3/dsa.html
+++ /dev/null
@@ -1,172 +0,0 @@
-<head>
-<title>dsa(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>DSA(3)</b><td align=right><b>DSA(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    dsagen, dsasign, dsaverify, dsapuballoc, dsapubfree, dsaprivalloc,
-    dsaprivfree, dsasigalloc, dsasigfree, dsaprivtopub - digital signature
-    algorithm<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mp.h&gt;<br>
-    #include &lt;libsec.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>DSApriv* &nbsp;&nbsp;&nbsp;dsagen(DSApub *opub) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>DSAsig* &nbsp;&nbsp;&nbsp;&nbsp;dsasign(DSApriv *k, mpint *m) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dsaverify(DSApub *k, DSAsig *sig, mpint *m) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>DSApub* &nbsp;&nbsp;&nbsp;&nbsp;dsapuballoc(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dsapubfree(DSApub*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>DSApriv* &nbsp;&nbsp;&nbsp;dsaprivalloc(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dsaprivfree(DSApriv*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>DSAsig* &nbsp;&nbsp;&nbsp;&nbsp;dsasigalloc(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dsasigfree(DSAsig*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>DSApub* &nbsp;&nbsp;&nbsp;&nbsp;dsaprivtopub(DSApriv*)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    DSA is the NIST approved digital signature algorithm. The owner
-    of a key publishes the public part of the key:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>struct DSApub<br>
-        {<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*p; &nbsp;&nbsp;&nbsp;// modulus<br>
-             mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*q; &nbsp;&nbsp;&nbsp;// group order, q divides p&#8722;1<br>
-             mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*alpha; &nbsp;&nbsp;&nbsp;&nbsp;// group generator<br>
-             mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*key; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// alpha**secret mod p<br>
-            
-        </table>
-        };<br>
-        </font></tt>
-    </table>
-    This part can be used for verifying signatures (with <i>dsaverify</i>)
-    created by the owner. The owner signs (with <i>dsasign</i>) using his
-    private key:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>struct DSApriv<br>
-        {<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            DSApub &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pub;<br>
-             mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*secret; // (decryption key)<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    Keys are generated using <i>dsagen</i>. If <i>dsagen</i>&#8217;s argument <i>opub</i> is
-    <tt><font size=+1>nil</font></tt>, a key is created using a new <tt><font size=+1>p</font></tt> and <tt><font size=+1>q</font></tt> generated by <i>DSAprimes</i>
-    (see <a href="../man3/prime.html"><i>prime</i>(3)</a>). Otherwise, <tt><font size=+1>p</font></tt> and <tt><font size=+1>q</font></tt> are copied from the old key.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Dsaprivtopub</i> returns a newly allocated copy of the public key
-    corresponding to the private key. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The routines <i>dsapuballoc</i>, <i>dsapubfree</i>, <i>dsaprivalloc</i>, and <i>dsaprivfree</i>
-    are provided to manage key storage. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Dsasign</i> signs message <i>m</i> using a private key <i>k</i> yielding a<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>struct DSAsig<br>
-        {<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*r, *s;<br>
-            
-        </table>
-        };<br>
-        </font></tt>
-    </table>
-    <i>Dsaverify</i> returns 0 if the signature is valid and &ndash;1 if not. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The routines <i>dsasigalloc</i> and <i>dsasigfree</i> are provided to manage
-    signature storage.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libsec<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mp.html"><i>mp</i>(3)</a>, <a href="../man3/aes.html"><i>aes</i>(3)</a>, <a href="../man3/blowfish.html"><i>blowfish</i>(3)</a>, <a href="../man3/des.html"><i>des</i>(3)</a>, <a href="../man3/rc4.html"><i>rc4</i>(3)</a>, <a href="../man3/rsa.html"><i>rsa</i>(3)</a>, <a href="../man3/sechash.html"><i>sechash</i>(3)</a>,
-    <a href="../man3/prime.html"><i>prime</i>(3)</a>, <a href="../man3/rand.html"><i>rand</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/dup.html b/man/man3/dup.html
deleted file mode 100644
index c601e3b..0000000
--- a/man/man3/dup.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<head>
-<title>dup(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>DUP(3)</b><td align=right><b>DUP(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    dup &ndash; duplicate an open file descriptor<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int dup(int oldfd, int newfd)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Given a file descriptor, <i>oldfd</i>, referring to an open file, <i>dup</i>
-    returns a new file descriptor referring to the same file. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If <i>newfd</i> is &ndash;1 the system chooses the lowest available file descriptor.
-    Otherwise, <i>dup</i> will use <i>newfd</i> for the new file descriptor (closing
-    any old file associated with <i>newfd</i>).<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/dup.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Sets <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To avoid name conflicts with the underlying system, <i>dup</i> is a preprocessor
-    macro defined as <i>p9dup</i>; see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/elgamal.html b/man/man3/elgamal.html
deleted file mode 100644
index a651846..0000000
--- a/man/man3/elgamal.html
+++ /dev/null
@@ -1,174 +0,0 @@
-<head>
-<title>elgamal(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>ELGAMAL(3)</b><td align=right><b>ELGAMAL(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    eggen, egencrypt, egdecrypt, egsign, egverify, egpuballoc, egpubfree,
-    egprivalloc, egprivfree, egsigalloc, egsigfree, egprivtopub -
-    elgamal encryption<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mp.h&gt;<br>
-    #include &lt;libsec.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>EGpriv* &nbsp;&nbsp;&nbsp;&nbsp;eggen(int nlen, int nrep) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;egencrypt(EGpub *k, mpint *in, mpint *out) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;egdecrypt(EGpriv *k, mpint *in, mpint *out) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>EGsig* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;egsign(EGpriv *k, mpint *m) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;egverify(EGpub *k, EGsig *sig, mpint *m) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>EGpub* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;egpuballoc(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;egpubfree(EGpub*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>EGpriv* &nbsp;&nbsp;&nbsp;&nbsp;egprivalloc(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;egprivfree(EGpriv*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>EGsig* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;egsigalloc(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;egsigfree(EGsig*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>EGpub* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;egprivtopub(EGpriv*)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Elgamal is a public key encryption and signature algorithm. The
-    owner of a key publishes the public part of the key:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>struct EGpub<br>
-        {<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*p; &nbsp;&nbsp;&nbsp;// modulus<br>
-             mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*alpha; &nbsp;&nbsp;&nbsp;&nbsp;// generator<br>
-             mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*key; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (encryption key) alpha**secret mod p<br>
-            
-        </table>
-        };<br>
-        </font></tt>
-    </table>
-    This part can be used for encrypting data (with <i>egencrypt</i>) to
-    be sent to the owner. The owner decrypts (with <i>egdecrypt</i>) using
-    his private key:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>struct EGpriv<br>
-        {<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            EGpub &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pub;<br>
-             mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*secret; // (decryption key)<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    Keys are generated using <i>eggen</i>. <i>Eggen</i> takes both bit length of
-    the modulus and the number of repetitions of the Miller-Rabin
-    primality test to run. If the latter is 0, it does the default
-    number of rounds. <i>Egprivtopub</i> returns a newly allocated copy of
-    the public key corresponding to the private key. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The routines <i>egpuballoc</i>, <i>egpubfree</i>, <i>egprivalloc</i>, and <i>egprivfree</i>
-    are provided to manage key storage. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Egsign</i> signs message <i>m</i> using a private key <i>k</i> yielding a<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>struct EGsig<br>
-        {<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*r, *s;<br>
-            
-        </table>
-        };<br>
-        </font></tt>
-    </table>
-    <i>Egverify</i> returns 0 if the signature is valid and &ndash;1 if not. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The routines <i>egsigalloc</i> and <i>egsigfree</i> are provided to manage signature
-    storage.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libsec<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mp.html"><i>mp</i>(3)</a>, <a href="../man3/aes.html"><i>aes</i>(3)</a>, <a href="../man3/blowfish.html"><i>blowfish</i>(3)</a>, <a href="../man3/des.html"><i>des</i>(3)</a>, <a href="../man3/dsa.html"><i>dsa</i>(3)</a>, <a href="../man3/rc4.html"><i>rc4</i>(3)</a>, <a href="../man3/rsa.html"><i>rsa</i>(3)</a>, <a href="../man3/sechash.html"><i>sechash</i>(3)</a>,
-    <a href="../man3/prime.html"><i>prime</i>(3)</a>, <a href="../man3/rand.html"><i>rand</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/encode.html b/man/man3/encode.html
deleted file mode 100644
index c7a8132..0000000
--- a/man/man3/encode.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<head>
-<title>encode(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>ENCODE(3)</b><td align=right><b>ENCODE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    dec64, enc64, dec32, enc32, dec16, enc16, encodefmt &ndash; encoding
-    byte arrays as strings<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;dec64(uchar *out, int lim, char *in, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;enc64(char *out, int lim, uchar *in, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;dec32(uchar *out, int lim, char *in, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;enc32(char *out, int lim, uchar *in, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;dec16(uchar *out, int lim, char *in, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;enc16(char *out, int lim, uchar *in, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;encodefmt(Fmt*)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Enc16</i>, <i>enc32</i> and <i>enc64</i> create null terminated strings. They return
-    the size of the encoded string (without the null) or -1 if the
-    encoding fails. The encoding fails if <i>lim</i>, the length of the output
-    buffer, is too small. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Dec16</i>, <i>dec32</i> and <i>dec64</i> return the number of bytes decoded or -1
-    if the decoding fails. The decoding fails if the output buffer
-    is not large enough or, for base 32, if the input buffer length
-    is not a multiple of 8. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Encodefmt</i> can be used with <a href="../man3/fmtinstall.html"><i>fmtinstall</i>(3)</a> and <a href="../man3/print.html"><i>print</i>(3)</a> to print
-    encoded representations of byte arrays. The verbs are<br>
-    <tt><font size=+1>H</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base 16 (i.e. hexadecimal). The default encoding is in upper
-    case. The <tt><font size=+1>l</font></tt> flag forces lower case.<br>
-    <tt><font size=+1>&lt;</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base 32<br>
-    <tt><font size=+1>[</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base 64 (same as MIME) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The length of the array is specified as <i>f2</i>. For example, to display
-    a 15 byte array as hex:<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>char x[15];<br>
-         fmtinstall('H', encodefmt);<br>
-         print(&quot;%.*H\n&quot;, sizeof x, x);<br>
-        </font></tt>
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/u32.c<br>
-    /usr/local/plan9/src/lib9/u64.c<br>
-    </font></tt>
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/errstr.html b/man/man3/errstr.html
deleted file mode 100644
index 547efc8..0000000
--- a/man/man3/errstr.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<head>
-<title>errstr(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>ERRSTR(3)</b><td align=right><b>ERRSTR(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    errstr, rerrstr, werrstr &ndash; description of last system call error<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int errstr(char *err, uint nerr) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void rerrstr(char *err, uint nerr) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void werrstr(char *fmt, ...)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    When a system call fails it returns &ndash;1 and records a null terminated
-    string describing the error in a per-process buffer. <i>Errstr</i> swaps
-    the contents of that buffer with the contents of the array <i>err</i>.
-    <i>Errstr</i> will write at most <i>nerr</i> bytes into <i>err</i>; if the per-process
-    error string does not fit, it is silently truncated at a UTF
-    character boundary. The returned string is NUL-terminated. Usually
-    <i>errstr</i> will be called with an empty string, but the exchange property
-    provides a mechanism for libraries to set the return value for
-    the next call to <i>errstr</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The per-process buffer is <tt><font size=+1>ERRMAX</font></tt> bytes long. Any error string
-    provided by the user will be truncated at <tt><font size=+1>ERRMAX&#8722;1</font></tt> bytes. <tt><font size=+1>ERRMAX</font></tt>
-    is defined in <tt><font size=+1>&lt;libc.h&gt;</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If no system call has generated an error since the last call to
-    <i>errstr</i> with an empty string, the result is an empty string. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The verb <tt><font size=+1>r</font></tt> in <a href="../man3/print.html"><i>print</i>(3)</a> calls <i>errstr</i> and outputs the error string.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Rerrstr</i> reads the error string but does not modify the per-process
-    buffer, so a subsequent <i>errstr</i> will recover the same string. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Werrstr</i> takes a <i>print</i> style format as its argument and uses it
-    to format a string to pass to <i>errstr</i>. The string returned from
-    <i>errstr</i> is discarded. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The error string is maintained in parallel with the Unix error
-    number <i>errno</i>. Changing <i>errno</i> will reset the error string, and
-    changing the error string via <i>errstr</i> or <i>werrstr</i> will reset <i>errno</i>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/errstr.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Errstr</i> always returns 0.<br>
-    
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/intro.html"><i>intro</i>(3)</a>, <a href="../man3/perror.html"><i>perror</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The implementation sets <i>errno</i> to the (somewhat arbitrary) constant
-    0x19283745 when the error string is valid. When <i>errno</i> is set to
-    other values, the error string is synthesized using <a href="../man3/strerror.html"><i>strerror</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/event.html b/man/man3/event.html
deleted file mode 100644
index 87cff2f..0000000
--- a/man/man3/event.html
+++ /dev/null
@@ -1,390 +0,0 @@
-<head>
-<title>event(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>EVENT(3)</b><td align=right><b>EVENT(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    event, einit, estart, estartfn, etimer, eread, emouse, ekbd, ecanread,
-    ecanmouse, ecankbd, ereadmouse, eatomouse, eresized, egetrect,
-    edrawgetrect, emenuhit, emoveto, esetcursor, Event, Mouse, Menu
-    &ndash; graphics events<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &nbsp;&nbsp;&nbsp;&lt;u.h&gt;<br>
-    #include &nbsp;&nbsp;&nbsp;&lt;libc.h&gt;<br>
-    #include &nbsp;&nbsp;&nbsp;&lt;draw.h&gt;<br>
-    #include &nbsp;&nbsp;&nbsp;&lt;event.h&gt;<br>
-    #include &nbsp;&nbsp;&nbsp;&lt;cursor.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;einit(ulong keys)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event(Event *e)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Mouse &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emouse(void)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ekbd(void)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecanmouse(void)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecankbd(void)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ereadmouse(Mouse *m)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eatomouse(Mouse *m, char *buf, int n)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;estart(ulong key, int fd, int n)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;estartfn(int id, ulong key, int fd, int n,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int (*fn)(Event*, uchar*, int))<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;etimer(ulong key, int n)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eread(ulong keys, Event *e)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecanread(ulong keys)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eresized(int new)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rectangle egetrect(int but, Mouse *m)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edrawgetrect(Rectangle r, int up)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emenuhit(int but, Mouse *m, Menu *menu)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emoveto(Point p)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;esetcursor(Cursor *c)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>extern Mouse &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*mouse<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>enum{<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Emouse = 1,<br>
-            Ekeyboard = 2,<br>
-            
-        </table>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines provide an interface to multiple sources of input
-    for unthreaded programs. Threaded programs (see <a href="../man3/thread.html"><i>thread</i>(3)</a>) should
-    instead use the threaded mouse and keyboard interface described
-    in <a href="../man3/mouse.html"><i>mouse</i>(3)</a> and <a href="../man3/keyboard.html"><i>keyboard</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Einit</i> must be called first. If the argument to <i>einit</i> has the <tt><font size=+1>Emouse</font></tt>
-    and <tt><font size=+1>Ekeyboard</font></tt> bits set, the mouse and keyboard events will be
-    enabled; in this case, <i>initdraw</i> (see <a href="../man3/graphics.html"><i>graphics</i>(3)</a>) must have already
-    been called. The user must provide a function called <i>eresized</i>
-    to be called whenever the window in which the process
-    is running has been resized; the argument <i>new</i> is a flag specifying
-    whether the program must call <i>getwindow</i> (see <a href="../man3/graphics.html"><i>graphics</i>(3)</a>) to re-establish
-    a connection to its window. After resizing (and perhaps calling
-    <i>getwindow</i>), the global variable <tt><font size=+1>screen</font></tt> will be updated to point
-    to the new window&#8217;s <tt><font size=+1>Image</font></tt> structure. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    As characters are typed on the keyboard, they are read by the
-    event mechanism and put in a queue. <i>Ekbd</i> returns the next rune
-    from the queue, blocking until the queue is non-empty. The characters
-    are read in raw mode, so they are available as soon as a complete
-    rune is typed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    When the mouse moves or a mouse button is pressed or released,
-    a new mouse event is queued by the event mechanism. <i>Emouse</i> returns
-    the next mouse event from the queue, blocking until the queue
-    is non-empty. <i>Emouse</i> returns a <tt><font size=+1>Mouse</font></tt> structure:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>struct Mouse<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int &nbsp;&nbsp;&nbsp;&nbsp;buttons;<br>
-            Point xy;<br>
-            ulong msec;<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    <tt><font size=+1>Buttons&amp;1</font></tt> is set when the left mouse button is pressed, <tt><font size=+1>buttons&amp;2</font></tt>
-    when the middle button is pressed, and <tt><font size=+1>buttons&amp;4</font></tt> when the right
-    button is pressed. The current mouse position is always returned
-    in <tt><font size=+1>xy</font></tt>. <tt><font size=+1>Msec</font></tt> is a time stamp in units of milliseconds. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Ecankbd</i> and <i>ecanmouse</i> return non-zero when there are keyboard
-    or mouse events available to be read. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Ereadmouse</i> reads the next mouse event from the file descriptor
-    connected to the mouse, converts the textual data into a <tt><font size=+1>Mouse</font></tt>
-    structure by calling <i>eatomouse</i> with the buffer and count from
-    the read call, and returns the number of bytes read, or &ndash;1 for
-    an error. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Estart</i> can be used to register additional file descriptors to
-    scan for input. It takes as arguments the file descriptor to register,
-    the maximum length of an event message on that descriptor, and
-    a key to be used in accessing the event. The key must be a power
-    of 2 and must not conflict with any previous keys. If a zero
-    key is given, a key will be allocated and returned. <i>Estartfn</i> is
-    similar to <i>estart</i>, but processes the data received by calling
-    <i>fn</i> before returning the event to the user. The function <i>fn</i> is
-    called with the <tt><font size=+1>id</font></tt> of the event; it should return <tt><font size=+1>id</font></tt> if the event
-    is to be passed to the user, <tt><font size=+1>0</font></tt> if it is to be ignored. The variable
-    <tt><font size=+1>Event.v
-    </font></tt>can be used by <i>fn</i> to attach an arbitrary data item to the returned
-    <tt><font size=+1>Event</font></tt> structure. <tt><font size=+1>&nbsp;&nbsp;&nbsp;Ekeyboard</font></tt> and <tt><font size=+1>Emouse</font></tt> are the keyboard and mouse
-    event keys. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Etimer</i> starts a repeating timer with a period of <i>n</i> milliseconds;
-    it returns the timer event key, or zero if it fails. Only one
-    timer can be started. Extra timer events are not queued and the
-    timer channel has no associated data. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Eread</i> waits for the next event specified by the mask <i>keys</i> of event
-    keys submitted to <i>estart</i>. It fills in the appropriate field of
-    the argument <tt><font size=+1>Event</font></tt> structure, which looks like:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>struct Event<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int &nbsp;&nbsp;&nbsp;&nbsp;kbdc;<br>
-            Mouse mouse;<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;n;<br>
-            void &nbsp;&nbsp;&nbsp;*v;<br>
-            uchar data[EMAXMSG];<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    <tt><font size=+1>Data</font></tt> is an array which is large enough to hold a 9P message. <i>Eread</i>
-    returns the key for the event which was chosen. For example, if
-    a mouse event was read, <tt><font size=+1>Emouse</font></tt> will be returned. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Event</i> waits for the next event of any kind. The return is the
-    same as for <i>eread</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    As described in <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, the graphics functions are buffered.
-    <i>Event</i>, <i>eread</i>, <i>emouse</i>, and <i>ekbd</i> all cause a buffer flush unless
-    there is an event of the appropriate type already queued. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Ecanread</i> checks whether a call to <tt><font size=+1>eread(keys)</font></tt> would block, returning
-    0 if it would, 1 if it would not. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Getrect</i> prompts the user to sweep a rectangle. It should be called
-    with <i>m</i> holding the mouse event that triggered the <i>egetrect</i> (or,
-    if none, a <tt><font size=+1>Mouse</font></tt> with <tt><font size=+1>buttons</font></tt> set to 7). It changes to the sweep
-    cursor, waits for the buttons all to be released, and then waits
-    for button number <i>but</i> to be pressed, marking the initial
-    corner. If another button is pressed instead, <i>egetrect</i> returns
-    a rectangle with zero for both corners, after waiting for all
-    the buttons to be released. Otherwise, <i>egetrect</i> continually draws
-    the swept rectangle until the button is released again, and returns
-    the swept rectangle. The mouse structure pointed to by <i>m</i> will
-    contain the final mouse event. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Egetrect</i> uses successive calls to <i>edrawgetrect</i> to maintain the
-    red rectangle showing the sweep-in-progress. The rectangle to
-    be drawn is specified by <i>rc</i> and the <i>up</i> parameter says whether
-    to draw (1) or erase (0) the rectangle. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Emenuhit</i> displays a menu and returns a selected menu item number.
-    It should be called with <i>m</i> holding the mouse event that triggered
-    the <i>emenuhit</i>; it will call <i>emouse</i> to update it. A <tt><font size=+1>Menu</font></tt> is a structure:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>struct Menu<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char &nbsp;&nbsp;&nbsp;**item;<br>
-            char &nbsp;&nbsp;&nbsp;*(*gen)(int);<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;lasthit;<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    If <tt><font size=+1>item</font></tt> is nonzero, it should be a null-terminated array of the
-    character strings to be displayed as menu items. Otherwise, <tt><font size=+1>gen</font></tt>
-    should be a function that, given an item number, returns the character
-    string for that item, or zero if the number is past the end of
-    the list. Items are numbered starting at zero. <i>Menuhit
-    </i>waits until <i>but</i> is released, and then returns the number of the
-    selection, or &ndash;1 for no selection. The <i>m</i> argument is filled in
-    with the final mouse event. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Emoveto</i> moves the mouse cursor to the position <tt><font size=+1>p</font></tt> on the screen.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Esetcursor</i> changes the cursor image to that described by the <tt><font size=+1>Cursor</font></tt>
-    <i>c</i> (see <a href="../man3/mouse.html"><i>mouse</i>(3)</a>). If <tt><font size=+1>c</font></tt> is nil, it restores the image to the default
-    arrow.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/rio.html"><i>rio</i>(1)</a>, <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, <a href="../man3/plumb.html"><i>plumb</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Etimer</i> and <i>estart</i> are unimplemented.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/exec.html b/man/man3/exec.html
deleted file mode 100644
index e539735..0000000
--- a/man/man3/exec.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<head>
-<title>exec(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>EXEC(3)</b><td align=right><b>EXEC(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    exec, execl &ndash; execute a file<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int exec(char *name, char* argv[])<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int execl(char *name, ...)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Exec</i> and <i>execl</i> overlay the calling process with the named file,
-    then transfer to the entry point of the image of the file. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Name</i> points to the name of the file to be executed; it must not
-    be a directory, and the permissions must allow the current user
-    to execute it (see <a href="../man3/stat.html"><i>stat</i>(3)</a>). It should also be a valid binary
-    image, as defined by the local operating system, or a shell script
-    (see <a href="../man1/rc.html"><i>rc</i>(1)</a>). The first line of a shell script must begin with
-    <tt><font size=+1>#!</font></tt> followed
-    by the name of the program to interpret the file and any initial
-    arguments to that program, for example<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>#!/bin/rc<br>
-        ls | mc<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    When a C program is executed, it is called as follows:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>void main(int argc, char *argv[])<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    <i>Argv</i> is a copy of the array of argument pointers passed to <i>exec</i>;
-    that array must end in a null pointer, and <i>argc</i> is the number
-    of elements before the null pointer. By convention, the first
-    argument should be the name of the program to be executed. <i>Execl</i>
-    is like <i>exec</i> except that <i>argv</i> will be an array of the parameters
-    that follow <i>name</i> in the call. The last argument to <i>execl</i> must
-    be a null pointer. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    For a file beginning <tt><font size=+1>#!</font></tt>, the arguments passed to the program (<tt><font size=+1>/bin/rc</font></tt>
-    in the example above) will be the name of the file being executed,
-    any arguments on the <tt><font size=+1>#!</font></tt> line, the name of the file again, and
-    finally the second and subsequent arguments given to the original
-    <i>exec</i> call. The result honors the two conventions
-    of a program accepting as argument a file to be interpreted and
-    <tt><font size=+1>argv[0]</font></tt> naming the file being executed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Most attributes of the calling process are carried into the result;
-    in particular, files remain open across <i>exec</i> (except those opened
-    with <tt><font size=+1>OCEXEC</font></tt> OR&#8217;d into the open mode; see <a href="../man3/open.html"><i>open</i>(3)</a>); and the working
-    directory and environment (see <a href="../man3/getenv.html"><i>getenv</i>(3)</a>) remain the same. However,
-    a newly <i>exec&#8217;ed</i> process has no notification
-    handlers (see <a href="../man3/notify.html"><i>notify</i>(3)</a>).<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/exec.c<br>
-    /usr/local/plan9/src/lib9/execl.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/prof.html"><i>prof</i>(1)</a>, <a href="../man3/intro.html"><i>intro</i>(3)</a>, <a href="../man3/stat.html"><i>stat</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    If these functions fail, they return and set <i>errstr</i>. There can
-    be no return from a successful <i>exec</i> or <i>execl</i>; the calling image
-    is lost.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    On Unix, unlike on Plan 9, <i>exec</i> and <i>execl</i> use the user&#8217;s current
-    path to locate <i>prog</i>. This is a clumsy way to deal with Unix&#8217;s
-    lack of a union directory for <tt><font size=+1>/bin</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    To avoid name conflicts with the underlying system, <i>exec</i> and <i>execl</i>
-    are preprocessor macros defined as <i>p9exec</i> and <i>p9execl</i>; see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/exits.html b/man/man3/exits.html
deleted file mode 100644
index cc94a46..0000000
--- a/man/man3/exits.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<head>
-<title>exits(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>EXITS(3)</b><td align=right><b>EXITS(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    exits, _exits, atexit, atexitdont, terminate &ndash; terminate process,
-    process cleanup<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void _exits(char *msg)<br>
-    void exits(char *msg)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;atexit(void(*)(void))<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void atexitdont(void(*)(void))<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Exits</i> is the conventional way to terminate a process. <i>_Exits</i> also
-    terminates a process but does not call the registered <i>atexit</i> handlers
-    (<i>q.v.</i>). They can never return. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Msg</i> conventionally includes a brief (maximum length <tt><font size=+1>ERRLEN</font></tt>) explanation
-    of the reason for exiting, or a null pointer or empty string to
-    indicate normal termination. The string is passed to the parent
-    process, prefixed by the name and process id of the exiting process,
-    when the parent does a <a href="../man3/wait.html"><i>wait</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Before calling <i>_exits</i> with <i>msg</i> as an argument, <i>exits</i> calls in
-    reverse order all the functions recorded by <i>atexit</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Atexit</i> records <i>fn</i> as a function to be called by <i>exits</i>. It returns
-    zero if it failed, nonzero otherwise. A typical use is to register
-    a cleanup routine for an I/O package. To simplify programs that
-    fork or share memory, <i>exits</i> only calls those <i>atexit</i>-registered
-    functions that were registered by the same process as that calling
-    <i>exits</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Calling <i>atexit</i> twice (or more) with the same function argument
-    causes <i>exits</i> to invoke the function twice (or more). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    There is a limit to the number of exit functions that will be
-    recorded; <i>atexit</i> returns 0 if that limit has been reached. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Atexitdont</i> cancels a previous registration of an exit function.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/atexit.c<br>
-    /usr/local/plan9/src/lib9/_exits.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man2/fork.html"><i>fork</i>(2)</a>, <a href="../man3/wait.html"><i>wait</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Because of limitations of Unix, the exit status of a process can
-    only be an 8-bit integer. Exit status 0 is used for empty exit
-    messages, and 1 for non-empty messages. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Exit codes 97 through 99 are used by the thread library to signal
-    internal synchronization errors between the main program and a
-    proxy process that implements backgrounding. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    To avoid name conflicts with the underlying system, <i>atexit</i> and
-    <i>atexitdont</i> are preprocessor macros defined as <i>p9atexit</i> and <i>p9atexitdont</i>;
-    see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/fcall.html b/man/man3/fcall.html
deleted file mode 100644
index 926b47d..0000000
--- a/man/man3/fcall.html
+++ /dev/null
@@ -1,274 +0,0 @@
-<head>
-<title>fcall(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>FCALL(3)</b><td align=right><b>FCALL(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Fcall, convS2M, convD2M, convM2S, convM2D, fcallfmt, dirfmt, dirmodefmt,
-    read9pmsg, statcheck, sizeS2M, sizeD2M &ndash; interface to Plan 9 File
-    protocol<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;fcall.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uint convS2M(Fcall *f, uchar *ap, uint nap) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uint convD2M(Dir *d, uchar *ap, uint nap) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uint convM2S(uchar *ap, uint nap, Fcall *f) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uint convM2D(uchar *ap, uint nap, Dir *d, char *strs) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int dirfmt(Fmt*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int fcallfmt(Fmt*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int dirmodefmt(Fmt*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int read9pmsg(int fd, uchar *buf, uint nbuf) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int statcheck(uchar *buf, uint nbuf) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uint sizeS2M(Fcall *f) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uint sizeD2M(Dir *d)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines convert messages in the machine-independent format
-    of the Plan 9 file protocol, 9P, to and from a more convenient
-    form, an <tt><font size=+1>Fcall</font></tt> structure: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>#define MAXWELEM 16<br>
-    typedef<br>
-    struct Fcall<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        uchar type;<br>
-        u32int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fid;<br>
-        ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tag;<br>
-        union {<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            struct {<br>
-              u32int msize; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Tversion, Rversion */<br>
-              char &nbsp;&nbsp;&nbsp;&nbsp;*version; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Tversion, Rversion */<br>
-             };<br>
-             struct {<br>
-              ushort oldtag; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Tflush */<br>
-             };<br>
-             struct {<br>
-              char &nbsp;&nbsp;&nbsp;&nbsp;*ename; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Rerror */<br>
-             };<br>
-             struct {<br>
-              Qid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Rattach, Ropen, Rcreate */<br>
-              u32int iounit; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Ropen, Rcreate */<br>
-             };<br>
-             struct {<br>
-              Qid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aqid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Rauth */<br>
-             };<br>
-             struct {<br>
-              u32int afid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Tauth, Tattach */<br>
-              char &nbsp;&nbsp;&nbsp;&nbsp;*uname; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Tauth, Tattach */<br>
-              char &nbsp;&nbsp;&nbsp;&nbsp;*aname; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Tauth, Tattach */<br>
-             };<br>
-             struct {<br>
-              u32int perm; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Tcreate */ <br>
-              char &nbsp;&nbsp;&nbsp;&nbsp;*name; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Tcreate */<br>
-              uchar &nbsp;&nbsp;&nbsp;mode; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Tcreate, Topen */<br>
-             };<br>
-             struct {<br>
-              u32int newfid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Twalk */<br>
-              ushort nwname; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Twalk */<br>
-              char &nbsp;&nbsp;&nbsp;&nbsp;*wname[MAXWELEM]; &nbsp;&nbsp;&nbsp;/* Twalk */<br>
-             };<br>
-             struct {<br>
-              ushort nwqid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Rwalk */<br>
-              Qid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wqid[MAXWELEM]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Rwalk */<br>
-             };<br>
-             struct {<br>
-              vlong &nbsp;&nbsp;&nbsp;offset; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Tread, Twrite */<br>
-              u32int count; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Tread, Twrite, Rread */<br>
-              char &nbsp;&nbsp;&nbsp;&nbsp;*data; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Twrite, Rread */<br>
-             };<br>
-             struct {<br>
-              ushort nstat; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Twstat, Rstat */<br>
-              uchar &nbsp;&nbsp;&nbsp;*stat; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Twstat, Rstat */<br>
-             };<br>
-            
-        </table>
-        };<br>
-        
-    </table>
-    } Fcall;<br>
-    /* these are implemented as macros */<br>
-    uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GBIT8(uchar*)<br>
-    ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GBIT16(uchar*)<br>
-    ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GBIT32(uchar*)<br>
-    vlong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GBIT64(uchar*)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PBIT8(uchar*, uchar)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PBIT16(uchar*, ushort)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PBIT32(uchar*, ulong)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PBIT64(uchar*, vlong)<br>
-    #define &nbsp;&nbsp;&nbsp;&nbsp;BIT8SZ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>
-    #define &nbsp;&nbsp;&nbsp;&nbsp;BIT16SZ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<br>
-    #define &nbsp;&nbsp;&nbsp;&nbsp;BIT32SZ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4<br>
-    #define &nbsp;&nbsp;&nbsp;&nbsp;BIT64SZ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    This structure is defined in <tt><font size=+1>&lt;fcall.h&gt;</font></tt>. See section 5 for a full
-    description of 9P messages and their encoding. For all message
-    types, the <tt><font size=+1>type</font></tt> field of an <tt><font size=+1>Fcall</font></tt> holds one of <tt><font size=+1>Tversion</font></tt>, <tt><font size=+1>Rversion</font></tt>,
-    <tt><font size=+1>Tattach</font></tt>, <tt><font size=+1>Rattach</font></tt>, etc. (defined in an enumerated type in <tt><font size=+1>&lt;fcall.h&gt;</font></tt>).
-    <tt><font size=+1>Fid</font></tt> is used by most messages, and
-    <tt><font size=+1>tag</font></tt> is used by all messages. The other fields are used selectively
-    by the message types given in comments. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>ConvM2S</i> takes a 9P message at <i>ap</i> of length <i>nap</i>, and uses it to
-    fill in <tt><font size=+1>Fcall</font></tt> structure <i>f</i>. If the passed message including any
-    data for <tt><font size=+1>Twrite</font></tt> and <tt><font size=+1>Rread</font></tt> messages is formatted properly, the
-    return value is the number of bytes the message occupied in the
-    buffer <i>ap</i>, which will always be less than or equal to <i>nap</i>;
-    otherwise it is 0. For <tt><font size=+1>Twrite</font></tt> and <tt><font size=+1>Tread</font></tt> messages, <tt><font size=+1>data</font></tt> is set
-    to a pointer into the argument message, not a copy. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>ConvS2M</i> does the reverse conversion, turning <i>f</i> into a message
-    starting at <i>ap</i>. The length of the resulting message is returned.
-    For <tt><font size=+1>Twrite</font></tt> and <tt><font size=+1>Rread</font></tt> messages, <tt><font size=+1>count</font></tt> bytes starting at <tt><font size=+1>data</font></tt> are
-    copied into the message. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The constant <tt><font size=+1>IOHDRSZ</font></tt> is a suitable amount of buffer to reserve
-    for storing the 9P header; the data portion of a <tt><font size=+1>Twrite</font></tt> or <tt><font size=+1>Rread</font></tt>
-    will be no more than the buffer size negotiated in the <tt><font size=+1>Tversion/Rversion</font></tt>
-    exchange, minus <tt><font size=+1>IOHDRSZ</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The routine <i>sizeS2M</i> returns the number of bytes required to store
-    the machine-independent representation of the <tt><font size=+1>Fcall</font></tt> structure
-    <i>f</i>, including its initial 32-bit size field. In other words, it
-    reports the number of bytes produced by a successful call to <i>convS2M</i>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Another structure is <tt><font size=+1>Dir</font></tt>, used by the routines described in <a href="../man3/stat.html"><i>stat</i>(3)</a>.
-    <i>ConvM2D</i> converts the machine-independent form starting at <i>ap</i> into
-    <i>d</i> and returns the length of the machine-independent encoding.
-    The strings in the returned <tt><font size=+1>Dir</font></tt> structure are stored at successive
-    locations starting at <tt><font size=+1>strs</font></tt>. Usually <tt><font size=+1>strs</font></tt> will
-    point to storage immediately after the <tt><font size=+1>Dir</font></tt> itself. It can also
-    be a <tt><font size=+1>nil</font></tt> pointer, in which case the string pointers in the returned
-    <tt><font size=+1>Dir</font></tt> are all <tt><font size=+1>nil</font></tt>; however, the return value still includes their
-    length. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>ConvD2M</i> does the reverse translation, also returning the length
-    of the encoding. If the buffer is too short, the return value
-    will be <tt><font size=+1>BIT16SZ</font></tt> and the correct size will be returned in the first
-    <tt><font size=+1>BIT16SZ</font></tt> bytes. (If the buffer is less that <tt><font size=+1>BIT16SZ</font></tt>, the return
-    value is zero; therefore a correct test for complete packing of
-    the
-    message is that the return value is greater than <tt><font size=+1>BIT16SZ</font></tt>). The
-    macro <tt><font size=+1>GBIT16</font></tt> can be used to extract the correct value. The related
-    macros with different sizes retrieve the corresponding-sized quantities.
-    <tt><font size=+1>PBIT16</font></tt> and its brethren place values in messages. With the exception
-    of handling short buffers in <i>convD2M</i>,
-    these macros are not usually needed except by internal routines.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Analogous to <i>sizeS2M</i>, <i>sizeD2M</i> returns the number of bytes required
-    to store the machine-independent representation of the <tt><font size=+1>Dir</font></tt> structure
-    <i>d</i>, including its initial 16-bit size field. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The routine <tt><font size=+1>statcheck</font></tt> checks whether the <i>nbuf</i> bytes of <i>buf</i> contain
-    a validly formatted machine-independent <tt><font size=+1>Dir</font></tt> entry suitable as
-    an argument, for example, for the <tt><font size=+1>wstat</font></tt> (see <a href="../man3/stat.html"><i>stat</i>(3)</a>) system call.
-    It checks that the sizes of all the elements of the the entry
-    sum to exactly <i>nbuf</i>, which is a simple but effective test
-    of validity. <i>Nbuf</i> and <i>buf</i> should include the second two-byte (16-bit)
-    length field that precedes the entry when formatted in a 9P message
-    (see <i>stat</i>(9p)); in other words, <i>nbuf</i> is 2 plus the sum of the
-    sizes of the entry itself. <i>Statcheck</i> also verifies that the length
-    field has the correct value (that is, <i>nbuf</i><tt><font size=+1>&#8722;2</font></tt>). It returns <tt><font size=+1>0
-    </font></tt>for a valid entry and <tt><font size=+1>&#8722;1</font></tt> for an incorrectly formatted entry. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Dirfmt</i>, <i>fcallfmt</i>, and <i>dirmodefmt</i> are formatting routines, suitable
-    for <a href="../man3/fmtinstall.html"><i>fmtinstall</i>(3)</a>. They convert <tt><font size=+1>Dir*</font></tt>, <tt><font size=+1>Fcall*</font></tt>, and <tt><font size=+1>long</font></tt> values
-    into string representations of the directory buffer, <tt><font size=+1>Fcall</font></tt> buffer,
-    or file mode value. <i>Fcallfmt</i> assumes that <i>dirfmt</i> has been installed
-    with format letter <tt><font size=+1>D</font></tt> and <i>dirmodefmt</i> with format
-    letter <tt><font size=+1>M</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Read9pmsg</i> calls <a href="../man3/read.html"><i>read</i>(3)</a> multiple times, if necessary, to read
-    an entire 9P message into <tt><font size=+1>buf</font></tt>. The return value is 0 for end of
-    file, or -1 for error; it does not return partial messages.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/intro.html"><i>intro</i>(3)</a>, <a href="../man3/9p.html"><i>9p</i>(3)</a>, <a href="../man3/stat.html"><i>stat</i>(3)</a>, <i>intro</i>(9p)<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/flate.html b/man/man3/flate.html
deleted file mode 100644
index 4159103..0000000
--- a/man/man3/flate.html
+++ /dev/null
@@ -1,333 +0,0 @@
-<head>
-<title>flate(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>FLATE(3)</b><td align=right><b>FLATE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    deflateinit, deflate, deflatezlib, deflateblock, deflatezlibblock,
-    inflateinit, inflate, inflatezlib, inflateblock, inflatezlibblock,
-    flateerr, mkcrctab, blockcrc, adler32 &ndash; deflate compression<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;flate.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deflateinit(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deflate(void *wr, int (*w)(void*,void*,int),<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            void *rr, int (*r)(void*,void*,int),<br>
-             int level, int debug) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deflatezlib(void *wr, int (*w)(void*,void*,int),<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            void *rr, int (*r)(void*,void*,int),<br>
-             int level, int debug) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deflateblock(uchar *dst, int dsize,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            uchar *src, int ssize,<br>
-             int level, int debug) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deflatezlibblock(uchar *dst, int dsize,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            uchar *src, int ssize,<br>
-             int level, int debug) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inflateinit(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inflate(void *wr, int (*w)(void*, void*, int),<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            void *getr, int (*get)(void*)) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inflatezlib(void *wr, int (*w)(void*, void*, int),<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            void *getr, int (*get)(void*)) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inflateblock(uchar *dst, int dsize,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            uchar *src, int ssize) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inflatezlibblock(uchar *dst, int dsize,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            uchar *src, int ssize) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>char &nbsp;&nbsp;&nbsp;&nbsp;*flateerr(int error) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;*mkcrctab(ulong poly) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;blockcrc(ulong *tab, ulong crc, void *buf, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;adler32(ulong adler, void *buf, int n)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines compress and decompress data using the deflate
-    compression algorithm, which is used for most gzip, zip, and zlib
-    files. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Deflate</i> compresses input data retrieved by calls to <i>r</i> with arguments
-    <i>rr</i>, an input buffer, and a count of bytes to read. <i>R</i> should return
-    the number of bytes read; end of input is signaled by returning
-    zero, an input error by returning a negative number. The compressed
-    output is written to <i>w</i> with arguments <i>wr</i>, the
-    output data, and the number of bytes to write. <i>W</i> should return
-    the number of bytes written; writing fewer than the requested
-    number of bytes is an error. <i>Level</i> indicates the amount of computation
-    deflate should do while compressing the data. Higher <i>levels</i> usually
-    take more time and produce smaller outputs. Valid
-    values are 1 to 9, inclusive; 6 is a good compromise. If <i>debug</i>
-    is non-zero, cryptic debugging information is produced on standard
-    error. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Inflate</i> reverses the process, converting compressed data into
-    uncompressed output. Input is retrieved one byte at a time by
-    calling <i>get</i> with the argument <i>getr</i>. End of input of signaled by
-    returning a negative value. The uncompressed output is written
-    to <i>w</i>, which has the same interface as for <i>deflate</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Deflateblock</i> and <i>inflateblock</i> operate on blocks of memory but
-    are otherwise similar to <i>deflate</i> and <i>inflate</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The zlib functions are similar, but operate on files with a zlib
-    header and trailer. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Deflateinit</i> or <i>inflateinit</i> must be called once before any call
-    to the corresponding routines. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If the above routines fail, they return a negative number indicating
-    the problem. The possible values are <i>FlateNoMem</i>, <i>FlateInputFail</i>,
-    <i>FlateOutputFail</i>, <i>FlateCorrupted</i>, and <i>FlateInternal</i>. <i>Flateerr</i> converts
-    the number into a printable message. <i>FlateOk</i> is defined to be
-    zero, the successful return value for <i>deflateinit</i>,
-    <i>deflate</i>, <i>deflatezlib</i>, <i>inflateinit</i>, <i>inflate</i>, and <i>inflatezlib</i>. The
-    block functions return the number of bytes produced when they
-    succeed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Mkcrctab</i> allocates (using <a href="../man3/malloc.html"><i>malloc</i>(3)</a>), initializes, and returns
-    a table for rapid computation of 32 bit CRC values using the polynomial
-    <i>poly</i>. <i>Blockcrc</i> uses <i>tab</i>, a table returned by <i>mkcrctab</i>, to update
-    <i>crc</i> for the <i>n</i> bytes of data in <i>buf</i>, and returns the new value.
-    <i>Crc</i> should initially be zero. <i>Blockcrc</i> pre-conditions and
-    post-conditions <i>crc</i> by ones complementation. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Adler32</i> updates the Adler 32-bit checksum of the <i>n</i> butes of data
-    in <i>buf.</i> The initial value of <i>adler</i> (that is, its value after seeing
-    zero bytes) should be 1.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libflate<br>
-    </font></tt>
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/fmtinstall.html b/man/man3/fmtinstall.html
deleted file mode 100644
index 848c133..0000000
--- a/man/man3/fmtinstall.html
+++ /dev/null
@@ -1,339 +0,0 @@
-<head>
-<title>fmtinstall(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>FMTINSTALL(3)</b><td align=right><b>FMTINSTALL(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    fmtinstall, dofmt, dorfmt, fmtprint, fmtvprint, fmtrune, fmtstrcpy,
-    fmtrunestrcpy, fmtfdinit, fmtfdflush, fmtstrinit, fmtstrflush,
-    runefmtstrinit, runefmtstrflush, errfmt &ndash; support for user-defined
-    print formats and output routines<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>typedef struct Fmt &nbsp;&nbsp;&nbsp;Fmt;<br>
-    struct Fmt{<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;runes; &nbsp;&nbsp;&nbsp;/* output buffer is runes or chars? */<br>
-        void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*start; /* of buffer */<br>
-        void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*to; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* current place in the buffer */<br>
-        void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*stop; &nbsp;&nbsp;&nbsp;/* end of the buffer; overwritten if flush fails */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*flush)(Fmt*);/* called when to == stop */<br>
-        void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*farg; &nbsp;&nbsp;&nbsp;/* to make flush a closure */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nfmt; &nbsp;&nbsp;&nbsp;&nbsp;/* num chars formatted so far */<br>
-        va_list args; &nbsp;&nbsp;&nbsp;&nbsp;/* args passed to dofmt */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* % format Rune */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width;<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prec;<br>
-        ulong &nbsp;&nbsp;&nbsp;&nbsp;flags;<br>
-        
-    </table>
-    };<br>
-    enum{<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        FmtWidth &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1,<br>
-        FmtLeft  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FmtWidth &lt;&lt; 1,<br>
-        FmtPrec  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FmtLeft &lt;&lt; 1,<br>
-        FmtSharp &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FmtPrec &lt;&lt; 1,<br>
-        FmtSpace &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FmtSharp &lt;&lt; 1,<br>
-        FmtSign  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FmtSpace &lt;&lt; 1,<br>
-        FmtZero  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FmtSign &lt;&lt; 1,<br>
-        FmtUnsigned = FmtZero &lt;&lt; 1,<br>
-        FmtShort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FmtUnsigned &lt;&lt; 1,<br>
-        FmtLong  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FmtShort &lt;&lt; 1,<br>
-        FmtVLong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FmtLong &lt;&lt; 1,<br>
-        FmtComma &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FmtVLong &lt;&lt; 1,<br>
-        FmtFlag  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FmtComma &lt;&lt; 1<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;fmtfdinit(Fmt *f, int fd, char *buf, int nbuf); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;fmtfdflush(Fmt *f); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;fmtstrinit(Fmt *f); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* fmtstrflush(Fmt *f); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;runefmtstrinit(Fmt *f); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runefmtstrflush(Fmt *f);<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;fmtinstall(int c, int (*fn)(Fmt*)); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;dofmt(Fmt *f, char *fmt); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;dorfmt(Fmt*, Rune *fmt); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;fmtprint(Fmt *f, char *fmt, ...); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;fmtvprint(Fmt *f, char *fmt, va_list v); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;fmtrune(Fmt *f, int r); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;fmtstrcpy(Fmt *f, char *s); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;fmtrunestrcpy(Fmt *f, Rune *s); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;errfmt(Fmt *f);<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The interface described here allows the construction of custom
-    <a href="../man3/print.html"><i>print</i>(3)</a> verbs and output routines. In essence, they provide access
-    to the workings of the formatted print code. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <a href="../man3/print.html"><i>print</i>(3)</a> suite maintains its state with a data structure called
-    <tt><font size=+1>Fmt</font></tt>. A typical call to <a href="../man3/print.html"><i>print</i>(3)</a> or its relatives initializes a
-    <tt><font size=+1>Fmt</font></tt> structure, passes it to subsidiary routines to process the
-    output, and finishes by emitting any saved state recorded in the
-    <tt><font size=+1>Fmt</font></tt>. The details of the <tt><font size=+1>Fmt</font></tt> are unimportant to outside users,
-    except
-    insofar as the general design influences the interface. The <tt><font size=+1>Fmt</font></tt>
-    records whether the output is in runes or bytes, the verb being
-    processed, its precision and width, and buffering parameters.
-    Most important, it also records a <i>flush</i> routine that the library
-    will call if a buffer overflows. When printing to a file descriptor,
-    the
-    flush routine will emit saved characters and reset the buffer;
-    when printing to an allocated string, it will resize the string
-    to receive more output. The flush routine is nil when printing
-    to fixed-size buffers. User code need never provide a flush routine;
-    this is done internally by the library.<br>
-    <p><font size=+1><b>Custom output routines   </b></font><br>
-    To write a custom output routine, such as an error handler that
-    formats and prints custom error messages, the output sequence
-    can be run from outside the library using the routines described
-    here. There are two main cases: output to an open file descriptor
-    and output to a string. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    To write to a file descriptor, call <i>fmtfdinit</i> to initialize the
-    local <tt><font size=+1>Fmt</font></tt> structure <i>f</i>, giving the file descriptor <i>fd</i>, the buffer
-    <i>buf</i>, and its size <i>nbuf</i>. Then call <i>fmtprint</i> or <i>fmtvprint</i> to generate
-    the output. These behave like <tt><font size=+1>fprint</font></tt> (see <a href="../man3/print.html"><i>print</i>(3)</a>) or <tt><font size=+1>vfprint</font></tt>
-    except that the characters are buffered until <i>fmtfdflush</i> is called
-    and the return value is either 0 or &ndash;1. A typical example of this
-    sequence appears in the Examples section. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The same basic sequence applies when outputting to an allocated
-    string: call <i>fmtstrinit</i> to initialize the <tt><font size=+1>Fmt</font></tt>, then call <i>fmtprint</i>
-    and <i>fmtvprint</i> to generate the output. Finally, <i>fmtstrflush</i> will
-    return the allocated string, which should be freed after use.
-    To output to a rune string, use <i>runefmtstrinit</i> and <i>runefmtstrflush</i>.
-    Regardless of the output style or type, <i>fmtprint</i> or <i>fmtvprint</i>
-    generates the characters.<br>
-    <p><font size=+1><b>Custom format verbs   </b></font><br>
-    <i>Fmtinstall</i> is used to install custom verbs and flags labeled by
-    character <i>c</i>, which may be any non-zero Unicode character. <i>Fn</i> should
-    be declared as<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;fn(Fmt*)<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    <i>Fp</i><tt><font size=+1>&#8722;&gt;r</font></tt> is the flag or verb character to cause <i>fn</i> to be called. In
-    <i>fn</i>, <i>fp</i><tt><font size=+1>&#8722;&gt;width</font></tt><i>, fp</i><tt><font size=+1>&#8722;&gt;prec</font></tt> are the width and precision, and <i>fp</i><tt><font size=+1>&#8722;&gt;flags</font></tt>
-    the decoded flags for the verb (see <a href="../man3/print.html"><i>print</i>(3)</a> for a description
-    of these items). The standard flag values are: <tt><font size=+1>FmtSign</font></tt> (<tt><font size=+1>+</font></tt>), <tt><font size=+1>FmtLeft</font></tt>
-    (<tt><font size=+1>&#8722;</font></tt>), <tt><font size=+1>FmtSpace</font></tt> (<tt><font size=+1>' '</font></tt>), <tt><font size=+1>FmtSharp</font></tt> (<tt><font size=+1>#</font></tt>),
-    <tt><font size=+1>FmtComma</font></tt> (<tt><font size=+1>,</font></tt>), <tt><font size=+1>FmtLong</font></tt> (<tt><font size=+1>l</font></tt>), <tt><font size=+1>FmtShort</font></tt> (<tt><font size=+1>h</font></tt>), <tt><font size=+1>FmtUnsigned</font></tt> (<tt><font size=+1>u</font></tt>), and
-    <tt><font size=+1>FmtVLong</font></tt> (<tt><font size=+1>ll</font></tt>). The flag bits <tt><font size=+1>FmtWidth</font></tt> and <tt><font size=+1>FmtPrec</font></tt> identify whether
-    a width and precision were specified. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Fn</i> is passed a pointer to the <tt><font size=+1>Fmt</font></tt> structure recording the state
-    of the output. If <i>fp</i><tt><font size=+1>&#8722;&gt;r</font></tt> is a verb (rather than a flag), <i>fn</i> should
-    use <tt><font size=+1>Fmt&#8722;&gt;args</font></tt> to fetch its argument from the list, then format
-    it, and return zero. If <i>fp</i><tt><font size=+1>&#8722;&gt;r</font></tt> is a flag, <i>fn</i> should return one.
-    All interpretation of <i>fp</i><tt><font size=+1>&#8722;&gt;width</font></tt>, <i>fp</i><tt><font size=+1>&#8722;&gt;prec</font></tt>, and <i>fp-&gt;</i><tt><font size=+1>flags</font></tt> is
-    left up to the conversion routine. <i>Fmtinstall</i> returns 0 if the
-    installation succeeds, &ndash;1 if it fails. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Fmtprint</i> and <i>fmtvprint</i> may be called to help prepare output in
-    custom conversion routines. However, these functions clear the
-    width, precision, and flags. Both functions return 0 for success
-    and &ndash;1 for failure. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The functions <i>dofmt</i> and <i>dorfmt</i> are the underlying formatters;
-    they use the existing contents of <tt><font size=+1>Fmt</font></tt> and should be called only
-    by sophisticated conversion routines. These routines return the
-    number of characters (bytes of UTF or runes) produced. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Some internal functions may be useful to format primitive types.
-    They honor the width, precision and flags as described in <a href="../man3/print.html"><i>print</i>(3)</a>.
-    <i>Fmtrune</i> formats a single character <tt><font size=+1>r</font></tt>. <i>Fmtstrcpy</i> formats a string
-    <tt><font size=+1>s</font></tt>; <i>fmtrunestrcpy</i> formats a rune string <tt><font size=+1>s</font></tt>. <i>Errfmt</i> formats the system
-    error string. All these routines return zero for
-    successful execution. Conversion routines that call these functions
-    will work properly regardless of whether the output is bytes or
-    runes.<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLES     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    This function prints an error message with a variable number of
-    arguments and then quits. Compared to the corresponding example
-    in <a href="../man3/print.html"><i>print</i>(3)</a>, this version uses a smaller buffer, will never truncate
-    the output message, but might generate multiple <tt><font size=+1>write</font></tt> system calls
-    to produce its output.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>#pragma &nbsp;&nbsp;&nbsp;varargck argpos &nbsp;&nbsp;&nbsp;error &nbsp;&nbsp;&nbsp;&nbsp;1<br>
-        void fatal(char *fmt, ...)<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Fmt f;<br>
-            char buf[64];<br>
-            va_list arg;<br>
-            fmtfdinit(&amp;f, 1, buf, sizeof buf);<br>
-            fmtprint(&amp;f, &quot;fatal: &quot;);<br>
-            va_start(arg, fmt);<br>
-            fmtvprint(&amp;f, fmt, arg);<br>
-            va_end(arg);<br>
-            fmtprint(&amp;f, &quot;\n&quot;);<br>
-            fmtfdflush(&amp;f);<br>
-            exits(&quot;fatal error&quot;);<br>
-            
-        </table>
-        }<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    This example adds a verb to print complex numbers.<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef<br>
-        struct {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            double &nbsp;&nbsp;&nbsp;r, i;<br>
-            
-        </table>
-        } Complex;<br>
-        #pragma &nbsp;&nbsp;&nbsp;varargck type &quot;X&quot; Complex<br>
-        int<br>
-        Xfmt(Fmt *f)<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Complex c;<br>
-            c = va_arg(f&#8722;&gt;args, Complex);<br>
-            return fmtprint(f, &quot;(%g,%g)&quot;, c.r, c.i);<br>
-            
-        </table>
-        }<br>
-        main(...)<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Complex x = (Complex){ 1.5, &#8722;2.3 };<br>
-            fmtinstall('X', Xfmt);<br>
-            print(&quot;x = %X\n&quot;, x);<br>
-            
-        </table>
-        }<br>
-        </font></tt>
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/fmt<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/print.html"><i>print</i>(3)</a>, <a href="../man7/utf.html"><i>utf</i>(7)</a>, <a href="../man3/errstr.html"><i>errstr</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines return negative numbers or nil for errors and set
-    <i>errstr</i>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/frame.html b/man/man3/frame.html
deleted file mode 100644
index 4a80453..0000000
--- a/man/man3/frame.html
+++ /dev/null
@@ -1,325 +0,0 @@
-<head>
-<title>frame(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>FRAME(3)</b><td align=right><b>FRAME(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    frinit, frsetrects, frinittick, frclear, frcharofpt, frptofchar,
-    frinsert, frdelete, frselect, frtick, frselectpaint, frdrawsel,
-    frdrawsel0, frgetmouse &ndash; frames of text<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;draw.h&gt;<br>
-    #include &lt;thread.h&gt;<br>
-    #include &lt;mouse.h&gt;<br>
-    #include &lt;frame.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;frinit(Frame *f, Rectangle r, Font *ft, Image *b, Image **cols)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;frsetrects(Frame *f, Rectangle r, Image *b)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;frinittick(Frame *f)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;frclear(Frame *f, int resize)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong frcharofpt(Frame *f, Point pt)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point frptofchar(Frame *f, ulong p)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;frinsert(Frame *f, Rune *r0, Rune *r1, ulong p)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;frdelete(Frame *f, ulong p0, ulong p1)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;frselect(Frame *f, Mousectl *m)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;frtick(Frame *f, Point pt, int up)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;frselectpaint(Frame *f, Point p0, Point p1, Image *col)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;frdrawsel(Frame *f, Point pt0, ulong p0, ulong p1,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int highlighted)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;frdrawsel0(Frame *f, Point pt0, ulong p0, ulong p1,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *back, Image *text)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>enum{<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        BACK,<br>
-        HIGH,<br>
-        BORD,<br>
-        TEXT,<br>
-        HTEXT,<br>
-        NCOL<br>
-        
-    </table>
-    };<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    This library supports <i>frames</i> of editable text in a single font
-    on raster displays, such as in <a href="../man1/sam.html"><i>sam</i>(1)</a> and <a href="../man1/9term.html"><i>9term</i>(1)</a>. Frames may
-    hold any character except NUL (0). Long lines are folded and tabs
-    are at fixed intervals. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The user-visible data structure, a <tt><font size=+1>Frame</font></tt>, is defined in <tt><font size=+1>&lt;frame.h&gt;</font></tt>:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct Frame Frame;<br>
-        struct Frame<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Font &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*font; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* of chars in the frame */<br>
-            Display &nbsp;&nbsp;&nbsp;&nbsp;*display; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* on which frame appears */<br>
-            Image &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*b; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* on which frame appears */<br>
-            Image &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*cols[NCOL]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* text and background colors */<br>
-            Rectangle r; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* in which text appears */<br>
-            Rectangle entire; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* of full frame */<br>
-            Frbox &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*box;<br>
-            ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p0, p1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* selection */<br>
-            ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nbox, nalloc;<br>
-            ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxtab; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* max size of tab, in pixels */<br>
-            ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nchars; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* # runes in frame */<br>
-            ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nlines; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* # lines with text */<br>
-            ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxlines; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* total # lines in frame */<br>
-            ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastlinefull; &nbsp;&nbsp;&nbsp;&nbsp;/* last line fills frame */<br>
-            ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* changed since frselect() */<br>
-            Image &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*tick; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* typing tick */<br>
-            Image &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*tickback; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* saved image under tick */<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ticked; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* flag: is tick onscreen? */<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    <tt><font size=+1>Frbox</font></tt> is an internal type and is not used by the interface. <tt><font size=+1>P0</font></tt>
-    and <tt><font size=+1>p1</font></tt> may be changed by the application provided the selection
-    routines are called afterwards to maintain a consistent display.
-    <i>Maxtab</i> determines the size of tab stops. <i>Frinit</i> sets it to 8 times
-    the width of a <tt><font size=+1>0</font></tt> (zero) character in the font; it may be
-    changed before any text is added to the frame. The other elements
-    of the structure are maintained by the library and should not
-    be modified directly. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The text within frames is not directly addressable; instead frames
-    are designed to work alongside another structure that holds the
-    text. The typical application is to display a section of a longer
-    document such as a text file or terminal session. Usually the
-    program will keep its own copy of the text in the window
-    (probably as an array of <tt><font size=+1>Runes</font></tt>) and pass components of this text
-    to the frame routines to display the visible portion. Only the
-    text that is visible is held by the <tt><font size=+1>Frame</font></tt>; the application must
-    check <tt><font size=+1>maxlines</font></tt>, <tt><font size=+1>nlines</font></tt>, and <tt><font size=+1>lastlinefull</font></tt> to determine, for example,
-    whether new text needs to be appended at the
-    end of the <tt><font size=+1>Frame</font></tt> after calling <i>frdelete</i> (q.v.). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    There are no routines in the library to allocate <tt><font size=+1>Frames</font></tt>; instead
-    the interface assumes that <tt><font size=+1>Frames</font></tt> will be components of larger
-    structures. <i>Frinit</i> prepares the <tt><font size=+1>Frame</font></tt> <i>f</i> so characters drawn in
-    it will appear in the single <tt><font size=+1>Font</font></tt> <i>ft</i>. It then calls <i>frsetrects</i>
-    and <i>frinittick</i> to initialize the geometry for the <tt><font size=+1>Frame</font></tt>. The <tt><font size=+1>Image
-    </font></tt><i>b</i> is where the <tt><font size=+1>Frame</font></tt> is to be drawn; <tt><font size=+1>Rectangle</font></tt> <i>r</i> defines the limit
-    of the portion of the <tt><font size=+1>Image</font></tt> the text will occupy. The <tt><font size=+1>Image</font></tt> pointer
-    may be null, allowing the other routines to be called to maintain
-    the associated data structure in, for example, an obscured window.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The array of <tt><font size=+1>Images</font></tt> cols sets the colors in which text and borders
-    will be drawn. The background of the frame will be drawn in <tt><font size=+1>cols[BACK]</font></tt>;
-    the background of highlighted text in <tt><font size=+1>cols[HIGH]</font></tt>; borders and
-    scroll bar in <tt><font size=+1>cols[BORD]</font></tt>; regular text in <tt><font size=+1>cols[TEXT]</font></tt>; and highlighted
-    text in <tt><font size=+1>cols[HTEXT]</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Frclear</i> frees the internal structures associated with <i>f</i>, permitting
-    another <i>frinit</i> or <i>frsetrects</i> on the <tt><font size=+1>Frame</font></tt>. It does not clear the
-    associated display. If <i>f</i> is to be deallocated, the associated
-    <tt><font size=+1>Font</font></tt> and <tt><font size=+1>Image</font></tt> must be freed separately. The <tt><font size=+1>resize</font></tt> argument should
-    be non-zero if the frame is to be redrawn with a
-    different font; otherwise the frame will maintain some data structures
-    associated with the font. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    To resize a <tt><font size=+1>Frame</font></tt>, use <i>frclear</i> and <i>frinit</i> and then <i>frinsert</i> (q.v.)
-    to recreate the display. If a <tt><font size=+1>Frame</font></tt> is being moved but not resized,
-    that is, if the shape of its containing rectangle is unchanged,
-    it is sufficient to use <a href="../man3/draw.html"><i>draw</i>(3)</a> to copy the containing rectangle
-    from the old to the new location and then call <i>frsetrects</i> to
-    establish the new geometry. (It is unnecessary to call <i>frinittick</i>
-    unless the font size has changed.) No redrawing is necessary.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>Frames</font></tt> hold text as runes, not as bytes. <i>Frptofchar</i> returns the
-    location of the upper left corner of the <i>p&#8217;th</i> rune, starting from
-    0, in the <tt><font size=+1>Frame</font></tt> <i>f</i>. If <i>f</i> holds fewer than <i>p</i> runes, <i>frptofchar</i> returns
-    the location of the upper right corner of the last character in
-    <i>f</i>. <i>Frcharofpt</i> is the inverse: it returns the index of the closest
-    rune whose image&#8217;s upper left corner is up and to the left of
-    <i>pt</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Frinsert</i> inserts into <tt><font size=+1>Frame</font></tt> <i>f</i> starting at rune index <i>p</i> the runes
-    between <i>r0</i> and <i>r1</i>. If a NUL (0) character is inserted, chaos will
-    ensue. Tabs and newlines are handled by the library, but all other
-    characters, including control characters, are just displayed.
-    For example, backspaces are printed; to erase a character, use
-    <i>frdelete</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Frdelete</i> deletes from the <tt><font size=+1>Frame</font></tt> the text between <i>p0</i> and <i>p1</i>; <i>p1</i>
-    points at the first rune beyond the deletion. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Frselect</i> tracks the mouse to select a contiguous string of text
-    in the <tt><font size=+1>Frame</font></tt>. When called, a mouse button is typically down. <i>Frselect</i>
-    will return when the button state has changed (some buttons may
-    still be down) and will set <i>f</i><tt><font size=+1>&#8722;&gt;p0</font></tt> and <i>f</i><tt><font size=+1>&#8722;&gt;p1</font></tt> to the selected range
-    of text. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Programs that wish to manage the selection themselves have several
-    routines to help. They involve the maintenance of the &#8216;tick&#8217;,
-    the vertical line indicating a null selection between characters,
-    and the colored region representing a non-null selection. <i>Frtick</i>
-    draws (if <i>up</i> is non-zero) or removes (if <i>up</i> is zero) the tick
-    at
-    the screen position indicated by <i>pt</i>. <i>Frdrawsel</i> repaints a section
-    of the frame, delimited by character positions <i>p0</i> and <i>p1</i>, either
-    with plain background or entirely highlighted, according to the
-    flag <i>highlighted</i>, managing the tick appropriately. The point <i>pt0</i>
-    is the geometrical location of <i>p0</i> on the screen; like all of the
-    selection-helper routines&#8217; <tt><font size=+1>Point</font></tt> arguments, it must be a value
-    generated by <i>frptofchar</i>. <i>Frdrawsel0</i> is a lower-level routine,
-    taking as arguments a background color, <i>back</i>, and text color,
-    <i>text</i>. It assumes that the tick is being handled (removed beforehand,
-    replaced afterwards, as required) by its caller. <i>Frselectpaint
-    </i>uses a solid color, <i>col</i>, to paint a region of the frame defined
-    by the <tt><font size=+1>Points</font></tt> <i>p0</i> and <i>p1</i>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libframe<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man3/cachechars.html"><i>cachechars</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/genrandom.html b/man/man3/genrandom.html
deleted file mode 100644
index 0cddd21..0000000
--- a/man/man3/genrandom.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<head>
-<title>genrandom(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>GENRANDOM(3)</b><td align=right><b>GENRANDOM(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    genrandom, prng &ndash; random number generation<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mp.h&gt;<br>
-    #include &lt;libsec.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void genrandom(uchar *buf, int nbytes) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void prng(uchar *buf, int nbytes)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Most security software requires a source of random or, at the
-    very least, unguessable numbers. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Genrandom</i> fills a buffer with bytes from the X9.17 pseudo-random
-    number generator. The X9.17 generator is seeded by 24 truly random
-    bytes read via <i>truerand</i> (see <a href="../man3/rand.html"><i>rand</i>(3)</a>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Prng</i> uses the native <a href="../man3/rand.html"><i>rand</i>(3)</a> pseudo-random number generator to
-    fill the buffer. Used with <i>srand</i>, this function can produce a
-    reproducible stream of pseudo random numbers useful in testing.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Both functions may be passed to <i>mprand</i> (see <a href="../man3/mp.html"><i>mp</i>(3)</a>).<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libsec<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mp.html"><i>mp</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/get9root.html b/man/man3/get9root.html
deleted file mode 100644
index 6ca02c0..0000000
--- a/man/man3/get9root.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<head>
-<title>get9root(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>GET9ROOT(3)</b><td align=right><b>GET9ROOT(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    get9root, unsharp &ndash; get path to root of Plan 9 tree<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get9root(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsharp(char *path)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    This tree of Plan 9 software is conventionally installed in <tt><font size=+1>/usr/local/plan9</font></tt>
-    but may be installed in other places (for example, users without
-    the ability to write to <tt><font size=+1>/usr/local</font></tt> may with to install it in their
-    own home directories). The environment variable <tt><font size=+1>$PLAN9</font></tt> should
-    contain the path to the root. <i>Get9root
-    </i>returns a static pointer to the pathname of root, first checking
-    <tt><font size=+1>$PLAN9</font></tt> and defaulting to <tt><font size=+1>/usr/local/plan9</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The lack of a fixed location for the Plan 9 tree makes it difficult
-    to hard-code paths to files. <i>Unsharp</i> replaces a leading <tt><font size=+1>#9</font></tt> in
-    <i>path</i> with the root of the tree. <i>Unsharp</i> also replaces a leading
-    <tt><font size=+1>#d</font></tt> with the path to the underlying system&#8217;s file descriptor dup
-    device, typically <tt><font size=+1>/dev/fd</font></tt>. The string returned from <i>unsharp</i>, if
-    different from <i>path</i>, should be freed with <i>free</i> (see <a href="../man3/malloc.html"><i>malloc</i>(3)</a>)
-    when no longer needed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    As a convention, programs should never <i>unsharp</i> paths obtained
-    from user input.<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The <a href="../man4/plumber.html"><i>plumber</i>(4)</a> uses this code to find unrooted file names included
-    by plumb rules.<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>snprint(buf, sizeof buf, &quot;#9/plumb/%s&quot;, name);<br>
-        fd = open(unsharp(buf), OREAD);<br>
-        </font></tt>
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/getns.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man4/intro.html"><i>intro</i>(4)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Get9root</i> could be smarter about finding the tree when <tt><font size=+1>$PLAN9</font></tt> is
-    not set.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/getcallerpc.html b/man/man3/getcallerpc.html
deleted file mode 100644
index 72a835d..0000000
--- a/man/man3/getcallerpc.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<head>
-<title>getcallerpc(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>GETCALLERPC(3)</b><td align=right><b>GETCALLERPC(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    getcallerpc &ndash; fetch return PC of current function<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong getcallerpc(void *firstarg)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Getcallerpc</i> is a portable way to discover the PC to which the
-    current function will return. <i>Firstarg</i> should be a pointer to
-    the first argument to the function in question.<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>void<br>
-        printpc(ulong arg)<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            print(&quot;Called from %.8lux\n&quot;, getcallerpc(&amp;arg));<br>
-            
-        </table>
-        }<br>
-        void<br>
-        main(int argc, char *argv[])<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            printpc(0);<br>
-            printpc(0);<br>
-            printpc(0);<br>
-            
-        </table>
-        }<br>
-        </font></tt>
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The <i>firstarg</i> parameter should not be necessary.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/getenv.html b/man/man3/getenv.html
deleted file mode 100644
index 5b51354..0000000
--- a/man/man3/getenv.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<head>
-<title>getenv(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>GETENV(3)</b><td align=right><b>GETENV(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    getenv, putenv &ndash; access environment variables<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* getenv(char *name)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;putenv(char *name, char *val)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Getenv</i> fetches the environment value associated with <i>name</i> into
-    memory allocated with <a href="../man3/malloc.html"><i>malloc</i>(3)</a>, 0-terminates it, and returns
-    a pointer to that area. If no file exists, 0 is returned. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Putenv</i> sets the environment value associated with <i>name</i> to <i>val</i>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/getenv.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Sets <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To avoid name conflicts with the underlying system, <i>getenv</i> and
-    <i>putenv</i> are preprocessor macros defined as <i>p9getenv</i> and <i>p9putenv</i>;
-    see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/getfields.html b/man/man3/getfields.html
deleted file mode 100644
index 7c1d8f6..0000000
--- a/man/man3/getfields.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<head>
-<title>getfields(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>GETFIELDS(3)</b><td align=right><b>GETFIELDS(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    getfields, gettokens, tokenize &ndash; break a string into fields<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;getfields(char *str, char **args, int maxargs, int multiflag,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char *delims) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;gettokens(char *str, char **args, int maxargs, char *delims)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;tokenize(char *str, char **args, int maxargs)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Getfields</i> places into the array <i>args</i> pointers to the first <i>maxargs</i>
-    fields of the null terminated UTF string <i>str</i>. Delimiters between
-    these fields are set to null. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Fields are substrings of <i>str</i> whose definition depends on the value
-    of <i>multiflag.</i> If <i>multiflag</i> is zero, adjacent fields are separated
-    by exactly one delimiter. For example<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <tt><font size=+1>getfields(&quot;#alice#bob##charles###&quot;, arg, 3, 0, &quot;#&quot;);<br>
-            </font></tt>
-        </table>
-        
-    </table>
-    yields three substrings: null-string , <tt><font size=+1>alice</font></tt>, and <tt><font size=+1>bob##charles###</font></tt>.
-    If the <i>multiflag</i> argument is not zero, a field is a non-empty
-    string of non-delimiters. For example<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <tt><font size=+1>getfields(&quot;#alice#bob##charles###&quot;, arg, 3, 1, &quot;#&quot;);<br>
-            </font></tt>
-        </table>
-        
-    </table>
-    yields the three substrings: <tt><font size=+1>alice</font></tt>, <tt><font size=+1>bob</font></tt>, and <tt><font size=+1>charles###</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Getfields returns the number of fields pointed to. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Gettokens</i> is the same as <i>getfields</i> with <i>multiflag</i> non-zero, except
-    that fields may be quoted using single quotes, in the manner of
-    <a href="../man1/rc.html"><i>rc</i>(1)</a>. See <a href="../man3/quote.html"><i>quote</i>(3)</a> for related quote-handling software. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Tokenize</i> is <i>gettokens</i> with <i>delims</i> set to <tt><font size=+1>&quot;\t\r\n &quot;</font></tt>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/tokenize.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>strtok</i> in <a href="../man3/strcat.html"><i>strcat</i>(3)</a>, <a href="../man3/quote.html"><i>quote</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/getns.html b/man/man3/getns.html
deleted file mode 100644
index e5da2bb..0000000
--- a/man/man3/getns.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<head>
-<title>getns(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>GETNS(3)</b><td align=right><b>GETNS(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    getns &ndash; get path to name space directory<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getns(void)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Getns</i> returns a pointer to a malloced string that contains the
-    path to the name space directory for the current process. The
-    name space directory is a clumsy substitute for Plan 9&#8217;s per-process
-    name spaces; see <a href="../man4/intro.html"><i>intro</i>(4)</a> for details.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/getns.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man4/intro.html"><i>intro</i>(4)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/getsnarf.html b/man/man3/getsnarf.html
deleted file mode 100644
index 3f3e751..0000000
--- a/man/man3/getsnarf.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<head>
-<title>getsnarf(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>GETSNARF(3)</b><td align=right><b>GETSNARF(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    getsnarf, putsnarf &ndash; window system snarf (cut and paste) buffer<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;draw.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char *getsnarf(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void putsnarf(char *text)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Getsnarf</i> and <i>putsnarf</i> access the window system&#8217;s snarf (cut and
-    paste) buffer. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Getsnarf</i> returns a copy of the current buffer; the returned pointer
-    should be freed with <i>free</i> (see <a href="../man3/malloc.html"><i>malloc</i>(3)</a>) when no longer needed.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Putsnarf</i> sets the buffer to the text string <i>text</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Callers should assume that the snarf buffer is UTF. If the window
-    system does not keep the buffer in UTF, <i>getsnarf</i> and <i>putsnarf</i>
-    will convert as necessary.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw/x11&#8722;itrans.c<br>
-    </font></tt>
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/getuser.html b/man/man3/getuser.html
deleted file mode 100644
index c34b23c..0000000
--- a/man/man3/getuser.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<head>
-<title>getuser(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>GETUSER(3)</b><td align=right><b>GETUSER(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    getuser, sysname &ndash; get user or system name<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getuser(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysname(void)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Getuser</i> returns a pointer to static data which contains the null-terminated
-    name of the user who owns the current process. <i>Getuser</i> calls <a href="../man2/getuid.html"><i>getuid</i>(2)</a>
-    and then reads <tt><font size=+1>/etc/passwd</font></tt> to find the corresponding name. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Sysname</i> returns a pointer to static data which contains the name
-    of the machine on which the current process is running. <i>Sysname</i>
-    looks first for an environment variable <tt><font size=+1>$sysname</font></tt>. If there is
-    no such variable, <i>sysname</i> calls <a href="../man2/gethostname.html"><i>gethostname</i>(2)</a> and truncates the
-    returned name at the first dot. If <i>gethostname</i> fails,
-    <i>sysname</i> returns the default name <tt><font size=+1>gnot</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Unlike <i>getuser</i>, <i>sysname</i> caches the string, deriving the host name
-    only once.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/getuser.c<br>
-    /usr/local/plan9/src/lib9/sysname.c<br>
-    </font></tt>
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/getwd.html b/man/man3/getwd.html
deleted file mode 100644
index 1f5d228..0000000
--- a/man/man3/getwd.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<head>
-<title>getwd(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>GETWD(3)</b><td align=right><b>GETWD(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    getwd &ndash; get current directory<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* getwd(char *buf, int size)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Getwd</i> fills <i>buf</i> with a null-terminated string representing the
-    current directory and returns <i>buf</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Getwd</i> places no more than <i>size</i> bytes in the buffer provided.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/getwd.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/pwd.html"><i>pwd</i>(1)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    On error, zero is returned. <a href="../man3/Errstr.html"><i>Errstr</i>(3)</a> may be consulted for more
-    information.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To avoid name conflicts with the underlying system, <i>getwd</i> is a
-    preprocessor macro defined as <i>p9getwd</i>; see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/graphics.html b/man/man3/graphics.html
deleted file mode 100644
index 92f08c0..0000000
--- a/man/man3/graphics.html
+++ /dev/null
@@ -1,592 +0,0 @@
-<head>
-<title>graphics(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>GRAPHICS(3)</b><td align=right><b>GRAPHICS(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Display, Point, Rectangle, Cursor, initdraw, geninitdraw, drawerror,
-    initdisplay, closedisplay, getdefont, getwindow, gengetwindow,
-    flushimage, bufimage, lockdisplay, unlockdisplay, cursorswitch,
-    cursorset, openfont, buildfont, freefont, Pfmt, Rfmt, strtochan,
-    chantostr, chantodepth &ndash; interactive graphics
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;draw.h&gt;<br>
-    #include &lt;cursor.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;initdraw(void (*errfun)(Display*, char*), char *font,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char *label)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;geninitdraw(char *devdir, void(*errfun)(Display*, char*),<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <tt><font size=+1>char *font, char *label, char *mousedir, char *windir,<br>
-             int ref)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            </font></tt>
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;newwindow(char *str)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;drawerror(Display *d, char *msg)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Display*initdisplay(char *devdir, char *win, void(*errfun)(Display*,
-    char*))<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;closedisplay(Display *d)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Font* getdefont(Display *d)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;flushimage(Display *d, int vis)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;bufimage(Display *d, int n)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;lockdisplay(Display *d)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;unlockdisplay(Display *d)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;getwindow(Display *d, int ref)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;gengetwindow(Display *d, char *winname,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image **ip, Screen **sp, int ref)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;cursorswitch(Cursor *curs)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;cursorset(Point p)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Font* openfont(Display *d, char *name)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Font* buildfont(Display *d, char *desc, char *name)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;freefont(Font *f)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;Pfmt(Fmt*)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;Rfmt(Fmt*)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong strtochan(char *s)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* chantostr(char *s, ulong chan)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;chantodepth(ulong chan)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>extern Display *display<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>extern Image &nbsp;&nbsp;&nbsp;&nbsp;*screen<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>extern Screen &nbsp;&nbsp;&nbsp;&nbsp;*_screen<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>extern Font &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*font<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    A <tt><font size=+1>Display</font></tt> structure represents a connection to the graphics device,
-    <a href="../man3/draw.html"><i>draw</i>(3)</a>, holding all graphics resources associated with the connection,
-    including in particular raster image data in use by the client
-    program. The structure is defined (in part) as:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef<br>
-        struct Display<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            ...<br>
-            void &nbsp;&nbsp;&nbsp;&nbsp;(*error)(Display*, char*);<br>
-            ...<br>
-            Image &nbsp;&nbsp;&nbsp;*black;<br>
-            Image &nbsp;&nbsp;&nbsp;*white;<br>
-            Image &nbsp;&nbsp;&nbsp;*opaque;<br>
-            Image &nbsp;&nbsp;&nbsp;*transparent;<br>
-            Image &nbsp;&nbsp;&nbsp;*image;<br>
-            Font &nbsp;&nbsp;&nbsp;&nbsp;*defaultfont;<br>
-            Subfont*defaultsubfont;<br>
-            ...<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    A <tt><font size=+1>Point</font></tt> is a location in an Image (see below and <a href="../man3/draw.html"><i>draw</i>(3)</a>), such
-    as the display, and is defined as:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef<br>
-        struct Point {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int x;<br>
-            int y;<br>
-            
-        </table>
-        } Point;<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    The coordinate system has <i>x</i> increasing to the right and <i>y</i> increasing
-    down. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A <tt><font size=+1>Rectangle</font></tt> is a rectangular area in an image.<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef<br>
-        struct Rectangle {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Point min; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* upper left */<br>
-            Point max; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* lower right */<br>
-            
-        </table>
-        } Rectangle;<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    By definition, <tt><font size=+1>min.x</font></tt>&le;<tt><font size=+1>max.x</font></tt> and <tt><font size=+1>min.y</font></tt>&le;<tt><font size=+1>max.y</font></tt>. By convention, the right
-    (maximum <i>x</i>) and bottom (maximum <i>y</i>) edges are excluded from the
-    represented rectangle, so abutting rectangles have no points in
-    common. Thus, <tt><font size=+1>max</font></tt> contains the coordinates of the first point
-    beyond the rectangle. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>Image</font></tt> data structure is defined in <a href="../man3/draw.html"><i>draw</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A <tt><font size=+1>Font</font></tt> is a set of character images, indexed by runes (see <a href="../man7/utf.html"><i>utf</i>(7)</a>).
-    The images are organized into <tt><font size=+1>Subfonts</font></tt>, each containing the images
-    for a small, contiguous set of runes. The detailed format of these
-    data structures, which are described in detail in <a href="../man3/cachechars.html"><i>cachechars</i>(3)</a>,
-    is immaterial for most applications. <tt><font size=+1>Font</font></tt> and
-    <tt><font size=+1>Subfont</font></tt> structures contain two interrelated fields: <tt><font size=+1>ascent</font></tt>, the
-    distance from the top of the highest character (actually the top
-    of the image holding all the characters) to the baseline, and
-    <tt><font size=+1>height</font></tt>, the distance from the top of the highest character to
-    the bottom of the lowest character (and hence, the interline
-    spacing). See <a href="../man3/cachechars.html"><i>cachechars</i>(3)</a> for more details. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Buildfont</i> parses the font description in the buffer <tt><font size=+1>desc</font></tt>, returning
-    a <tt><font size=+1>Font*</font></tt> pointer that can be used by <tt><font size=+1>string</font></tt> (see <a href="../man3/draw.html"><i>draw</i>(3)</a>) to draw
-    characters from the font. <i>Openfont</i> does the same, but reads the
-    description from the named file. <i>Freefont</i> frees a font. The convention
-    for naming font files is:
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>/lib/font/bit/</font></tt><i>name</i><tt><font size=+1>/</font></tt><i>range</i><tt><font size=+1>.</font></tt><i>size</i><tt><font size=+1>.font 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    where <i>size</i> is approximately the height in pixels of the lower
-    case letters (without ascenders or descenders). <i>Range</i> gives some
-    indication of which characters will be available: for example
-    <tt><font size=+1>ascii</font></tt>, <tt><font size=+1>latin1</font></tt>, <tt><font size=+1>euro</font></tt>, or <tt><font size=+1>unicode</font></tt>. <tt><font size=+1>Euro</font></tt> includes most European languages,
-    punctuation marks, the International Phonetic
-    Alphabet, etc., but no Oriental languages. <tt><font size=+1>Unicode</font></tt> includes every
-    character for which appropriate-sized images exist on the system.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A <i>Cursor</i> is defined:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct<br>
-        Cursor {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Point offset;<br>
-            uchar clr[2*16];<br>
-            uchar set[2*16];<br>
-            
-        </table>
-        } Cursor;<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    The arrays are arranged in rows, two bytes per row, left to right
-    in big-endian order to give 16 rows of 16 bits each. A cursor
-    is displayed on the screen by adding <tt><font size=+1>offset</font></tt> to the current mouse
-    position, using <tt><font size=+1>clr</font></tt> as a mask to draw white at the pixels where
-    <tt><font size=+1>clr</font></tt> is one, and then drawing black at the pixels where <tt><font size=+1>set
-    </font></tt>is one. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The routine <i>initdraw</i> connects to the display; it returns &ndash;1 if
-    it fails and sets the error string. <i>Initdraw</i> sets up the global
-    variables <tt><font size=+1>display</font></tt> (the <tt><font size=+1>Display</font></tt> structure representing the connection),
-    <tt><font size=+1>screen</font></tt> (an <tt><font size=+1>Image</font></tt> representing the display memory itself or, if
-    <a href="../man1/rio.html"><i>rio</i>(1)</a> is running, the client&#8217;s window), and <tt><font size=+1>font</font></tt> (the
-    default font for text). The arguments to <i>initdraw</i> include a <i>label</i>,
-    which is written to <tt><font size=+1>/dev/label</font></tt> if non-nil so that it can be used
-    to identify the window when hidden (see <a href="../man1/rio.html"><i>rio</i>(1)</a>). The font is created
-    by reading the named <i>font</i> file. If <tt><font size=+1>font</font></tt> is null, <i>initdraw</i> reads
-    the file named in the environment variable <tt><font size=+1>$font</font></tt>; if
-    <tt><font size=+1>$font</font></tt> is not set, it imports the default (usually minimal) font
-    from the operating system. The global <i>font</i> will be set to point
-    to the resulting <tt><font size=+1>Font</font></tt> structure. The <i>errfun</i> argument is a <i>graphics
-    error function</i> to call in the event of a fatal error in the library;
-    it must never return. Its arguments are the display pointer
-    and an error string. If <i>errfun</i> is nil, the library provides a
-    default, called <i>drawerror</i>. Another effect of <i>initdraw</i> is that
-    it installs <a href="../man3/print.html"><i>print</i>(3)</a> formats <i>Pfmt</i> and <i>Rfmt</i> as <tt><font size=+1>%P</font></tt> and <tt><font size=+1>%R</font></tt> for printing
-    <tt><font size=+1>Points</font></tt> and <tt><font size=+1>Rectangles</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <i>geninitdraw</i> function provides a less automated way to establish
-    a connection, for programs that wish to connect to multiple displays.
-    <i>Devdir</i> is the name of the directory containing the device files
-    for the display (if nil, default <tt><font size=+1>/dev</font></tt>); <i>errfun</i>, <i>font</i>, and <i>label</i>
-    are as in <i>initdraw</i>; <i>mousedir</i> and <i>windir</i> are the directories
-    holding the <tt><font size=+1>mouse</font></tt> and <tt><font size=+1>winname</font></tt> files; and <i>ref</i> specifies the refresh
-    function to be used to create the window, if running under <a href="../man1/rio.html"><i>rio</i>(1)</a>
-    (see <a href="../man3/window.html"><i>window</i>(3)</a>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Initdisplay</i> is part of <i>geninitdraw</i>; it sets up the display structures
-    but does not allocate any fonts or call <i>getwindow</i>. The arguments
-    are similar to those of <i>initdraw</i>; <i>win</i> names the directory, default
-    <tt><font size=+1>/dev</font></tt>, in which the files associated with the window reside. <i>Closedisplay</i>
-    disconnects the display and frees the associated
-    data structures. <i>Getdefont</i> builds a <tt><font size=+1>Font</font></tt> structure from in-core
-    data describing a default font. None of these routines is needed
-    by most programs, since <i>initdraw</i> calls them as needed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The data structures associated with the display must be protected
-    in a multi-process program, because they assume only one process
-    will be using them at a time. Multi-process programs should set
-    <tt><font size=+1>display&#8722;&gt;locking</font></tt> to <tt><font size=+1>1</font></tt>, to notify the library to use a locking protocol
-    for its own accesses, and call <i>lockdisplay</i> and
-    <i>unlockdisplay</i> around any calls to the graphics library that will
-    cause messages to be sent to the display device. <i>Initdraw</i> and
-    <i>geninitdraw</i> initialize the display to the locked state. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Getwindow</i> returns a pointer to the window associated with the
-    application; it is called automatically by <i>initdraw</i> to establish
-    the <tt><font size=+1>screen</font></tt> pointer but must be called after each resizing of the
-    window to restore the library&#8217;s connection to the window. If <tt><font size=+1>rio</font></tt>
-    is not running, it returns <tt><font size=+1>display&#8722;&gt;image</font></tt>; otherwise it
-    negotiates with <tt><font size=+1>rio</font></tt> by looking in <tt><font size=+1>/dev/winname</font></tt> to find the name
-    of the window and opening it using <tt><font size=+1>namedimage</font></tt> (see <a href="../man3/allocimage.html"><i>allocimage</i>(3)</a>).
-    The resulting window will be created using the refresh method
-    <i>ref</i> (see <a href="../man3/window.html"><i>window</i>(3)</a>); this should almost always be <tt><font size=+1>Refnone</font></tt> because
-    <tt><font size=+1>rio</font></tt> provides backing store for the window. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Getwindow</i> overwrites the global variables <tt><font size=+1>screen</font></tt>, a pointer to
-    the <tt><font size=+1>Image</font></tt> defining the window (or the overall display, if no window
-    system is running); and <tt><font size=+1>_screen</font></tt>, a pointer to the <tt><font size=+1>Screen</font></tt> representing
-    the root of the window&#8217;s hierarchy. (See <a href="../man3/window.html"><i>window</i>(3)</a>. The overloading
-    of the <tt><font size=+1>screen</font></tt> word is an unfortunate
-    historical accident.) <i>Getwindow</i> arranges that <tt><font size=+1>screen</font></tt> point to
-    the portion of the window inside the border; sophisticated clients
-    may use <tt><font size=+1>_screen</font></tt> to make further subwindows. <i>Gengetwindow</i>&#8217;s extra
-    arguments are the full path of the window&#8217;s <tt><font size=+1>winname</font></tt> file and pointers
-    to be overwritten with the values of the
-    &#8216;global&#8217; <tt><font size=+1>Image</font></tt> and <tt><font size=+1>Screen</font></tt> variables for the new window. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The mouse cursor is always displayed. The initial cursor is an
-    arrow. <i>Cursorswitch</i> causes the argument cursor to be displayed
-    instead. A zero argument causes a switch back to the arrow cursor.
-    <i>Cursorset</i> moves the mouse cursor to position <i>p</i>, provided (if in
-    a window) that the requesting program is executing in the
-    current window and the mouse is within the window boundaries;
-    otherwise <i>cursorset</i> is a no-op. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The graphics functions described in <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man3/allocimage.html"><i>allocimage</i>(3)</a>, <a href="../man3/cachechars.html"><i>cachechars</i>(3)</a>,
-    and <a href="../man3/subfont.html"><i>subfont</i>(3)</a> are implemented by writing commands to files under
-    <tt><font size=+1>/dev/draw</font></tt> (see <a href="../man3/draw.html"><i>draw</i>(3)</a>); the writes are buffered, so the functions
-    may not take effect immediately. <i>Flushimage</i> flushes the buffer,
-    doing all pending graphics operations. If
-    <i>vis</i> is non-zero, any changes are also copied from the &#8216;soft screen&#8217;
-    (if any) in the driver to the visible frame buffer. The various
-    allocation routines in the library flush automatically, as does
-    the event package (see <a href="../man3/event.html"><i>event</i>(3)</a>); most programs do not need to
-    call <i>flushimage</i>. It returns &ndash;1 on error. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Bufimage</i> is used to allocate space for <i>n</i> bytes in the display
-    buffer. It is used by all the graphics routines to send messages
-    to the display. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The functions <i>strtochan</i> and <i>chantostr</i> convert between the channel
-    descriptor strings used by <a href="../man7/image.html"><i>image</i>(7)</a> and the internal <tt><font size=+1>ulong</font></tt> representation
-    used by the graphics protocol (see <a href="../man3/draw.html"><i>draw</i>(3)</a>&#8217;s <tt><font size=+1>b</font></tt> message). <tt><font size=+1>Chantostr</font></tt>
-    writes at most nine bytes into the buffer pointed at by <i>s</i> and
-    returns <i>s</i> on success, 0 on failure.
-    <tt><font size=+1>Chantodepth</font></tt> returns the number of bits per pixel used by the format
-    specified by <i>chan</i>. Both <tt><font size=+1>chantodepth</font></tt> and <tt><font size=+1>strtochan</font></tt> return 0 when
-    presented with bad input.<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLES     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To reconnect to the window after a resize event,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>if(getwindow(display, Refnone) &lt; 0)<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            sysfatal(&quot;resize failed: %r&quot;);<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        </font></tt>
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    To create and set up a new <a href="../man1/rio.html"><i>rio</i>(1)</a> window,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>Image *screen2;<br>
-        Screen *_screen2;<br>
-        srvwsys = getenv(&quot;wsys&quot;);<br>
-        if(srvwsys == nil)<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            sysfatal(&quot;can't find $wsys: %r&quot;);<br>
-            
-        </table>
-        rfork(RFNAMEG); /* keep mount of rio private */<br>
-        fd = open(srvwsys, ORDWR);<br>
-        if(fd &lt; 0)<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            sysfatal(&quot;can't open $wsys: %r&quot;);<br>
-            
-        </table>
-        /* mount creates window; see</font></tt> <i>rio</i><tt><font size=+1>(4) */<br>
-        if(mount(fd, &#8722;1, &quot;/tmp&quot;, MREPL, &quot;new &#8722;dx 300&#8722;dy 200&quot;) &lt; 0)<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            sysfatal(&quot;can't mount new window: %r&quot;);<br>
-            
-        </table>
-        if(gengetwindow(display, &quot;/tmp/winname&quot;,<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            &amp;screen2, &amp;_screen2, Refnone) &lt; 0)<br>
-            sysfatal(&quot;resize failed: %r&quot;);<br>
-            
-        </table>
-        /* now open /tmp/cons, /tmp/mouse */<br>
-        ...<br>
-        </font></tt>
-    </table>
-    
-</table>
-<p><font size=+1><b>FILES     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/font/bit </font></tt>&nbsp;&nbsp;&nbsp;directory of fonts<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/rio.html"><i>rio</i>(1)</a>, <a href="../man3/addpt.html"><i>addpt</i>(3)</a>, <a href="../man3/allocimage.html"><i>allocimage</i>(3)</a>, <a href="../man3/cachechars.html"><i>cachechars</i>(3)</a>, <a href="../man3/subfont.html"><i>subfont</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>,
-    <a href="../man3/event.html"><i>event</i>(3)</a>, <a href="../man3/frame.html"><i>frame</i>(3)</a>, <a href="../man3/print.html"><i>print</i>(3)</a>, <a href="../man3/window.html"><i>window</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man7/image.html"><i>image</i>(7)</a>, <a href="../man7/font.html"><i>font</i>(7)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    An error function may call <a href="../man3/errstr.html"><i>errstr</i>(3)</a> for further diagnostics.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The names <tt><font size=+1>clr</font></tt> and <tt><font size=+1>set</font></tt> in the <tt><font size=+1>Cursor</font></tt> structure are reminders of
-    an archaic color map and might be more appropriately called <tt><font size=+1>white</font></tt>
-    and <tt><font size=+1>black</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    These manual pages contain many references to the now-fictitious
-    <tt><font size=+1>/dev/draw</font></tt>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/html.html b/man/man3/html.html
deleted file mode 100644
index 465edcd..0000000
--- a/man/man3/html.html
+++ /dev/null
@@ -1,1206 +0,0 @@
-<head>
-<title>html(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>HTML(3)</b><td align=right><b>HTML(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    parsehtml, printitems, validitems, freeitems, freedocinfo, dimenkind,
-    dimenspec, targetid, targetname, fromStr, toStr &ndash; HTML parser<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;html.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Item* &nbsp;&nbsp;&nbsp;parsehtml(uchar* data, int datalen, Rune* src, int mtype,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int chset, Docinfo** pdi)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;printitems(Item* items, char* msg)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validitems(Item* items)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;freeitems(Item* items)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;freedocinfo(Docinfo* d)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dimenkind(Dimen d)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dimenspec(Dimen d)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetid(Rune* s)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* &nbsp;&nbsp;&nbsp;targetname(int targid)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uchar* fromStr(Rune* buf, int n, int chset)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* &nbsp;&nbsp;&nbsp;toStr(uchar* buf, int n, int chset)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    This library implements a parser for HTML 4.0 documents. The parsed
-    HTML is converted into an intermediate representation that describes
-    how the formatted HTML should be laid out. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Parsehtml</i> parses an entire HTML document contained in the buffer
-    <i>data</i> and having length <i>datalen</i>. The URL of the document should
-    be passed in as <i>src</i>. <i>Mtype</i> is the media type of the document,
-    which should be either <tt><font size=+1>TextHtml</font></tt> or <tt><font size=+1>TextPlain</font></tt>. The character set
-    of the document is described in <i>chset</i>, which can be
-    one of <tt><font size=+1>US_Ascii</font></tt>, <tt><font size=+1>ISO_8859_1</font></tt>, <tt><font size=+1>UTF_8</font></tt> or <tt><font size=+1>Unicode</font></tt>. The return value
-    is a linked list of <tt><font size=+1>Item</font></tt> structures, described in detail below.
-    As a side effect, <tt><font size=+1>*</font></tt><i>pdi</i> is set to point to a newly created <tt><font size=+1>Docinfo</font></tt>
-    structure, containing information pertaining to the entire document.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The library expects two allocation routines to be provided by
-    the caller, <tt><font size=+1>emalloc</font></tt> and <tt><font size=+1>erealloc</font></tt>. These routines are analogous
-    to the standard malloc and realloc routines, except that they
-    should not return if the memory allocation fails. In addition,
-    <tt><font size=+1>emalloc</font></tt> is required to zero the memory. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    For debugging purposes, <i>printitems</i> may be called to display the
-    contents of an item list; individual items may be printed using
-    the <tt><font size=+1>%I</font></tt> print verb, installed on the first call to <i>parsehtml</i>. <i>validitems</i>
-    traverses the item list, checking that all of the pointers are
-    valid. It returns <tt><font size=+1>1</font></tt> is everything is ok, and <tt><font size=+1>0</font></tt> if an error was
-    found. Normally, one would not call these routines directly. Instead,
-    one sets the global variable <i>dbgbuild</i> and the library calls them
-    automatically. One can also set <i>warn</i>, to cause the library to
-    print a warning whenever it finds a problem with the input document,
-    and <i>dbglex</i>, to print debugging information in the
-    lexer. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    When an item list is finished with, it should be freed with <i>freeitems</i>.
-    Then, <i>freedocinfo</i> should be called on the pointer returned in
-    <tt><font size=+1>*</font></tt><i>pdi</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Dimenkind</i> and <i>dimenspec</i> are provided to interpret the <tt><font size=+1>Dimen</font></tt> type,
-    as described in the section <i>Dimension Specifications</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Frame target names are mapped to integer ids via a global, permanent
-    mapping. To find the value for a given name, call <i>targetid</i>, which
-    allocates a new id if the name hasn&#8217;t been seen before. The name
-    of a given, known id may be retrieved using <i>targetname</i>. The library
-    predefines <tt><font size=+1>FTtop</font></tt>, <tt><font size=+1>FTself</font></tt>, <tt><font size=+1>FTparent</font></tt> and
-    <tt><font size=+1>FTblank</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The library handles all text as Unicode strings (type <tt><font size=+1>Rune*</font></tt>).
-    Character set conversion is provided by <i>fromStr</i> and <i>toStr</i>. <i>FromStr</i>
-    takes <i>n</i> Unicode characters from <i>buf</i> and converts them to the character
-    set described by <i>chset</i>. <i>ToStr</i> takes <i>n</i> bytes from <i>buf</i>, interpretted
-    as belonging to character set <i>chset</i>, and converts
-    them to a Unicode string. Both routines null-terminate the result,
-    and use <tt><font size=+1>emalloc</font></tt> to allocate space for it.<br>
-    <p><font size=+1><b>Items     </b></font><br>
-    The return value of <i>parsehtml</i> is a linked list of variant structures,
-    with the generic portion described by the following definition:
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Item Item;<br>
-    struct Item<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Item* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascent;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anchorid;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state;<br>
-        Genattr* genattr;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tag;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    The field <tt><font size=+1>next</font></tt> points to the successor in the linked list of items,
-    while <tt><font size=+1>width</font></tt>, <tt><font size=+1>height</font></tt>, and <tt><font size=+1>ascent</font></tt> are intended for use by the caller
-    as part of the layout process. <tt><font size=+1>Anchorid</font></tt>, if non-zero, gives the
-    integer id assigned by the parser to the anchor that this item
-    is in (see section <i>Anchors</i>). <tt><font size=+1>State</font></tt> is a collection of
-    flags and values described as follows: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>enum<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        IFbrk = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80000000,<br>
-        IFbrksp = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x40000000,<br>
-        IFnobrk = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x20000000,<br>
-        IFcleft = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x10000000,<br>
-        IFcright = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x08000000,<br>
-        IFwrap = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x04000000,<br>
-        IFhang = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x02000000,<br>
-        IFrjust = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x01000000,<br>
-        IFcjust = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00800000,<br>
-        IFsmap = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00400000,<br>
-        IFindentshift = 8,<br>
-        IFindentmask = &nbsp;&nbsp;&nbsp;(255&lt;&lt;IFindentshift),<br>
-        IFhangmask = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;255<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>IFbrk</font></tt> is set if a break is to be forced before placing this item.
-    <tt><font size=+1>IFbrksp</font></tt> is set if a 1 line space should be added to the break
-    (in which case <tt><font size=+1>IFbrk</font></tt> is also set). <tt><font size=+1>IFnobrk</font></tt> is set if a break is
-    not permitted before the item. <tt><font size=+1>IFcleft</font></tt> is set if left floats should
-    be cleared (that is, if the list of pending left floats should
-    be placed) before this item is placed, and <tt><font size=+1>IFcright</font></tt> is set for
-    right floats. In both cases, IFbrk is also set. <tt><font size=+1>IFwrap</font></tt> is set
-    if the line containing this item is allowed to wrap. <tt><font size=+1>IFhang</font></tt> is
-    set if this item hangs into the left indent. <tt><font size=+1>IFrjust</font></tt> is set if
-    the line containing this item should be right justified, and <tt><font size=+1>IFcjust</font></tt>
-    is
-    set for center justified lines. <tt><font size=+1>IFsmap</font></tt> is used to indicate that
-    an image is a server-side map. The low 8 bits, represented by
-    <tt><font size=+1>IFhangmask</font></tt>, indicate the current hang into left indent, in tenths
-    of a tabstop. The next 8 bits, represented by <tt><font size=+1>IFindentmask</font></tt> and
-    <tt><font size=+1>IFindentshift</font></tt>, indicate the current indent in tab
-    stops. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The field <tt><font size=+1>genattr</font></tt> is an optional pointer to an auxiliary structure,
-    described in the section <i>Generic Attributes</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Finally, <tt><font size=+1>tag</font></tt> describes which variant type this item has. It can
-    have one of the values <tt><font size=+1>Itexttag</font></tt>, <tt><font size=+1>Iruletag</font></tt>, <tt><font size=+1>Iimagetag</font></tt>, <tt><font size=+1>Iformfieldtag</font></tt>,
-    <tt><font size=+1>Itabletag</font></tt>, <tt><font size=+1>Ifloattag</font></tt> or <tt><font size=+1>Ispacertag</font></tt>. For each of these values,
-    there is an additional structure defined, which includes Item
-    as an unnamed initial substructure,
-    and then defines additional fields. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Items of type <tt><font size=+1>Itexttag</font></tt> represent a piece of text, using the following
-    structure: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>struct Itext<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Item;<br>
-        Rune* s;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;fnt;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;fg;<br>
-        uchar voff;<br>
-        uchar ul;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    Here <tt><font size=+1>s</font></tt> is a null-terminated Unicode string of the actual characters
-    making up this text item, <tt><font size=+1>fnt</font></tt> is the font number (described in
-    the section <i>Font Numbers</i>), and <tt><font size=+1>fg</font></tt> is the RGB encoded color for
-    the text. <tt><font size=+1>Voff</font></tt> measures the vertical offset from the baseline;
-    subtract <tt><font size=+1>Voffbias</font></tt> to get the actual value (negative values
-    represent a displacement down the page). The field <tt><font size=+1>ul</font></tt> is the underline
-    style: <tt><font size=+1>ULnone</font></tt> if no underline, <tt><font size=+1>ULunder</font></tt> for conventional underline,
-    and <tt><font size=+1>ULmid</font></tt> for strike-through. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Items of type <tt><font size=+1>Iruletag</font></tt> represent a horizontal rule, as follows:
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>struct Irule<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Item;<br>
-        uchar align;<br>
-        uchar noshade;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;size;<br>
-        Dimen wspec;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    Here <tt><font size=+1>align</font></tt> is the alignment specification (described in the corresponding
-    section), <tt><font size=+1>noshade</font></tt> is set if the rule should not be shaded, <tt><font size=+1>size</font></tt>
-    is the height of the rule (as set by the size attribute), and
-    <tt><font size=+1>wspec</font></tt> is the desired width (see section <i>Dimension Specifications</i>).
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Items of type <tt><font size=+1>Iimagetag</font></tt> describe embedded images, for which the
-    following structure is defined: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>struct Iimage<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Item;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;imsrc;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imwidth;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imheight;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;altrep;<br>
-        Map* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctlid;<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;align;<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;hspace;<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;vspace;<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;border;<br>
-        Iimage* nextimage;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    Here <tt><font size=+1>imsrc</font></tt> is the URL of the image source, <tt><font size=+1>imwidth</font></tt> and <tt><font size=+1>imheight</font></tt>,
-    if non-zero, contain the specified width and height for the image,
-    and <tt><font size=+1>altrep</font></tt> is the text to use as an alternative to the image,
-    if the image is not displayed. <tt><font size=+1>Map</font></tt>, if set, points to a structure
-    describing an associated client-side image map.
-    <tt><font size=+1>Ctlid</font></tt> is reserved for use by the application, for handling animated
-    images. <tt><font size=+1>Align</font></tt> encodes the alignment specification of the image.
-    <tt><font size=+1>Hspace</font></tt> contains the number of pixels to pad the image with on
-    either side, and <tt><font size=+1>Vspace</font></tt> the padding above and below. <tt><font size=+1>Border</font></tt> is
-    the width of the border to draw around the
-    image. <tt><font size=+1>Nextimage</font></tt> points to the next image in the document (the
-    head of this list is <tt><font size=+1>Docinfo.images</font></tt>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    For items of type <tt><font size=+1>Iformfieldtag</font></tt>, the following structure is defined:
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>struct Iformfield<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Item;<br>
-        Formfield* formfield;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    This adds a single field, <tt><font size=+1>formfield</font></tt>, which points to a structure
-    describing a field in a form, described in section <i>Forms</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    For items of type <tt><font size=+1>Itabletag</font></tt>, the following structure is defined:
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>struct Itable<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Item;<br>
-        Table* table;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Table</font></tt> points to a structure describing the table, described in
-    the section <i>Tables</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    For items of type <tt><font size=+1>Ifloattag</font></tt>, the following structure is defined:
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>struct Ifloat<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Item;<br>
-        Item* &nbsp;&nbsp;&nbsp;&nbsp;item;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y;<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;side;<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;infloats;<br>
-        Ifloat* nextfloat;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    The <tt><font size=+1>item</font></tt> points to a single item (either a table or an image)
-    that floats (the text of the document flows around it), and <tt><font size=+1>side</font></tt>
-    indicates the margin that this float sticks to; it is either <tt><font size=+1>ALleft</font></tt>
-    or <tt><font size=+1>ALright</font></tt>. <tt><font size=+1>X</font></tt> and <tt><font size=+1>y</font></tt> are reserved for use by the caller; these
-    are typically used for the coordinates of the top of the float.
-    <tt><font size=+1>Infloats</font></tt> is used by the caller to keep track of whether it has
-    placed the float. <tt><font size=+1>Nextfloat</font></tt> is used by the caller to link together
-    all of the floats that it has placed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    For items of type <tt><font size=+1>Ispacertag</font></tt>, the following structure is defined:
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>struct Ispacer<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Item;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;spkind;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Spkind</font></tt> encodes the kind of spacer, and may be one of <tt><font size=+1>ISPnull</font></tt> (zero
-    height and width), <tt><font size=+1>ISPvline</font></tt> (takes on height and ascent of the
-    current font), <tt><font size=+1>ISPhspace</font></tt> (has the width of a space in the current
-    font) and <tt><font size=+1>ISPgeneral</font></tt> (for all other purposes, such as between
-    markers and lists).
-    <p><font size=+1><b>Generic Attributes    </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The genattr field of an item, if non-nil, points to a structure
-    that holds the values of attributes not specific to any particular
-    item type, as they occur on a wide variety of underlying HTML
-    tags. The structure is as follows: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Genattr Genattr;<br>
-    struct Genattr<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;id;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;class;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;style;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;title;<br>
-        SEvent* events;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    Fields <tt><font size=+1>id</font></tt>, <tt><font size=+1>class</font></tt>, <tt><font size=+1>style</font></tt> and <tt><font size=+1>title</font></tt>, when non-nil, contain values
-    of correspondingly named attributes of the HTML tag associated
-    with this item. <tt><font size=+1>Events</font></tt> is a linked list of events (with corresponding
-    scripted actions) associated with the item: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct SEvent SEvent;<br>
-    struct SEvent<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        SEvent* next;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;script;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    Here, <tt><font size=+1>next</font></tt> points to the next event in the list, <tt><font size=+1>type</font></tt> is one of
-    <tt><font size=+1>SEonblur</font></tt>, <tt><font size=+1>SEonchange</font></tt>, <tt><font size=+1>SEonclick</font></tt>, <tt><font size=+1>SEondblclick</font></tt>, <tt><font size=+1>SEonfocus</font></tt>, <tt><font size=+1>SEonkeypress</font></tt>,
-    <tt><font size=+1>SEonkeyup</font></tt>, <tt><font size=+1>SEonload</font></tt>, <tt><font size=+1>SEonmousedown</font></tt>, <tt><font size=+1>SEonmousemove</font></tt>, <tt><font size=+1>SEonmouseout</font></tt>,
-    <tt><font size=+1>SEonmouseover</font></tt>, <tt><font size=+1>SEonmouseup</font></tt>, <tt><font size=+1>SEonreset</font></tt>, <tt><font size=+1>SEonselect</font></tt>,
-    <tt><font size=+1>SEonsubmit</font></tt> or <tt><font size=+1>SEonunload</font></tt>, and <tt><font size=+1>script</font></tt> is the text of the associated
-    script.<br>
-    <p><font size=+1><b>Dimension Specifications    </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Some structures include a dimension specification, used where
-    a number can be followed by a <tt><font size=+1>%</font></tt> or a <tt><font size=+1>*</font></tt> to indicate percentage
-    of total or relative weight. This is encoded using the following
-    structure: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Dimen Dimen;<br>
-    struct Dimen<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        int kindspec;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    Separate kind and spec values are extracted using <i>dimenkind</i> and
-    <i>dimenspec</i>. <i>Dimenkind</i> returns one of <tt><font size=+1>Dnone</font></tt>, <tt><font size=+1>Dpixels</font></tt>, <tt><font size=+1>Dpercent</font></tt> or
-    <tt><font size=+1>Drelative</font></tt>. <tt><font size=+1>Dnone</font></tt> means that no dimension was specified. In all
-    other cases, <i>dimenspec</i> should be called to find the absolute number
-    of pixels, the percentage of total, or the
-    relative weight.<br>
-    <p><font size=+1><b>Background Specifications    </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    It is possible to set the background of the entire document, and
-    also for some parts of the document (such as tables). This is
-    encoded as follows: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Background Background;<br>
-    struct Background<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Rune* image;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;color;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Image</font></tt>, if non-nil, is the URL of an image to use as the background.
-    If this is nil, <tt><font size=+1>color</font></tt> is used instead, as the RGB value for a
-    solid fill color.<br>
-    <p><font size=+1><b>Alignment Specifications    </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Certain items have alignment specifiers taken from the following
-    enumerated type: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>enum<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        ALnone = 0, ALleft, ALcenter, ALright, ALjustify,<br>
-        ALchar, ALtop, ALmiddle, ALbottom, ALbaseline<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    These values correspond to the various alignment types named in
-    the HTML 4.0 standard. If an item has an alignment of <tt><font size=+1>ALleft</font></tt> or
-    <tt><font size=+1>ALright</font></tt>, the library automatically encapsulates it inside a float
-    item. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Tables, and the various rows, columns and cells within them, have
-    a more complex alignment specification, composed of separate vertical
-    and horizontal alignments: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Align Align;<br>
-    struct Align<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        uchar halign;<br>
-        uchar valign;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Halign</font></tt> can be one of <tt><font size=+1>ALnone</font></tt>, <tt><font size=+1>ALleft</font></tt>, <tt><font size=+1>ALcenter</font></tt>, <tt><font size=+1>ALright</font></tt>, <tt><font size=+1>ALjustify</font></tt>
-    or <tt><font size=+1>ALchar</font></tt>. <tt><font size=+1>Valign</font></tt> can be one of <tt><font size=+1>ALnone</font></tt>, <tt><font size=+1>ALmiddle</font></tt>, <tt><font size=+1>ALbottom</font></tt>, <tt><font size=+1>ALtop</font></tt>
-    or <tt><font size=+1>ALbaseline</font></tt>.<br>
-    <p><font size=+1><b>Font Numbers    </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Text items have an associated font number (the <tt><font size=+1>fnt</font></tt> field), which
-    is encoded as <tt><font size=+1>style*NumSize+size</font></tt>. Here, <tt><font size=+1>style</font></tt> is one of <tt><font size=+1>FntR</font></tt>,
-    <tt><font size=+1>FntI</font></tt>, <tt><font size=+1>FntB</font></tt> or <tt><font size=+1>FntT</font></tt>, for roman, italic, bold and typewriter font
-    styles, respectively, and size is <tt><font size=+1>Tiny</font></tt>, <tt><font size=+1>Small</font></tt>, <tt><font size=+1>Normal</font></tt>, <tt><font size=+1>Large</font></tt> or
-    <tt><font size=+1>Verylarge</font></tt>. The total number of possible
-    font numbers is <tt><font size=+1>NumFnt</font></tt>, and the default font number is <tt><font size=+1>DefFnt</font></tt>
-    (which is roman style, normal size).<br>
-    <p><font size=+1><b>Document Info    </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Global information about an HTML page is stored in the following
-    structure: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Docinfo Docinfo;<br>
-    struct Docinfo<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        // stuff from HTTP headers, doc head, and body tag<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doctitle;<br>
-        Background &nbsp;&nbsp;&nbsp;background;<br>
-        Iimage* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backgrounditem;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vlink;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alink;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chset;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mediatype;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scripttype;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasscripts;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;refresh;<br>
-        Kidinfo* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kidinfo;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frameid;<br>
-        // info needed to respond to user actions<br>
-        Anchor* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anchors;<br>
-        DestAnchor* dests;<br>
-        Form* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;forms;<br>
-        Table* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tables;<br>
-        Map* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maps;<br>
-        Iimage* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;images;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Src</font></tt> gives the URL of the original source of the document, and
-    <tt><font size=+1>base</font></tt> is the base URL. <tt><font size=+1>Doctitle</font></tt> is the document&#8217;s title, as set
-    by a <tt><font size=+1>&lt;title&gt;</font></tt> element. <tt><font size=+1>Background</font></tt> is as described in the section
-    <i>Background Specifications</i>, and <tt><font size=+1>backgrounditem</font></tt> is set to be an
-    image item for the document&#8217;s background image
-    (if given as a URL), or else nil. <tt><font size=+1>Text</font></tt> gives the default foregound
-    text color of the document, <tt><font size=+1>link</font></tt> the unvisited hyperlink color,
-    <tt><font size=+1>vlink</font></tt> the visited hyperlink color, and <tt><font size=+1>alink</font></tt> the color for highlighting
-    hyperlinks (all in 24-bit RGB format). <tt><font size=+1>Target</font></tt> is the default target
-    frame id. <tt><font size=+1>Chset</font></tt> and <tt><font size=+1>mediatype</font></tt> are as for
-    the <i>chset</i> and <i>mtype</i> parameters to <i>parsehtml</i>. <tt><font size=+1>Scripttype</font></tt> is the
-    type of any scripts contained in the document, and is always <tt><font size=+1>TextJavascript</font></tt>.
-    <tt><font size=+1>Hasscripts</font></tt> is set if the document contains any scripts. Scripting
-    is currently unsupported. <tt><font size=+1>Refresh</font></tt> is the contents of a <tt><font size=+1>&lt;meta http&#8722;equiv=Refresh
-    ...&gt;</font></tt> tag, if any. <tt><font size=+1>Kidinfo</font></tt> is set if this document is a frameset
-    (see section <i>Frames</i>). <tt><font size=+1>Frameid</font></tt> is this document&#8217;s frame id. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>Anchors</font></tt> is a list of hyperlinks contained in the document, and
-    <tt><font size=+1>dests</font></tt> is a list of hyperlink destinations within the page (see
-    the following section for details). <tt><font size=+1>Forms</font></tt>, <tt><font size=+1>tables</font></tt> and <tt><font size=+1>maps</font></tt> are
-    lists of the various forms, tables and client-side maps contained
-    in the document, as described in subsequent sections.
-    <tt><font size=+1>Images</font></tt> is a list of all the image items in the document.<br>
-    <p><font size=+1><b>Anchors     </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The library builds two lists for all of the <tt><font size=+1>&lt;a&gt;</font></tt> elements (anchors)
-    in a document. Each anchor is assigned a unique anchor id within
-    the document. For anchors which are hyperlinks (the <tt><font size=+1>href</font></tt> attribute
-    was supplied), the following structure is defined: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Anchor Anchor;<br>
-    struct Anchor<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Anchor* next;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;name;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;href;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Next</font></tt> points to the next anchor in the list (the head of this list
-    is <tt><font size=+1>Docinfo.anchors</font></tt>). <tt><font size=+1>Index</font></tt> is the anchor id; each item within
-    this hyperlink is tagged with this value in its <tt><font size=+1>anchorid</font></tt> field.
-    <tt><font size=+1>Name</font></tt> and <tt><font size=+1>href</font></tt> are the values of the correspondingly named attributes
-    of the anchor (in particular, href is the URL to go
-    to). <tt><font size=+1>Target</font></tt> is the value of the target attribute (if provided)
-    converted to a frame id. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Destinations within the document (anchors with the name attribute
-    set) are held in the <tt><font size=+1>Docinfo.dests</font></tt> list, using the following structure:
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct DestAnchor DestAnchor;<br>
-    struct DestAnchor<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        DestAnchor* next;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name;<br>
-        Item* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Next</font></tt> is the next element of the list, <tt><font size=+1>index</font></tt> is the anchor id,
-    <tt><font size=+1>name</font></tt> is the value of the name attribute, and <tt><font size=+1>item</font></tt> is points to
-    the item within the parsed document that should be considered
-    to be the destination.<br>
-    <p><font size=+1><b>Forms     </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Any forms within a document are kept in a list, headed by <tt><font size=+1>Docinfo.forms</font></tt>.
-    The elements of this list are as follows: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Form Form;<br>
-    struct Form<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Form* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formid;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nfields;<br>
-        Formfield* fields;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Next</font></tt> points to the next form in the list. <tt><font size=+1>Formid</font></tt> is a serial number
-    for the form within the document. <tt><font size=+1>Name</font></tt> is the value of the form&#8217;s
-    name or id attribute. <tt><font size=+1>Action</font></tt> is the value of any action attribute.
-    <tt><font size=+1>Target</font></tt> is the value of the target attribute (if any) converted
-    to a frame target id. <tt><font size=+1>Method</font></tt> is one of <tt><font size=+1>HGet</font></tt> or
-    <tt><font size=+1>HPost</font></tt>. <tt><font size=+1>Nfields</font></tt> is the number of fields in the form, and <tt><font size=+1>fields</font></tt>
-    is a linked list of the actual fields. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The individual fields in a form are described by the following
-    structure: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Formfield Formfield;<br>
-    struct Formfield<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Formfield* next;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftype;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldid;<br>
-        Form* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxlength;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rows;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cols;<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags;<br>
-        Option* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options;<br>
-        Item* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctlid;<br>
-        SEvent* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;events;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    Here, <tt><font size=+1>next</font></tt> points to the next field in the list. <tt><font size=+1>Ftype</font></tt> is the
-    type of the field, which can be one of <tt><font size=+1>Ftext</font></tt>, <tt><font size=+1>Fpassword</font></tt>, <tt><font size=+1>Fcheckbox</font></tt>,
-    <tt><font size=+1>Fradio</font></tt>, <tt><font size=+1>Fsubmit</font></tt>, <tt><font size=+1>Fhidden</font></tt>, <tt><font size=+1>Fimage</font></tt>, <tt><font size=+1>Freset</font></tt>, <tt><font size=+1>Ffile</font></tt>, <tt><font size=+1>Fbutton</font></tt>, <tt><font size=+1>Fselect</font></tt>
-    or <tt><font size=+1>Ftextarea</font></tt>. <tt><font size=+1>Fieldid</font></tt> is a serial number for the field within
-    the form. <tt><font size=+1>Form</font></tt> points back
-    to the form containing this field. <tt><font size=+1>Name</font></tt>, <tt><font size=+1>value</font></tt>, <tt><font size=+1>size</font></tt>, <tt><font size=+1>maxlength</font></tt>,
-    <tt><font size=+1>rows</font></tt> and <tt><font size=+1>cols</font></tt> each contain the values of corresponding attributes
-    of the field, if present. <tt><font size=+1>Flags</font></tt> contains per-field flags, of which
-    <tt><font size=+1>FFchecked</font></tt> and <tt><font size=+1>FFmultiple</font></tt> are defined. <tt><font size=+1>Image</font></tt> is only used for fields
-    of type <tt><font size=+1>Fimage</font></tt>; it points to an
-    image item containing the image to be displayed. <tt><font size=+1>Ctlid</font></tt> is reserved
-    for use by the caller, typically to store a unique id of an associated
-    control used to implement the field. <tt><font size=+1>Events</font></tt> is the same as the
-    corresponding field of the generic attributes associated with
-    the item containing this field. <tt><font size=+1>Options</font></tt> is only used by
-    fields of type <tt><font size=+1>Fselect</font></tt>; it consists of a list of possible options
-    that may be selected for that field, using the following structure:
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Option Option;<br>
-    struct Option<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Option* next;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selected;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;value;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;display;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Next</font></tt> points to the next element of the list. <tt><font size=+1>Selected</font></tt> is set if
-    this option is to be displayed initially. <tt><font size=+1>Value</font></tt> is the value to
-    send when the form is submitted if this option is selected. <tt><font size=+1>Display</font></tt>
-    is the string to display on the screen for this option.<br>
-    <p><font size=+1><b>Tables     </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The library builds a list of all the tables in the document, headed
-    by <tt><font size=+1>Docinfo.tables</font></tt>. Each element of this list has the following
-    format: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Table Table;<br>
-    struct Table<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Table* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tableid;<br>
-        Tablerow* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rows;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nrow;<br>
-        Tablecol* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cols;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ncol;<br>
-        Tablecell* &nbsp;&nbsp;&nbsp;&nbsp;cells;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ncell;<br>
-        Tablecell*** grid;<br>
-        Align &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;align;<br>
-        Dimen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cellspacing;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cellpadding;<br>
-        Background &nbsp;&nbsp;&nbsp;&nbsp;background;<br>
-        Item* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;caption;<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;caption_place;<br>
-        Lay* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;caption_lay;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;totw;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toth;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;caph;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;availw;<br>
-        Token* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabletok;<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Next</font></tt> points to the next element in the list of tables. <tt><font size=+1>Tableid</font></tt>
-    is a serial number for the table within the document. <tt><font size=+1>Rows</font></tt> is
-    an array of row specifications (described below) and <tt><font size=+1>nrow</font></tt> is the
-    number of elements in this array. Similarly, <tt><font size=+1>cols</font></tt> is an array
-    of column specifications, and <tt><font size=+1>ncol</font></tt> the size of this array.
-    <tt><font size=+1>Cells</font></tt> is a list of all cells within the table (structure described
-    below) and <tt><font size=+1>ncell</font></tt> is the number of elements in this list. Note
-    that a cell may span multiple rows and/or columns, thus <tt><font size=+1>ncell</font></tt>
-    may be smaller than <tt><font size=+1>nrow*ncol</font></tt>. <tt><font size=+1>Grid</font></tt> is a two-dimensional array
-    of cells within the table; the cell at row <tt><font size=+1>i</font></tt> and column <tt><font size=+1>j</font></tt> is
-    <tt><font size=+1>Table.grid[i][j]</font></tt>. A cell that spans multiple rows and/or columns
-    will be referenced by <tt><font size=+1>grid</font></tt> multiple times, however it will only
-    occur once in <tt><font size=+1>cells</font></tt>. <tt><font size=+1>Align</font></tt> gives the alignment specification for
-    the entire table, and <tt><font size=+1>width</font></tt> gives the requested width as a dimension
-    specification. <tt><font size=+1>Border</font></tt>, <tt><font size=+1>cellspacing
-    </font></tt>and <tt><font size=+1>cellpadding</font></tt> give the values of the corresponding attributes
-    for the table, and <tt><font size=+1>background</font></tt> gives the requested background for
-    the table. <tt><font size=+1>Caption</font></tt> is a linked list of items to be displayed as
-    the caption of the table, either above or below depending on whether
-    <tt><font size=+1>caption_place</font></tt> is <tt><font size=+1>ALtop</font></tt> or <tt><font size=+1>ALbottom</font></tt>.
-    Most of the remaining fields are reserved for use by the caller,
-    except <tt><font size=+1>tabletok</font></tt>, which is reserved for internal use. The type
-    <tt><font size=+1>Lay</font></tt> is not defined by the library; the caller can provide its
-    own definition. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>Tablecol</font></tt> structure is defined for use by the caller. The library
-    ensures that the correct number of these is allocated, but leaves
-    them blank. The fields are as follows: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Tablecol Tablecol;<br>
-    struct Tablecol<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        int &nbsp;&nbsp;&nbsp;&nbsp;width;<br>
-        Align align;<br>
-        Point pos;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    The rows in the table are specified as follows: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Tablerow Tablerow;<br>
-    struct Tablerow<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Tablerow* &nbsp;&nbsp;&nbsp;next;<br>
-        Tablecell* cells;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascent;<br>
-        Align &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;align;<br>
-        Background background;<br>
-        Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos;<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Next</font></tt> is only used during parsing; it should be ignored by the
-    caller. <tt><font size=+1>Cells</font></tt> provides a list of all the cells in a row, linked
-    through their <tt><font size=+1>nextinrow</font></tt> fields (see below). <tt><font size=+1>Height</font></tt>, <tt><font size=+1>ascent</font></tt> and
-    <tt><font size=+1>pos</font></tt> are reserved for use by the caller. <tt><font size=+1>Align</font></tt> is the alignment
-    specification for the row, and <tt><font size=+1>background</font></tt> is the
-    background to use, if specified. <tt><font size=+1>Flags</font></tt> is used by the parser;
-    ignore this field. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The individual cells of the table are described as follows: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Tablecell Tablecell;<br>
-    struct Tablecell<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Tablecell* next;<br>
-        Tablecell* nextinrow;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cellid;<br>
-        Item* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content;<br>
-        Lay* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lay;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowspan;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;colspan;<br>
-        Align &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;align;<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags;<br>
-        Dimen &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wspec;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hspec;<br>
-        Background background;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minw;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxw;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascent;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col;<br>
-        Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Next</font></tt> is used to link together the list of all cells within a table
-    (<tt><font size=+1>Table.cells</font></tt>), whereas <tt><font size=+1>nextinrow</font></tt> is used to link together all
-    the cells within a single row (<tt><font size=+1>Tablerow.cells</font></tt>). <tt><font size=+1>Cellid</font></tt> provides
-    a serial number for the cell within the table. <tt><font size=+1>Content</font></tt> is a linked
-    list of the items to be laid out within the cell. <tt><font size=+1>Lay
-    </font></tt>is reserved for the user to describe how these items have been
-    laid out. <tt><font size=+1>Rowspan</font></tt> and <tt><font size=+1>colspan</font></tt> are the number of rows and columns
-    spanned by this cell, respectively. <tt><font size=+1>Align</font></tt> is the alignment specification
-    for the cell. <tt><font size=+1>Flags</font></tt> is some combination of <tt><font size=+1>TFparsing</font></tt>, <tt><font size=+1>TFnowrap</font></tt>
-    and <tt><font size=+1>TFisth</font></tt> or&#8217;d together. Here
-    <tt><font size=+1>TFparsing</font></tt> is used internally by the parser, and should be ignored.
-    <tt><font size=+1>TFnowrap</font></tt> means that the contents of the cell should not be wrapped
-    if they don&#8217;t fit the available width, rather, the table should
-    be expanded if need be (this is set when the nowrap attribute
-    is supplied). <tt><font size=+1>TFisth</font></tt> means that the cell was created
-    by the <tt><font size=+1>&lt;th&gt;</font></tt> element (rather than the <tt><font size=+1>&lt;td&gt;</font></tt> element), indicating that
-    it is a header cell rather than a data cell. <tt><font size=+1>Wspec</font></tt> provides a
-    suggested width as a dimension specification, and <tt><font size=+1>hspec</font></tt> provides
-    a suggested height in pixels. <tt><font size=+1>Background</font></tt> gives a background specification
-    for the individual cell. <tt><font size=+1>Minw</font></tt>, <tt><font size=+1>maxw</font></tt>,
-    <tt><font size=+1>ascent</font></tt> and <tt><font size=+1>pos</font></tt> are reserved for use by the caller during layout.
-    <tt><font size=+1>Row</font></tt> and <tt><font size=+1>col</font></tt> give the indices of the row and column of the top
-    left-hand corner of the cell within the table grid.<br>
-    <p><font size=+1><b>Client-side Maps    </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The library builds a list of client-side maps, headed by <tt><font size=+1>Docinfo.maps</font></tt>,
-    and having the following structure: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Map Map;<br>
-    struct Map<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Map* &nbsp;&nbsp;&nbsp;next;<br>
-        Rune* name;<br>
-        Area* areas;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Next</font></tt> points to the next element in the list, <tt><font size=+1>name</font></tt> is the name
-    of the map (use to bind it to an image), and <tt><font size=+1>areas</font></tt> is a list of
-    the areas within the image that comprise the map, using the following
-    structure: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Area Area;<br>
-    struct Area<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Area* &nbsp;&nbsp;&nbsp;next;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape;<br>
-        Rune* &nbsp;&nbsp;&nbsp;href;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target;<br>
-        Dimen* coords;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ncoords;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Next</font></tt> points to the next element in the map&#8217;s list of areas. <tt><font size=+1>Shape</font></tt>
-    describes the shape of the area, and is one of <tt><font size=+1>SHrect</font></tt>, <tt><font size=+1>SHcircle</font></tt>
-    or <tt><font size=+1>SHpoly</font></tt>. <tt><font size=+1>Href</font></tt> is the URL associated with this area in its role
-    as a hypertext link, and <tt><font size=+1>target</font></tt> is the target frame it should
-    be loaded in. <tt><font size=+1>Coords</font></tt> is an array of coordinates for
-    the shape, and <tt><font size=+1>ncoords</font></tt> is the size of this array (number of elements).<br>
-    <p><font size=+1><b>Frames     </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If the <tt><font size=+1>Docinfo.kidinfo</font></tt> field is set, the document is a frameset.
-    In this case, it is typical for <i>parsehtml</i> to return nil, as a
-    document which is a frameset should have no actual items that
-    need to be laid out (such will appear only in subsidiary documents).
-    It is possible that items will be returned by a malformed
-    document; the caller should check for this and free any such items.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>Kidinfo</font></tt> structure itself reflects the fact that framesets
-    can be nested within a document. If is defined as follows: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Kidinfo Kidinfo;<br>
-    struct Kidinfo<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Kidinfo* next;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isframeset;<br>
-        // fields for &quot;frame&quot;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src;<br>
-        Rune* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;marginw;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;marginh;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;framebd;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags;<br>
-        // fields for &quot;frameset&quot;<br>
-        Dimen* &nbsp;&nbsp;&nbsp;&nbsp;rows;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nrows;<br>
-        Dimen* &nbsp;&nbsp;&nbsp;&nbsp;cols;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ncols;<br>
-        Kidinfo* kidinfos;<br>
-        Kidinfo* nextframeset;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Next</font></tt> is only used if this structure is part of a containing frameset;
-    it points to the next element in the list of children of that
-    frameset. <tt><font size=+1>Isframeset</font></tt> is set when this structure represents a frameset;
-    if clear, it is an individual frame. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Some fields are used only for framesets. <tt><font size=+1>Rows</font></tt> is an array of dimension
-    specifications for rows in the frameset, and <tt><font size=+1>nrows</font></tt> is the length
-    of this array. <tt><font size=+1>Cols</font></tt> is the corresponding array for columns, of
-    length <tt><font size=+1>ncols</font></tt>. <tt><font size=+1>Kidinfos</font></tt> points to a list of components contained
-    within this frameset, each of which may be a
-    frameset or a frame. <tt><font size=+1>Nextframeset</font></tt> is only used during parsing,
-    and should be ignored. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The remaining fields are used if the structure describes a frame,
-    not a frameset. <tt><font size=+1>Src</font></tt> provides the URL for the document that should
-    be initially loaded into this frame. Note that this may be a relative
-    URL, in which case it should be interpretted using the containing
-    document&#8217;s URL as the base. <tt><font size=+1>Name</font></tt> gives the name of
-    the frame, typically supplied via a name attribute in the HTML.
-    If no name was given, the library allocates one. <tt><font size=+1>Marginw</font></tt>, <tt><font size=+1>marginh</font></tt>
-    and <tt><font size=+1>framebd</font></tt> are the values of the marginwidth, marginheight and
-    frameborder attributes, respectively. <tt><font size=+1>Flags</font></tt> can contain some combination
-    of the following: <tt><font size=+1>FRnoresize</font></tt> (the
-    frame had the noresize attribute set, and the user should not
-    be allowed to resize it), <tt><font size=+1>FRnoscroll</font></tt> (the frame should not have
-    any scroll bars), <tt><font size=+1>FRhscroll</font></tt> (the frame should have a horizontal
-    scroll bar), <tt><font size=+1>FRvscroll</font></tt> (the frame should have a vertical scroll
-    bar), <tt><font size=+1>FRhscrollauto</font></tt> (the frame should be automatically
-    given a horizontal scroll bar if its contents would not otherwise
-    fit), and <tt><font size=+1>FRvscrollauto</font></tt> (the frame gets a vertical scrollbar only
-    if required).<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libhtml<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/fmt.html"><i>fmt</i>(1)</a> 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    W3C World Wide Web Consortium, &#8220;HTML 4.01 Specification&#8221;.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The entire HTML document must be loaded into memory before any
-    of it can be parsed.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/index.html b/man/man3/index.html
deleted file mode 100644
index 90e8d3c..0000000
--- a/man/man3/index.html
+++ /dev/null
@@ -1,647 +0,0 @@
-<html>
-<head>
-<title>Manual Section 3 - Plan 9 from User Space</title>
-</head>
-<body>
-<table width=100%>
-<tr><td width=20><td>
-<center>
-<table border=0 cellspacing=0 cellpadding=0 width=100%>
-<tr height=1><td width=200><td>
-<tr><td colspan=2>
-	<center>
-	<b>Manual Section 3 - Plan 9 from User Space</b>
-	</center>
-<tr height=10><td>
-<tr><td valign=top><a href="intro.html">intro(3)</a><td>intro &ndash; introduction to library functions
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="9p.html">9p(3)</a><td>Srv
-dirread9p
-emalloc9p
-erealloc9p
-estrdup9p
-postfd
-postmountsrv
-readbuf
-readstr
-respond
-srv
-threadpostmountsrv
-walkandclone &ndash; 9P file service
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="9p-cmdbuf.html">9p-cmdbuf(3)</a><td>Cmdbuf, parsecmd, respondcmderror, lookupcmd &ndash; control message parsing
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="9p-fid.html">9p-fid(3)</a><td>Fid, Fidpool, allocfidpool, freefidpool, allocfid, closefid, lookupfid, removefid
-Req, Reqpool, allocreqpool, freereqpool, allocreq, closereq, lookupreq, removereq &ndash; 9P fid, request tracking
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="9p-file.html">9p-file(3)</a><td>Tree, alloctree, freetree
-File, createfile, closefile, removefile, walkfile
-opendirfile, readdirfile, closedirfile, hasperm &ndash; in-memory file hierarchy
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="9p-intmap.html">9p-intmap(3)</a><td>Intmap, allocmap, freemap, insertkey, caninsertkey, lookupkey
-deletekey &ndash; integer to data structure maps
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="9pclient.html">9pclient(3)</a><td>CFid, CFsys, fsinit, fsmount, fsroot, fssetroot, fsunmount, nsmount, fsversion, fsauth, fsattach, fsclose, fscreate, fsdirread, fsdirreadall, fsdirstat, fsdirfstat, fsdirwstat, fsdirfwstat, fsopen, fsopenfd, fspread, fspwrite, fsread, fsreadn, fswrite &ndash; 9P client library
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="addpt.html">addpt(3)</a><td>addpt, subpt, mulpt, divpt, rectaddpt, rectsubpt, insetrect, canonrect, eqpt, eqrect, ptinrect, rectinrect, rectXrect, rectclip, combinerect, Dx, Dy, Pt, Rect, Rpt &ndash; arithmetic on points and rectangles
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="aes.html">aes(3)</a><td>setupAESstate, aesCBCencrypt, aesCBCdecrypt - advanced encryption standard (rijndael)
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="allocimage.html">allocimage(3)</a><td>allocimage, allocimagemix, freeimage, nameimage, namedimage, setalpha, loadimage, cloadimage, unloadimage, readimage, writeimage, bytesperline, wordsperline &ndash; allocating, freeing, reading, writing images
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="arg.html">arg(3)</a><td>ARGBEGIN, ARGEND, ARGC, ARGF, EARGF, arginit, argopt &ndash; process option letters from argv
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="arith3.html">arith3(3)</a><td>add3, sub3, neg3, div3, mul3, eqpt3, closept3, dot3, cross3, len3, dist3, unit3, midpt3, lerp3, reflect3, nearseg3, pldist3, vdiv3, vrem3, pn2f3, ppp2f3, fff2p3, pdiv4, add4, sub4 &ndash; operations on 3-d points and planes
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="atof.html">atof(3)</a><td>atof, atoi, atol, atoll, charstod, strtod, strtol, strtoll, strtoul, strtoull &ndash; convert text to numbers
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="bin.html">bin(3)</a><td>binalloc, bingrow, binfree &ndash; grouped memory allocation
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="bio.html">bio(3)</a><td>Bopen, Bfdopen, Binit, Binits, Brdline, Brdstr, Bgetc, Bgetrune, Bgetd, Bungetc, Bungetrune, Bread, Bseek, Boffset, Bfildes, Blinelen, Bputc, Bputrune, Bprint, Bvprint, Bwrite, Bflush, Bterm, Bbuffered &ndash; buffered input/output
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="blowfish.html">blowfish(3)</a><td>setupBFstate, bfCBCencrypt, bfCBCdecrypt, bfECBencrypt, bfECBdecrypt  - blowfish encryption
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="cachechars.html">cachechars(3)</a><td>cachechars, agefont, loadchar, Subfont, Fontchar, Font  &ndash; font utilities
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="cleanname.html">cleanname(3)</a><td>cleanname &ndash; clean a path name
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="color.html">color(3)</a><td>cmap2rgb, cmap2rgba, rgb2cmap &ndash; colors and color maps
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="complete.html">complete(3)</a><td>complete, freecompletion &ndash; file name completion
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="cputime.html">cputime(3)</a><td>cputime, times &ndash; cpu time in this process and children
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="ctime.html">ctime(3)</a><td>ctime, localtime, gmtime, asctime, tm2sec, timezone &ndash; convert date and time
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="des.html">des(3)</a><td>setupDESstate, des_key_setup, block_cipher, desCBCencrypt, desCBCdecrypt, desECBencrypt, desECBdecrypt, des3CBCencrypt, des3CBCdecrypt, des3ECBencrypt, des3ECBdecrypt, key_setup, des56to64, des64to56, setupDES3state, triple_block_cipher,  - single and triple digital encryption standard
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="dial.html">dial(3)</a><td>dial, announce, listen, accept, reject, netmkaddr, dialparse &ndash; make and break network connections
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="dirread.html">dirread(3)</a><td>dirread, dirreadall &ndash; read directory
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="draw.html">draw(3)</a><td>Image, draw, drawop, gendraw, gendrawop, drawreplxy, drawrepl
-replclipr, line, lineop, poly, polyop, fillpoly, fillpolyop, bezier, bezierop
-bezspline, bezsplineop, bezsplinepts, fillbezier, fillbezierop
-fillbezspline, fillbezsplineop, ellipse, ellipseop
-fillellipse, fillellipseop, arc, arcop, fillarc, fillarcop
-icossin, icossin2, border, string, stringop, stringn, stringnop
-runestring, runestringop, runestringn, runestringnop, stringbg
-stringbgop, stringnbg, stringnbgop, runestringbg, runestringbgop
-runestringnbg, runestringnbgop, _string, ARROW, drawsetdebug &ndash; graphics functions
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="dsa.html">dsa(3)</a><td>dsagen, dsasign, dsaverify, dsapuballoc, dsapubfree, dsaprivalloc, dsaprivfree, dsasigalloc, dsasigfree, dsaprivtopub - digital signature algorithm
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="dup.html">dup(3)</a><td>dup &ndash; duplicate an open file descriptor
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="elgamal.html">elgamal(3)</a><td>eggen, egencrypt, egdecrypt, egsign, egverify, egpuballoc, egpubfree, egprivalloc, egprivfree, egsigalloc, egsigfree, egprivtopub - elgamal encryption
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="encode.html">encode(3)</a><td>dec64, enc64, dec32, enc32, dec16, enc16, encodefmt &ndash; encoding byte arrays as strings
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="errstr.html">errstr(3)</a><td>errstr, rerrstr, werrstr &ndash; description of last system call error
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="event.html">event(3)</a><td>event, einit, estart, estartfn, etimer, eread, emouse, ekbd, ecanread, ecanmouse, ecankbd, ereadmouse, eatomouse, eresized, egetrect, edrawgetrect, emenuhit, emoveto, esetcursor, Event, Mouse, Menu &ndash; graphics events
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="exec.html">exec(3)</a><td>exec, execl &ndash; execute a file
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="exits.html">exits(3)</a><td>exits, _exits, atexit, atexitdont, terminate &ndash; terminate process, process cleanup
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="fcall.html">fcall(3)</a><td>Fcall, convS2M, convD2M, convM2S, convM2D, fcallfmt, dirfmt, dirmodefmt, read9pmsg, statcheck, sizeS2M, sizeD2M &ndash; interface to Plan 9 File protocol
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="flate.html">flate(3)</a><td>deflateinit, deflate, deflatezlib, deflateblock, deflatezlibblock, inflateinit, inflate, inflatezlib, inflateblock, inflatezlibblock, flateerr, mkcrctab, blockcrc, adler32 &ndash; deflate compression
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="fmtinstall.html">fmtinstall(3)</a><td>fmtinstall, dofmt, dorfmt, fmtprint, fmtvprint, fmtrune, fmtstrcpy, fmtrunestrcpy, fmtfdinit, fmtfdflush, fmtstrinit, fmtstrflush, runefmtstrinit, runefmtstrflush, errfmt &ndash; support for user-defined print formats and output routines
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="frame.html">frame(3)</a><td>frinit, frsetrects, frinittick, frclear, frcharofpt, frptofchar, frinsert, frdelete, frselect, frtick, frselectpaint, frdrawsel, frdrawsel0, frgetmouse &ndash; frames of text
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="genrandom.html">genrandom(3)</a><td>genrandom, prng &ndash; random number generation
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="get9root.html">get9root(3)</a><td>get9root, unsharp &ndash; get path to root of Plan 9 tree
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="getcallerpc.html">getcallerpc(3)</a><td>getcallerpc &ndash; fetch return PC of current function
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="getenv.html">getenv(3)</a><td>getenv, putenv &ndash; access environment variables
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="getfields.html">getfields(3)</a><td>getfields, gettokens, tokenize &ndash; break a string into fields
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="getns.html">getns(3)</a><td>getns &ndash; get path to name space directory
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="getsnarf.html">getsnarf(3)</a><td>getsnarf, putsnarf &ndash; window system snarf (cut and paste) buffer
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="getuser.html">getuser(3)</a><td>getuser, sysname &ndash; get user or system name
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="getwd.html">getwd(3)</a><td>getwd &ndash; get current directory
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="graphics.html">graphics(3)</a><td>Display, Point, Rectangle, Cursor, initdraw, geninitdraw, drawerror, initdisplay, closedisplay, getdefont, getwindow, gengetwindow, flushimage, bufimage, lockdisplay, unlockdisplay, cursorswitch, cursorset, openfont, buildfont, freefont, Pfmt, Rfmt, strtochan, chantostr, chantodepth &ndash; interactive graphics
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="html.html">html(3)</a><td>parsehtml
-printitems
-validitems
-freeitems
-freedocinfo
-dimenkind
-dimenspec
-targetid
-targetname
-fromStr
-toStr
-&ndash; HTML parser
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="ioproc.html">ioproc(3)</a><td>closeioproc
-iocall
-ioclose
-iointerrupt
-iodial
-ioopen
-ioproc
-ioread
-ioread9pmsg
-ioreadn
-iorecvfd
-iosendfd
-iosleep
-iowrite &ndash; slave I/O processes for threaded programs
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="ip.html">ip(3)</a><td>eipfmt, parseip, parseipmask, v4parseip, v4parsecidr, parseether, myipaddr, myetheraddr, maskip, equivip, defmask, isv4, v4tov6, v6tov4, nhgetl, nhgets, nhgetv, hnputl, hnputs, hnputv, ptclbsum, readipifc &ndash; Internet protocol
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="isalpharune.html">isalpharune(3)</a><td>isalpharune, islowerrune, isspacerune, istitlerune, isupperrune, tolowerrune, totitlerune, toupperrune &ndash; Unicode character classes and cases
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="keyboard.html">keyboard(3)</a><td>initkeyboard, ctlkeyboard, closekeyboard &ndash; keyboard control
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="lock.html">lock(3)</a><td>lock, canlock, unlock
-qlock, canqlock, qunlock
-rlock, canrlock, runlock
-wlock, canwlock, wunlock
-rsleep, rwakeup, rwakeupall
-incref, decref
-&ndash; spin locks, queueing rendezvous locks, reader-writer locks, rendezvous points, and reference counts
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="mach.html">mach(3)</a><td>machbytype, machbyname &ndash; machine-independent access to executables and programs
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="mach-cmd.html">mach-cmd(3)</a><td>attachargs, attachcore, attachdynamic, attachproc, proctextfile &ndash; debugging processes and core files
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="mach-file.html">mach-file(3)</a><td>crackhdr, uncrackhdr, mapfile, unmapfile, mapproc, unmapproc, detachproc, ctlproc
-procnotes &ndash; machine-independent access to exectuable files and running processes
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="mach-map.html">mach-map(3)</a><td>allocmap, addseg, findseg, addrtoseg
-addrtosegafter, removeseg, freemap
-get1, get2, get4, get8
-put1, put2, put4, put8
-rget, rput, fpformat
-locnone, locaddr, locconst, locreg, locindir
-loccmp, loceval, locfmt, locsimplify
-lget1, lget2, lget4, lget8
-lput1, lput2, lput4, lput8 &ndash; machine-independent
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="mach-stack.html">mach-stack(3)</a><td>stacktrace, localaddr, unwindframe, windindex, windreglocs &ndash; stack traces
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="mach-swap.html">mach-swap(3)</a><td>beswap2, beswap4, beswap8, beieeeftoa32, beieeeftoa64, beieeeftoa80
-beload2, beload4, beload8
-leswap2, leswap4, leswap8, leieeeftoa32, leieeeftoa64, leieeeftoa80
-leload2, leload4, leload8, ieeeftoa32, ieeeftoa64 &ndash; machine-independent access to byte-ordered data
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="mach-symbol.html">mach-symbol(3)</a><td>symopen, symclose, findhdr, indexsym, lookupsym, findsym
-findexsym, flookupsym, ffindsym
-lookuplsym, indexlsym, findlsym
-symoff, pc2file, file2pc, line2pc, fnbound, fileline
-pc2line &ndash; symbol table access functions
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="malloc.html">malloc(3)</a><td>malloc, mallocz, free, realloc, calloc, setmalloctag, setrealloctag, getmalloctag, getrealloctag &ndash; memory allocator
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="matrix.html">matrix(3)</a><td>ident, matmul, matmulr, determinant, adjoint, invertmat, xformpoint, xformpointd, xformplane, pushmat, popmat, rot, qrot, scale, move, xform, ixform, persp, look, viewport &ndash; Geometric transformations
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="memdraw.html">memdraw(3)</a><td>Memimage
-Memdata
-Memdrawparam
-memimageinit
-wordaddr
-byteaddr
-memimagemove
-allocmemimage
-allocmemimaged
-readmemimage
-creadmemimage
-writememimage
-freememimage
-memsetchan
-loadmemimage
-cloadmemimage
-unloadmemimage
-memfillcolor
-memarc
-mempoly
-memellipse
-memfillpoly
-memimageline
-memimagedraw
-drawclip
-memlinebbox
-memlineendsize
-allocmemsubfont
-openmemsubfont
-freememsubfont
-memsubfontwidth
-getmemdefont
-memimagestring
-iprint
-hwdraw &ndash; drawing routines for memory-resident images
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="memlayer.html">memlayer(3)</a><td>memdraw, memlalloc, memldelete, memlexpose, memlfree, memlhide, memline, memlnorefresh, memload, memunload, memlorigin, memlsetrefresh, memltofront, memltofrontn, memltorear, memltorearn &ndash; windows of memory-resident images
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="memory.html">memory(3)</a><td>memccpy, memchr, memcmp, memcpy, memmove, memset &ndash; memory operations
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="mouse.html">mouse(3)</a><td>initmouse, readmouse, closemouse, moveto, cursorswitch, getrect, drawgetrect, menuhit, setcursor &ndash; mouse control
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="mousescrollsize.html">mousescrollsize(3)</a><td>mousescrollsize &ndash; compute mouse scroll increment
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="mp.html">mp(3)</a><td>mpsetminbits, mpnew, mpfree, mpbits, mpnorm, mpcopy, mpassign, mprand, strtomp, mpfmt,mptoa, betomp, mptobe, letomp, mptole, mptoui, uitomp, mptoi, itomp, uvtomp, mptouv, vtomp, mptov, mpdigdiv, mpadd, mpsub, mpleft, mpright, mpmul, mpexp, mpmod, mpdiv, mpfactorial, mpcmp, mpextendedgcd, mpinvert, mpsignif, mplowbits0, mpvecdigmuladd, mpvecdigmulsub, mpvecadd, mpvecsub, mpveccmp, mpvecmul, mpmagcmp, mpmagadd, mpmagsub, crtpre, crtin, crtout, crtprefree, crtresfree &ndash; extended precision arithmetic
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="muldiv.html">muldiv(3)</a><td>muldiv, umuldiv &ndash; high-precision multiplication and division
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="mux.html">mux(3)</a><td>Mux, muxinit, muxrpc, muxthreads &ndash; protocol multiplexor
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="nan.html">nan(3)</a><td>NaN, Inf, isNaN, isInf &ndash; not-a-number and infinity functions
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="needstack.html">needstack(3)</a><td>needstack &ndash; check for execution stack overflow
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="notify.html">notify(3)</a><td>notify, noted, atnotify, noteenable, notedisable, notifyon, notifyoff &ndash; handle asynchronous process notification
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="open.html">open(3)</a><td>open, create, close &ndash; open a file for reading or writing, create file
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="opentemp.html">opentemp(3)</a><td>opentemp &ndash; create a uniquely-named file
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="pipe.html">pipe(3)</a><td>pipe &ndash; create an interprocess channel
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="plumb.html">plumb(3)</a><td>eplumb, plumbfree, plumbopen, plumbopenfid, plumbsend, plumbsendtofid, plumbsendtext, plumblookup, plumbpack, plumbpackattr, plumbaddattr, plumbdelattr, plumbrecv, plumbrecvfid, plumbunpack, plumbunpackpartial, plumbunpackattr, Plumbmsg  &ndash; plumb messages
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="post9pservice.html">post9pservice(3)</a><td>post9pservice &ndash; post 9P service for use by clients
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="postnote.html">postnote(3)</a><td>postnote &ndash; send a note to a process or process group
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="prime.html">prime(3)</a><td>genprime, gensafeprime, genstrongprime, DSAprimes, probably_prime, smallprimetest  &ndash; prime number generation
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="print.html">print(3)</a><td>print, fprint, sprint, snprint, seprint, smprint, runesprint, runesnprint, runeseprint, runesmprint, vfprint, vsnprint, vseprint, vsmprint, runevsnprint, runevseprint, runevsmprint &ndash; print formatted output
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="proto.html">proto(3)</a><td>rdproto &ndash; parse and process a proto file listing
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="pushtls.html">pushtls(3)</a><td>pushtls, tlsClient, tlsServer, initThumbprints, freeThumbprints, okThumbprint, readcert, readcertchain &ndash; attach TLS1 or SSL3 encryption to a communication channel
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="qball.html">qball(3)</a><td>qball &ndash; 3-d rotation controller
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="quaternion.html">quaternion(3)</a><td>qtom, mtoq, qadd, qsub, qneg, qmul, qdiv, qunit, qinv, qlen, slerp, qmid, qsqrt &ndash; Quaternion arithmetic
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="quote.html">quote(3)</a><td>quotestrdup, quoterunestrdup, unquotestrdup, unquoterunestrdup, quotestrfmt, quoterunestrfmt, quotefmtinstall, doquote, needsrcquote &ndash; quoted character strings
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="rand.html">rand(3)</a><td>rand, lrand, frand, nrand, lnrand, srand, truerand, ntruerand, fastrand, nfastrand &ndash; random number generator
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="rc4.html">rc4(3)</a><td>setupRC4state, rc4, rc4skip, rc4back  - alleged rc4 encryption
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="read.html">read(3)</a><td>read, readn, write, pread, pwrite &ndash; read or write file
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="regexp.html">regexp(3)</a><td>regcomp, regcomplit, regcompnl, regexec, regsub, rregexec, rregsub, regerror &ndash; regular expression
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="rfork.html">rfork(3)</a><td>rfork &ndash; manipulate process state
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="rsa.html">rsa(3)</a><td>asn1dump
-asn1toRSApriv
-decodepem
-decodepemchain
-rsadecrypt
-rsaencrypt
-rsafill,
-rsagen
-rsaprivalloc
-rsaprivfree
-rsaprivtopub
-rsapuballoc
-rsapubfree
-X509toRSApub
-X509dump
-X509gen
-X509req
-X509verify &ndash; RSA encryption algorithm
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="rune.html">rune(3)</a><td>runetochar, chartorune, runelen, runenlen, fullrune, utfecpy, utflen, utfnlen, utfrune, utfrrune, utfutf &ndash; rune/UTF conversion
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="runestrcat.html">runestrcat(3)</a><td>runestrcat
-runestrncat
-runestrcmp
-runestrncmp
-runestrcpy
-runestrncpy
-runestrecpy
-runestrlen
-runestrchr
-runestrrchr
-runestrdup
-runestrstr &ndash; rune string operations
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="sechash.html">sechash(3)</a><td>md4, md5, sha1, hmac_md5, hmac_sha1, md5pickle, md5unpickle, sha1pickle, sha1unpickle &ndash; cryptographically secure hashes
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="seek.html">seek(3)</a><td>seek &ndash; change file offset
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="sendfd.html">sendfd(3)</a><td>sendfd, recvfd &ndash; pass file descriptors along Unix domain sockets
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="setjmp.html">setjmp(3)</a><td>setjmp, longjmp, notejmp &ndash; non-local goto
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="sleep.html">sleep(3)</a><td>sleep, alarm &ndash; delay, ask for delayed note
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="stat.html">stat(3)</a><td>stat, fstat, wstat, fwstat, dirstat, dirfstat, dirwstat, dirfwstat, nulldir &ndash; get and put file status
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="strcat.html">strcat(3)</a><td>strcat, strncat, strcmp, strncmp, cistrcmp, cistrncmp, strcpy, strncpy, strecpy, strlen, strchr, strrchr, strpbrk, strspn, strcspn, strtok, strdup, strstr, cistrstr &ndash; string operations
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="string.html">string(3)</a><td>s_alloc, s_append, s_array, s_copy, s_error, s_free, s_incref, s_memappend, s_nappend, s_new, s_newalloc, s_parse, s_reset, s_restart, s_terminate, s_tolower, s_putc, s_unique, s_grow, s_read, s_read_line, s_getline, s_allocinstack, s_freeinstack, s_rdinstack &ndash; extensible strings
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="stringsize.html">stringsize(3)</a><td>stringsize, stringwidth, stringnwidth, runestringsize, runestringwidth, runestringnwidth &ndash; graphical size of strings
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="subfont.html">subfont(3)</a><td>allocsubfont, freesubfont, installsubfont, lookupsubfont, uninstallsubfont, subfontname, readsubfont, readsubfonti, writesubfont, stringsubfont, strsubfontwidth, mkfont &ndash; subfont manipulation
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="sysfatal.html">sysfatal(3)</a><td>sysfatal &ndash; system error messages
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="thread.html">thread(3)</a><td>alt
-chancreate
-chanfree
-chaninit
-chanprint
-chansetname
-mainstacksize
-proccreate
-procdata
-recv
-recvp
-recvul
-send
-sendp
-sendul
-nbrecv
-nbrecvp
-nbrecvul
-nbsend
-nbsendp
-nbsendul
-threadcreate
-threaddata
-threadexec
-threadexecl
-threadexits
-threadexitsall
-threadgetgrp
-threadgetname
-threadint
-threadintgrp
-threadkill
-threadkillgrp
-threadmain
-threadnotify
-threadid
-threadpid
-threadsetgrp
-threadsetname
-threadsetstate
-threadspawn
-threadwaitchan
-yield &ndash; thread and proc management
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="time.html">time(3)</a><td>time, nsec &ndash; time in seconds and nanoseconds since epoch
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="udpread.html">udpread(3)</a><td>udpread, udpwrite &ndash; read and write UDP packets
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="wait.html">wait(3)</a><td>await, awaitnohang, awaitfor, wait, waitnohang, waitfor, waitpid &ndash; wait for a process to exit
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="wctl.html">wctl(3)</a><td>drawresizewindow, drawsetlabel, drawtopwindow &ndash; window management
-<tr height=1><td>
-<tr height=1><td colspan=2 bgcolor=#cccccc>
-<tr height=1><td>
-<tr><td valign=top><a href="window.html">window(3)</a><td>Screen, allocscreen, publicscreen, freescreen, allocwindow, bottomwindow, bottomnwindows, topwindow, topnwindows, originwindow &ndash; window management
-</table>
-</center>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<td width=20>
-</table>
-</body>
-</html>
diff --git a/man/man3/intro.html b/man/man3/intro.html
deleted file mode 100644
index f6f4b31..0000000
--- a/man/man3/intro.html
+++ /dev/null
@@ -1,288 +0,0 @@
-<head>
-<title>intro(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>INTRO(3)</b><td align=right><b>INTRO(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    intro &ndash; introduction to library functions<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt; <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include</font></tt> <i>any Unix headers <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </i>
-    <tt><font size=+1>#include &lt;libc.h&gt; <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;auth.h&gt; <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;bio.h&gt; <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;draw.h&gt; <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;fcall.h&gt; <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;frame.h&gt; <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;mach.h&gt; <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;regexp.h&gt; <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;thread.h&gt; <br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    This section describes functions in various libraries. For the
-    most part, each library is defined by a single C include file,
-    such as those listed above, and a single archive file containing
-    the library proper. The name of the archive is <tt><font size=+1>/usr/local/plan9/lib/lib</font></tt><i>x</i><tt><font size=+1>.a</font></tt>,
-    where <i>x</i> is the base of the include file name,
-    stripped of a leading <tt><font size=+1>lib</font></tt> if present. For example, <tt><font size=+1>&lt;draw.h&gt;</font></tt> defines
-    the contents of library <tt><font size=+1>/usr/local/plan9/lib/libdraw.a</font></tt>, which
-    may be abbreviated when named to the loader as <tt><font size=+1>&#8722;ldraw</font></tt>. In practice,
-    each include file contains a magic pragma that directs the loader
-    to pick up the associated archive
-    automatically, so it is rarely necessary to tell the loader which
-    libraries a program needs; see <a href="../man1/9c.html"><i>9c</i>(1)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The library to which a function belongs is defined by the header
-    file that defines its interface. The &#8216;C library&#8217;, <i>libc</i>, contains
-    most of the basic subroutines such as <i>strlen</i>. Declarations for
-    all of these functions are in <tt><font size=+1>&lt;libc.h&gt;</font></tt>, which must be preceded by
-    (<i>needs</i>) an include of <tt><font size=+1>&lt;u.h&gt;</font></tt>. The graphics library, <i>draw</i>, is
-    defined by <tt><font size=+1>&lt;draw.h&gt;</font></tt>, which needs <tt><font size=+1>&lt;libc.h&gt;</font></tt> and <tt><font size=+1>&lt;u.h&gt;</font></tt>. The Buffered I/O
-    library, <i>libbio</i>, is defined by <tt><font size=+1>&lt;bio.h&gt;</font></tt>, which needs <tt><font size=+1>&lt;libc.h&gt;</font></tt> and <tt><font size=+1>&lt;u.h&gt;</font></tt>.
-    The ANSI C Standard I/O library, <i>libstdio</i>, is defined by <tt><font size=+1>&lt;stdio.h&gt;</font></tt>,
-    which needs <tt><font size=+1>&lt;u.h&gt;</font></tt>. There are a few other, less commonly used libraries
-    defined on
-    individual pages of this section. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The include file <tt><font size=+1>&lt;u.h&gt;</font></tt>, a prerequisite of several other include
-    files, declares the architecture-dependent and -independent types,
-    including: <i>uchar</i>, <i>ushort</i>, and <i>ulong</i>, the unsigned integer types;
-    <i>schar</i>, the signed char type; <i>vlong</i> and <i>uvlong</i>, the signed and
-    unsigned very long integral types; <i>Rune</i>, the Unicode
-    character type; <i>u8int</i>, <i>u16int</i>, <i>u32int</i>, and <i>u64int</i>, the unsigned
-    integral types with specific widths; <i>jmp_buf</i>, the type of the
-    argument to <i>setjmp</i> and <i>longjmp</i>, plus macros that define the layout
-    of <i>jmp_buf</i> (see <a href="../man3/setjmp.html"><i>setjmp</i>(3)</a>); and the macros <tt><font size=+1>va_arg</font></tt> and friends
-    for accessing arguments of variadic functions (identical to the
-    macros defined in <tt><font size=+1>&lt;stdarg.h&gt;</font></tt> in ANSI C). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Plan 9 and Unix use many similarly-named functions for different
-    purposes: for example, Plan 9&#8217;s <i>dup</i> is closer to (but not exactly)
-    Unix&#8217;s <i>dup2</i>. To avoid name conflicts, <tt><font size=+1>&lt;libc.h&gt;</font></tt> defines many of these
-    names as preprocessor macros to add a <i>p9</i> prefix, so that <i>dup</i> becomes
-    <i>p9dup</i>. To disable this renaming,
-    <tt><font size=+1>#define NOPLAN9DEFINES</font></tt> before including <tt><font size=+1>&lt;libc.h&gt;</font></tt>. If Unix headers
-    must be included in a program, they should be included after <tt><font size=+1>&lt;u.h&gt;</font></tt>,
-    which sets important preprocessor directives (for example, to
-    enable 64-bit file offsets), but before <tt><font size=+1>&lt;libc.h&gt;</font></tt>, to avoid renaming
-    problems.
-    <p><font size=+1><b>Name space     </b></font><br>
-    Files are collected into a hierarchical organization called a
-    <i>file tree</i> starting in a <i>directory</i> called the <i>root</i>. File names,
-    also called <i>paths</i>, consist of a number of <tt><font size=+1>/</font></tt>-separated <i>path elements</i>
-    with the slashes corresponding to directories. A path element
-    must contain only printable characters (those outside the control
-    spaces of ASCII and Latin-1). A path element cannot contain a
-    slash. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    When a process presents a file name to Plan 9, it is <i>evaluated</i>
-    by the following algorithm. Start with a directory that depends
-    on the first character of the path: <tt><font size=+1>/</font></tt> means the root of the main
-    hierarchy, and anything else means the process&#8217;s current working
-    directory. Then for each path element, look up the element in
-    the directory, advance to that directory, do a possible translation
-    (see below), and repeat. The last step may yield a directory or
-    regular file.<br>
-    <p><font size=+1><b>File I/O     </b></font><br>
-    Files are opened for input or output by <i>open</i> or <i>create</i> (see <a href="../man3/open.html"><i>open</i>(3)</a>).
-    These calls return an integer called a <i>file descriptor</i> which identifies
-    the file to subsequent I/O calls, notably <a href="../man3/read.html"><i>read</i>(3)</a> and <i>write</i>. The
-    system allocates the numbers by selecting the lowest unused descriptor.
-    They are allocated dynamically; there is no
-    visible limit to the number of file descriptors a process may
-    have open. They may be reassigned using <a href="../man3/dup.html"><i>dup</i>(3)</a>. File descriptors
-    are indices into a kernel resident <i>file descriptor table</i>. Each
-    process has an associated file descriptor table. In threaded programs
-    (see <a href="../man3/thread.html"><i>thread</i>(3)</a>), the file descriptor table is shared by all the
-    procs. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    By convention, file descriptor 0 is the standard input, 1 is the
-    standard output, and 2 is the standard error output. With one
-    exception, the operating system is unaware of these conventions;
-    it is permissible to close file 0, or even to replace it by a
-    file open only for writing, but many programs will be confused
-    by such
-    chicanery. The exception is that the system prints messages about
-    broken processes to file descriptor 2. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Files are normally read or written in sequential order. The I/O
-    position in the file is called the <i>file offset</i> and may be set
-    arbitrarily using the <a href="../man3/seek.html"><i>seek</i>(3)</a> system call. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Directories may be opened like regular files. Instead of reading
-    them with <a href="../man3/read.html"><i>read</i>(3)</a>, use the <tt><font size=+1>Dir</font></tt> structure-based routines described
-    in <a href="../man3/dirread.html"><i>dirread</i>(3)</a>. The entry corresponding to an arbitrary file can
-    be retrieved by <i>dirstat</i> (see <a href="../man3/stat.html"><i>stat</i>(3)</a>) or <i>dirfstat</i>; <i>dirwstat</i> and
-    <i>dirfwstat</i> write back entries, thus changing the properties of
-    a
-    file. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    New files are made with <i>create</i> (see <a href="../man3/open.html"><i>open</i>(3)</a>) and deleted with
-    <a href="../man3/remove.html"><i>remove</i>(3)</a>. Directories may not directly be written; <i>create</i>, <i>remove</i>,
-    <i>wstat</i>, and <i>fwstat</i> alter them. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <a href="../man3/Pipe.html"><i>Pipe</i>(3)</a> creates a connected pair of file descriptors, useful for
-    bidirectional local communication.<br>
-    <p><font size=+1><b>Process execution and control     </b></font><br>
-    A new process is created when an existing one calls <a href="../man2/fork.html"><i>fork</i>(2)</a>. The
-    new (child) process starts out with copies of the address space
-    and most other attributes of the old (parent) process. In particular,
-    the child starts out running the same program as the parent; <a href="../man3/exec.html"><i>exec</i>(3)</a>
-    will bring in a different one. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Each process has a unique integer process id; a set of open files,
-    indexed by file descriptor; and a current working directory (changed
-    by <a href="../man2/chdir.html"><i>chdir</i>(2)</a>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Each process has a set of attributes -- memory, open files, name
-    space, etc. -- that may be shared or unique. Flags to <i>rfork</i> control
-    the sharing of these attributes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A process terminates by calling <a href="../man3/exits.html"><i>exits</i>(3)</a>. A parent process may
-    call <a href="../man3/wait.html"><i>wait</i>(3)</a> to wait for some child to terminate. A bit of status
-    information may be passed from <i>exits</i> to <i>wait</i>. On Plan 9, the status
-    information is an arbitrary text string, but on Unix it is a single
-    integer. The Plan 9 interface persists here, although the
-    functionality does not. Instead, empty strings are converted to
-    exit status 0 and non-empty strings to 1. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A process can go to sleep for a specified time by calling <a href="../man3/sleep.html"><i>sleep</i>(3)</a>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    There is a <i>notification</i> mechanism for telling a process about
-    events such as address faults, floating point faults, and messages
-    from other processes. A process uses <a href="../man3/notify.html"><i>notify</i>(3)</a> to register the
-    function to be called (the <i>notification handler</i>) when such events
-    occur.<br>
-    <p><font size=+1><b>Multithreading     </b></font><br>
-    Where possible according to the ANSI C standard, the main C library
-    works properly in multiprocess programs; <i>malloc</i>, <i>print</i>, and the
-    other routines use locks (see <a href="../man3/lock.html"><i>lock</i>(3)</a>) to synchronize access to
-    their data structures. The graphics library defined in <tt><font size=+1>&lt;draw.h&gt;</font></tt>
-    is also multi-process capable; details are in <a href="../man3/graphics.html"><i>graphics</i>(3)</a>.
-    In general, though, multiprocess programs should use some form
-    of synchronization to protect shared data. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The thread library, defined in <tt><font size=+1>&lt;thread.h&gt;</font></tt>, provides support for
-    multiprocess programs. It includes a data structure called a <tt><font size=+1>Channel</font></tt>
-    that can be used to send messages between processes, and coroutine-like
-    <i>threads</i>, which enable multiple threads of control within a single
-    process. The threads within a process
-    are scheduled by the library, but there is no pre-emptive scheduling
-    within a process; thread switching occurs only at communication
-    or synchronization points. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Most programs using the thread library comprise multiple processes
-    communicating over channels, and within some processes, multiple
-    threads. Since I/O calls may block, a system call may block all
-    the threads in a process. Therefore, a program that shouldn&#8217;t
-    block unexpectedly will use a process to serve the I/O
-    request, passing the result to the main processes over a channel
-    when the request completes. For examples of this design, see <a href="../man3/ioproc.html"><i>ioproc</i>(3)</a>
-    or <a href="../man3/mouse.html"><i>mouse</i>(3)</a>.<br>
-    
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/nm.html"><i>nm</i>(1)</a>, <a href="../man1/9c.html"><i>9c</i>(1)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Math functions in <i>libc</i> return special values when the function
-    is undefined for the given arguments or when the value is not
-    representable (see <a href="../man3/nan.html"><i>nan</i>(3)</a>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Some of the functions in <i>libc</i> are system calls and many others
-    employ system calls in their implementation. All system calls
-    return integers, with &ndash;1 indicating that an error occurred; <a href="../man3/errstr.html"><i>errstr</i>(3)</a>
-    recovers a string describing the error. Some user-level library
-    functions also use the <i>errstr</i> mechanism to report errors.
-    Functions that may affect the value of the error string are said
-    to &#8220;set <i>errstr</i>&#8221;; it is understood that the error string is altered
-    only if an error occurs.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/ioproc.html b/man/man3/ioproc.html
deleted file mode 100644
index 092bac9..0000000
--- a/man/man3/ioproc.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<head>
-<title>ioproc(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>IOPROC(3)</b><td align=right><b>IOPROC(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    closeioproc, iocall, ioclose, iointerrupt, iodial, ioopen, ioproc,
-    ioread, ioread9pmsg, ioreadn, iorecvfd, iosendfd, iosleep, iowrite
-    &ndash; slave I/O processes for threaded programs<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;thread.h&gt;<br>
-    typedef struct Ioproc Ioproc;<br>
-    Ioproc* ioproc(void);<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioclose(Ioproc *io, int fd);<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iodial(Ioproc *io, char *addr, char *local, char *dir, char
-    *cdfp);<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioopen(Ioproc *io, char *file, int omode);<br>
-    long &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioread(Ioproc *io, int fd, void *a, long n);<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioread9pmsg(Ioproc *io, int fd, void *a, uint n);<br>
-    long &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioreadn(Ioproc *io, int fd, void *a, long n);<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iorecvfd(int socket);<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iosendfd(int socket, int fd);<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iosleep(int milli);<br>
-    long &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iowrite(Ioproc *io, int fd, void *a, long n);<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iointerrupt(Ioproc *io);<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closeioproc(Ioproc *io);<br>
-    long &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iocall(Ioproc *io, long (*op)(va_list *arg), ...);<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines provide access to I/O in slave procs. Since the
-    I/O itself is done in a slave proc, other threads in the calling
-    proc can run while the calling thread waits for the I/O to complete.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Ioproc</i> forks a new slave proc and returns a pointer to the <tt><font size=+1>Ioproc</font></tt>
-    associated with it. <i>Ioproc</i> uses <i>mallocz</i> and <i>proccreate</i>; if either
-    fails, it calls <i>sysfatal</i> rather than return an error. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Ioclose</i>, <i>iodial</i>, <i>ioopen</i>, <i>ioread</i>, <i>ioread9pmsg</i>, <i>ioreadn</i>, <i>iorecvfd</i>,
-    <i>iosendfd</i>, <i>iosleep</i>, and <i>iowrite</i> execute the similarly named library
-    or system calls (see <a href="../man2/close.html"><i>close</i>(2)</a>, <a href="../man3/dial.html"><i>dial</i>(3)</a>, <a href="../man3/open.html"><i>open</i>(3)</a>, <a href="../man3/read.html"><i>read</i>(3)</a>, <a href="../man3/fcall.html"><i>fcall</i>(3)</a>,
-    <a href="../man3/sendfd.html"><i>sendfd</i>(3)</a>, and <a href="../man3/sleep.html"><i>sleep</i>(3)</a>) in the slave process associated with
-    <i>io</i>. It is an error to execute more than one call at a time in
-    an I/O
-    proc. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Iointerrupt</i> interrupts the call currently executing in the I/O
-    proc. If no call is executing, <i>iointerrupt</i> is a no-op. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Closeioproc</i> terminates the I/O proc and frees the associated <tt><font size=+1>Ioproc
-    . 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <i>Iocall</i> is a primitive that may be used to implement more slave
-    I/O routines. <i>Iocall</i> arranges for <i>op</i> to be called in <i>io</i>&#8217;s proc,
-    with <i>arg</i> set to the variable parameter list, returning the value
-    that <i>op</i> returns.<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Relay messages between two file descriptors, counting the total
-    number of bytes seen:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>int tot;<br>
-        void<br>
-        relaythread(void *v)<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int *fd, n;<br>
-            char buf[1024];<br>
-            Ioproc *io;<br>
-            fd = v;<br>
-            io = ioproc();<br>
-            while((n = ioread(io, fd[0], buf, sizeof buf)) &gt; 0){<br>
-             if(iowrite(io, fd[1], buf, n) != n)<br>
-              sysfatal(&quot;iowrite: %r&quot;);<br>
-             tot += n;<br>
-            }<br>
-            closeioproc(io);<br>
-            
-        </table>
-        }<br>
-        void<br>
-        relay(int fd0, int fd1)<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int fd[4];<br>
-            fd[0] = fd[3] = fd0;<br>
-            fd[1] = fd[2] = fd1;<br>
-            threadcreate(relaythread, fd, 8192);<br>
-            threadcreate(relaythread, fd+2, 8192);<br>
-            
-        </table>
-        }<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    If the two <i>relaythread</i> instances were running in different procs,
-    the common access to <i>tot</i> would be unsafe. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Implement <i>ioread</i>:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>static long<br>
-        _ioread(va_list *arg)<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int fd;<br>
-            void *a;<br>
-            long n;<br>
-            fd = va_arg(*arg, int);<br>
-            a = va_arg(*arg, void*);<br>
-            n = va_arg(*arg, long);<br>
-            return read(fd, a, n);<br>
-            
-        </table>
-        }<br>
-        long<br>
-        ioread(Ioproc *io, int fd, void *a, long n)<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            return iocall(io, _ioread, fd, a, n);<br>
-            
-        </table>
-        }<br>
-        </font></tt>
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libthread<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/dial.html"><i>dial</i>(3)</a>, <a href="../man3/open.html"><i>open</i>(3)</a>, <a href="../man3/read.html"><i>read</i>(3)</a>, <a href="../man3/thread.html"><i>thread</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Iointerrupt</i> is currently unimplemented.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/ip.html b/man/man3/ip.html
deleted file mode 100644
index 0376fa9..0000000
--- a/man/man3/ip.html
+++ /dev/null
@@ -1,345 +0,0 @@
-<head>
-<title>ip(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>IP(3)</b><td align=right><b>IP(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    eipfmt, parseip, parseipmask, v4parseip, v4parsecidr, parseether,
-    myipaddr, myetheraddr, maskip, equivip, defmask, isv4, v4tov6,
-    v6tov4, nhgetl, nhgets, nhgetv, hnputl, hnputs, hnputv, ptclbsum,
-    readipifc &ndash; Internet protocol<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;ip.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;eipfmt(Fmt*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parseip(uchar *ipaddr, char *str) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parseipmask(uchar *ipaddr, char *str) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v4parseip(uchar *ipaddr, char *str) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v4parsecidr(uchar *addr, uchar *mask, char *str) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;parseether(uchar *eaddr, char *str) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;myetheraddr(uchar *eaddr, char *dev) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;myipaddr(uchar *ipaddr, char *net) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void maskip(uchar *from, uchar *mask, uchar *to) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;equivip(uchar *ipaddr1, uchar *ipaddr2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uchar* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defmask(uchar *ipaddr) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;isv4(uchar *ipaddr) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void v4tov6(uchar *ipv6, uchar *ipv4) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void v6tov4(uchar *ipv4, uchar *ipv6) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nhgets(void *p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uint nhgetl(void *p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uvlong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nhgetv(void *p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void hnputs(void *p, ushort v) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void hnputl(void *p, uint v) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void hnputv(void *p, uvlong v) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ushort &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ptclbsum(uchar *a, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Ipifc* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readipifc(char *net, Ipifc *ifc, int index) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPv4bcast[IPaddrlen]; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPv4allsys[IPaddrlen]; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPv4allrouter[IPaddrlen]; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPallbits[IPaddrlen]; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPnoaddr[IPaddrlen]; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v4prefix[IPaddrlen];<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines are used by Internet Protocol (IP) programs to
-    manipulate IP and Ethernet addresses. Plan 9, by default, uses
-    V6 format IP addresses. Since V4 addresses fit into the V6 space,
-    all IP addresses can be represented. IP addresses are stored as
-    a string of 16 <tt><font size=+1>unsigned chars</font></tt>, Ethernet addresses as 6
-    <tt><font size=+1>unsigned chars</font></tt>. Either V4 or V6 string representation can be used
-    for IP addresses. For V4 addresses, the representation can be
-    (up to) 4 decimal integers from 0 to 255 separated by periods.
-    For V6 addresses, the representation is (up to) 8 hex integers
-    from 0x0 to 0xFFFF separated by colons. Strings of 0
-    integers can be elided using two colons. For example, <tt><font size=+1>FFFF::1111</font></tt>
-    is equivalent to <tt><font size=+1>FFFF:0:0:0:0:0:0:1111</font></tt>. The string representation
-    for IP masks is a superset of the address representation. It includes
-    slash notation that indicates the number of leading 1 bits in
-    the mask. Thus, a V4 class C mask can be
-    represented as <tt><font size=+1>FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FF00</font></tt>, <tt><font size=+1>255.255.255.0</font></tt>,
-    or <tt><font size=+1>/120.</font></tt> The string representation of Ethernet addresses is exactly
-    12 hexadecimal digits. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Eipfmt</i> is a <a href="../man3/print.html"><i>print</i>(3)</a> formatter for Ethernet (verb <tt><font size=+1>E</font></tt>) addresses,
-    IP V6 (verb <tt><font size=+1>I</font></tt>) addresses, IP V4 (verb <tt><font size=+1>V</font></tt>) addresses, and IP V6
-    (verb <tt><font size=+1>M</font></tt>) masks. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Parseip</i> converts a string pointed to by <i>str</i> to a 16-byte IP address
-    starting at <i>ipaddr</i>. As a concession to backwards compatibility,
-    if the string is a V4 address, the return value is an unsigned
-    long integer containing the big-endian V4 address. If not, the
-    return value is 6. <i>Parseipmask</i> converts a string pointed to by
-    <i>str
-    </i>to a 6-byte IP mask starting at <i>ipaddr</i>. It too returns an unsigned
-    long big-endian V4 address or 6. Both routines return -1 on errors.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>V4parseip</i> converts a string pointed to by <i>str</i> to a 4-byte V4 IP
-    address starting at <i>ipaddr</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>V4parsecidr</i> converts a string of the form addr/mask, pointed to
-    by <i>str</i>, to a 4-byte V4 IP address starting at <i>ipaddr</i> and a 4-byte
-    V4 IP mask starting at <i>mask</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Myipaddr</i> returns the first valid IP address in the IP stack rooted
-    at <i>net</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Parseether</i> converts a string pointed to by <i>str</i> to a 6-byte Ethernet
-    address starting at <i>eaddr</i>. <i>Myetheraddr</i> reads the Ethernet address
-    string from file <i>dev</i><tt><font size=+1>/1/stats</font></tt> and parses it into <i>eaddr</i>. Both routines
-    return a negative number on errors. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Maskip</i> places the bit-wise AND of the IP addresses pointed to
-    by its first two arguments into the buffer pointed to by the third.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Equivip</i> returns non-zero if the IP addresses pointed to by its
-    two arguments are equal. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Defmask</i> returns the standard class A, B, or C mask for <i>ipaddr</i>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Isv4</i> returns non-zero if the V6 address is in the V4 space, that
-    is, if it starts with <tt><font size=+1>0:0:0:0:0:0:FFFF</font></tt>. <i>V4tov6</i> converts the V4
-    address, <i>v4ip</i>, to a V6 address and puts the result in <i>v6ip</i>. <i>V6tov4</i>
-    converts the V6 address, <i>v6ip</i>, to a V4 address and puts the result
-    in <i>v4ip</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Hnputs</i>, <i>hnputl</i>, and <i>hnputv</i> are used to store 16-, 32-, and 64-bit
-    integers into IP big-endian form. <i>Nhgets</i>, <i>nhgetl</i>, and <i>nhgetv</i> convert
-    big-endian 2-, 4-, and 8-byte quantities into integers. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Pctlbsum</i> returns the one&#8217;s complement checksum used in IP protocols,
-    typically invoked as<br>
-    <tt><font size=+1>hnputs(hdr&#8722;&gt;cksum, ~ptclbsum(data, len) &amp; 0xffff);<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    A number of standard IP addresses in V6 format are also defined.
-    They are:<br>
-    <tt><font size=+1>IPv4bcast<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        the V4 broadcast address<br>
-        
-    </table>
-    <tt><font size=+1>IPv4allsys<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        the V4 all systems multicast address<br>
-        
-    </table>
-    <tt><font size=+1>IPv4allrouter<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        the V4 all routers multicast address<br>
-        
-    </table>
-    <tt><font size=+1>IPallbits<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        the V6 all bits on address<br>
-        
-    </table>
-    <tt><font size=+1>IPnoaddr<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        the V6 null address, all zeros<br>
-        
-    </table>
-    <tt><font size=+1>v4prefix<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        the IP V6 prefix to all embedded V4 addresses 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-        
-    </table>
-    <i>Readipifc</i> returns information about a particular interface (<i>index
-    </i>&gt;= 0) or all IP interfaces (<i>index </i>&lt; 0) configured under a mount
-    point <i>net</i>, default <tt><font size=+1>/net</font></tt>. Each interface is described by one <i>Ipifc</i>
-    structure which in turn points to a linked list of <i>Iplifc</i> structures
-    describing the addresses assigned to this interface. If the list
-    <i>ifc</i> is supplied, that list is freed. Thus, subsequent calls can
-    be used to free the list returned by the previous call. <i>Ipifc</i>
-    is: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>typedef struct Ipifc<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Ipifc &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*next;<br>
-        Iplifc &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*lifc;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* local addressses */<br>
-        /* per ip interface */<br>
-        int &nbsp;&nbsp;&nbsp;index;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* number of interface in ipifc dir */<br>
-        char dev[64]; &nbsp;&nbsp;&nbsp;/* associated physical device */<br>
-          int &nbsp;&nbsp;&nbsp;mtu;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* max transfer unit */<br>
-        long validlt; &nbsp;&nbsp;&nbsp;/* valid life time */<br>
-          long preflt;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* preferred life time */<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendra6; &nbsp;&nbsp;&nbsp;/* on == send router adv */<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recvra6; &nbsp;&nbsp;&nbsp;/* on == rcv router adv */<br>
-        ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pktin;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* packets read */<br>
-        ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pktout;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* packets written */<br>
-        ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errin;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* read errors */<br>
-        ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errout;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* write errors */<br>
-        Ipv6rp &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* route advertisement params */<br>
-        
-    </table>
-    } Ipifc;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <i>Iplifc</i> is: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>struct Iplifc<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Iplifc &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*next;<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ip[IPaddrlen];<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mask[IPaddrlen];<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;net[IPaddrlen];  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* ip &amp; mask */<br>
-        ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preflt;   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* preferred lifetime */<br>
-        ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validlt;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* valid lifetime */<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <i>Ipv6rp</i> is: struct Ipv6rp { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;mflag; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;oflag; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int  &nbsp;&nbsp;&nbsp;&nbsp;maxraint;
-    &nbsp;&nbsp;&nbsp;&nbsp;/* max route adv interval */ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;minraint; &nbsp;&nbsp;&nbsp;&nbsp;/* min route adv interval
-    */ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;linkmtu; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;reachtime; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;rxmitra; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;ttl; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;routerlt;
-     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Dev</i> contains the first 64 bytes of the device configured with
-    this interface. <i>Net</i> is <i>ip</i><tt><font size=+1>&amp;</font></tt><i>mask</i> if the network is multipoint or
-    the remote address if the network is point to point.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libip<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/print.html"><i>print</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/isalpharune.html b/man/man3/isalpharune.html
deleted file mode 100644
index 99c2f38..0000000
--- a/man/man3/isalpharune.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<head>
-<title>isalpharune(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>ISALPHARUNE(3)</b><td align=right><b>ISALPHARUNE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    isalpharune, islowerrune, isspacerune, istitlerune, isupperrune,
-    tolowerrune, totitlerune, toupperrune &ndash; Unicode character classes
-    and cases<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int isalpharune(Rune c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int islowerrune(Rune c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int isspacerune(Rune c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int istitlerune(Rune c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int isupperrune(Rune c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune tolowerrune(Rune c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune totitlerune(Rune c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune toupperrune(Rune c)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines examine and operate on Unicode characters, in particular
-    a subset of their properties as defined in the Unicode standard.
-    Unicode defines some characters as alphabetic and specifies three
-    cases: upper, lower, and title. Analogously to <a href="../man3/isalpha.html"><i>isalpha</i>(3)</a> for
-    ASCII, these routines test types and modify cases for
-    Unicode characters. The names are self-explanatory. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The case-conversion routines return the character unchanged if
-    it has no case.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/utf/runetype.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/isalpha.html"><i>isalpha</i>(3)</a><i>, The Unicode Standard</i>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/keyboard.html b/man/man3/keyboard.html
deleted file mode 100644
index 19dc833..0000000
--- a/man/man3/keyboard.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<head>
-<title>keyboard(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>KEYBOARD(3)</b><td align=right><b>KEYBOARD(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    initkeyboard, ctlkeyboard, closekeyboard &ndash; keyboard control<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;thread.h&gt;<br>
-    #include &lt;keyboard.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Keyboardctl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*initkeyboard(char *file)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctlkeyboard(Keyboardctl *kc, char *msg)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closekeyboard(Keyboard *kc)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions access and control a keyboard interface for character-at-a-time
-    I/O in a multi-threaded environment, usually in combination with
-    <a href="../man3/mouse.html"><i>mouse</i>(3)</a>. They use the message-passing <tt><font size=+1>Channel</font></tt> interface in the
-    threads library (see <a href="../man3/thread.html"><i>thread</i>(3)</a>); programs that wish a more event-driven,
-    single-threaded approach
-    should use <a href="../man3/event.html"><i>event</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Initkeyboard</i> opens a connection to the keyboard and returns a
-    <tt><font size=+1>Keyboardctl</font></tt> structure:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct Keyboardct Keyboardctl;<br>
-        struct Keyboardctl<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Channel *c; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* chan(Rune[20]) */<br>
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*file;<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;consfd; &nbsp;&nbsp;&nbsp;&nbsp;/* to cons file */<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctlfd; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* to ctl file */<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* of slave proc */<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    The argument to <i>initkeyboard</i> is ignored (on Plan 9, it is the
-    name of the keyboard device). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Once the <tt><font size=+1>Keyboardctl</font></tt> is set up a message containing a <tt><font size=+1>Rune</font></tt> will
-    be sent on the <tt><font size=+1>Channel Keyboardctl.c</font></tt> to report each character
-    read from the device. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Ctlkeyboard</i> is used to set the state of the interface, typically
-    to turn raw mode on and off. It writes the string <i>msg</i> to the control
-    file associated with the device, which is assumed to be the regular
-    device file name with the string <tt><font size=+1>ctl</font></tt> appended. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Closekeyboard</i> closes the file descriptors associated with the
-    keyboard, kills the slave processes, and frees the <tt><font size=+1>Keyboardctl</font></tt>
-    structure. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man3/event.html"><i>event</i>(3)</a>, <a href="../man3/thread.html"><i>thread</i>(3)</a>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Because the interface delivers complete runes, there is no way
-    to report lesser actions such as shift keys or even individual
-    bytes.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/lock.html b/man/man3/lock.html
deleted file mode 100644
index 72d66e1..0000000
--- a/man/man3/lock.html
+++ /dev/null
@@ -1,222 +0,0 @@
-<head>
-<title>lock(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>LOCK(3)</b><td align=right><b>LOCK(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    lock, canlock, unlock, qlock, canqlock, qunlock, rlock, canrlock,
-    runlock, wlock, canwlock, wunlock, rsleep, rwakeup, rwakeupall
-    incref, decref &ndash; spin locks, queueing rendezvous locks, reader-writer
-    locks, rendezvous points, and reference counts<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    void lock(Lock *l)<br>
-    int &nbsp;&nbsp;&nbsp;canlock(Lock *l)<br>
-    void unlock(Lock *l)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    void qlock(QLock *l)<br>
-    int &nbsp;&nbsp;&nbsp;canqlock(QLock *l)<br>
-    void qunlock(QLock *l)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    void rlock(RWLock *l)<br>
-    int &nbsp;&nbsp;&nbsp;canrlock(RWLock *l)<br>
-    void runlock(RWLock *l)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    void wlock(RWLock *l)<br>
-    int &nbsp;&nbsp;&nbsp;canwlock(RWLock *l)<br>
-    void wunlock(RWLock *l)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    typedef struct Rendez {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        QLock *l;<br>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>...<br>
-        </i>
-    </table>
-    <tt><font size=+1>} Rendez;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    void rsleep(Rendez *r)<br>
-    int &nbsp;&nbsp;&nbsp;rwakeup(Rendez *r)<br>
-    int &nbsp;&nbsp;&nbsp;rwakeupall(Rendez *r)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    #include &lt;thread.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    typedef struct Ref {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        long ref;<br>
-        
-    </table>
-    } Ref;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    void incref(Ref*)<br>
-    long decref(Ref*)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines are used to synchronize processes sharing memory.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>Locks</font></tt> are spin locks, <tt><font size=+1>QLocks</font></tt> and <tt><font size=+1>RWLocks</font></tt> are different types of
-    queueing locks, and <tt><font size=+1>Rendezes</font></tt> are rendezvous points. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Locks and rendezvous points have trivial implementations in programs
-    not using the thread library (see <a href="../man3/thread.html"><i>thread</i>(3)</a>), since such programs
-    have no concurrency. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Used carelessly, spin locks can be expensive and can easily generate
-    deadlocks. Their use is discouraged, especially in programs that
-    use the thread library because they prevent context switches between
-    threads. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Lock</i> blocks until the lock has been obtained. <i>Canlock</i> is non-blocking.
-    It tries to obtain a lock and returns a non-zero value if it was
-    successful, 0 otherwise. <i>Unlock</i> releases a lock. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>QLocks</font></tt> have the same interface but are not spin locks; instead
-    if the lock is taken <i>qlock</i> will suspend execution of the calling
-    thread until it is released. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Although <tt><font size=+1>Locks</font></tt> are the more primitive lock, they have limitations;
-    for example, they cannot synchronize between tasks in the same
-    <i>proc</i>. Use <tt><font size=+1>QLocks</font></tt> instead. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>RWLocks</font></tt> manage access to a data structure that has distinct readers
-    and writers. <i>Rlock</i> grants read access; <i>runlock</i> releases it. <i>Wlock</i>
-    grants write access; <i>wunlock</i> releases it. <i>Canrlock</i> and <i>canwlock</i>
-    are the non-blocking versions. There may be any number of simultaneous
-    readers, but only one writer. Moreover, if
-    write access is granted no one may have read access until write
-    access is released. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    All types of lock should be initialized to all zeros before use;
-    this puts them in the unlocked state. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>Rendezes</font></tt> are rendezvous points. Each <tt><font size=+1>Rendez</font></tt> <i>r</i> is protected by
-    a <tt><font size=+1>QLock</font></tt> <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>l</i>, which must be held by the callers of <i>rsleep</i>, <i>rwakeup</i>,
-    and <i>rwakeupall</i>. <i>Rsleep</i> atomically releases <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>l</i> and suspends execution
-    of the calling task. After resuming execution, <i>rsleep</i> will reacquire
-    <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>l</i> before returning. If any processes
-    are sleeping on <i>r</i>, <i>rwakeup</i> wakes one of them. it returns 1 if
-    a process was awakened, 0 if not. <i>Rwakeupall</i> wakes all processes
-    sleeping on <i>r</i>, returning the number of processes awakened. <i>Rwakeup</i>
-    and <i>rwakeupall</i> do not release <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>l</i> and do not suspend execution
-    of the current task. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Before use, <tt><font size=+1>Rendezes</font></tt> should be initialized to all zeros except
-    for <i>r</i><tt><font size=+1>&#8722;&gt;</font></tt><i>l</i> pointer, which should point at the <tt><font size=+1>QLock</font></tt> that will guard
-    <i>r</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A <tt><font size=+1>Ref</font></tt> contains a <tt><font size=+1>long</font></tt> that can be incremented and decremented
-    atomically: <i>Incref</i> increments the <i>Ref</i> in one atomic operation.
-    <i>Decref</i> atomically decrements the <tt><font size=+1>Ref</font></tt> and returns zero if the resulting
-    value is zero, non-zero otherwise.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/qlock.c<br>
-    /usr/local/plan9/src/libthread<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>Locks</font></tt> are not always spin locks. Instead they are usually implemented
-    using the <i>pthreads</i> library&#8217;s <tt><font size=+1>pthread_mutex_t</font></tt>, whose implementation
-    method is not defined. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    On <i>pthreads</i>-based systems, the implementation of <tt><font size=+1>Lock</font></tt> never calls
-    <i>pthread_mutex_destroy</i> to free the <tt><font size=+1>pthread_mutex_t</font></tt>&#8217;s. This leads
-    to resource leaks on FreeBSD 5 (though not on Linux 2.6, where
-    <i>pthread_mutex_destroy</i> is a no-op).  
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    On systems that do not have a usable <i>pthreads</i> implementation,
-    the <tt><font size=+1>Lock</font></tt> implementation provided by <i>libthread</i> is still not exactly
-    a spin lock. After each unsuccessful attempt, <i>lock</i> calls <tt><font size=+1>sleep(0)</font></tt>
-    to yield the CPU; this handles the common case where some other
-    process holds the lock. After a thousand
-    unsuccessful attempts, <i>lock</i> sleeps for 100ms between attempts.
-    Another another thousand unsuccessful attempts, <i>lock</i> sleeps for
-    a full second between attempts. <tt><font size=+1>Locks</font></tt> are not intended to be held
-    for long periods of time. The 100ms and full second sleeps are
-    only heuristics to avoid tying up the CPU when a
-    process deadlocks. As discussed above, if a lock is to be held
-    for much more than a few instructions, the queueing lock types
-    should be almost always be used.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/mach-cmd.html b/man/man3/mach-cmd.html
deleted file mode 100644
index 978e80b..0000000
--- a/man/man3/mach-cmd.html
+++ /dev/null
@@ -1,167 +0,0 @@
-<head>
-<title>mach-cmd(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MACH-CMD(3)</b><td align=right><b>MACH-CMD(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    attachargs, attachcore, attachdynamic, attachproc, proctextfile
-    &ndash; debugging processes and core files<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mach.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attachcore(Fhdr *hdr) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attachproc(int pid) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attachdynamic(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;proctextfile(int pid) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attachargs(int argc, char **argv, int omode) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>extern Fhdr* symhdr;<br>
-    </font></tt>extern &nbsp;&nbsp;&nbsp;&nbsp;char* &nbsp;&nbsp;&nbsp;symfil;<br>
-    extern &nbsp;&nbsp;&nbsp;&nbsp;Map* &nbsp;&nbsp;&nbsp;symmap;<br>
-    extern &nbsp;&nbsp;&nbsp;&nbsp;Fhdr* &nbsp;&nbsp;&nbsp;fhdrlist;<br>
-    extern &nbsp;&nbsp;&nbsp;&nbsp;Fhdr* &nbsp;&nbsp;&nbsp;corhdr;<br>
-    extern &nbsp;&nbsp;&nbsp;&nbsp;char* &nbsp;&nbsp;&nbsp;corfil;<br>
-    extern &nbsp;&nbsp;&nbsp;&nbsp;Map* &nbsp;&nbsp;&nbsp;cormap;<br>
-    extern &nbsp;&nbsp;&nbsp;&nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;corpid;<br>
-    extern &nbsp;&nbsp;&nbsp;&nbsp;Regs* &nbsp;&nbsp;&nbsp;correg;<br>
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines provide access to the objects a typical debugger
-    manipulates: an executable binary, some number of shared libraries,
-    a memory image in the form of a core dump or active process, and
-    a register set. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The maintained state is:<br>
-    <i>symhdr<br>
-    </i>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        The file header for the main binary.<br>
-        
-    </table>
-    <i>symfil</i>The file name of the main binary.<br>
-    <i>symmap<br>
-    </i>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        The memory map of the main binary.<br>
-        
-    </table>
-    <i>fhdrlist<br>
-    </i>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        A linked list (via the <tt><font size=+1>Fhdr.next</font></tt> fields) of all currently open
-        headers (see <i>symopen</i> in <a href="../man3/mach-symbol.html"><i>mach-symbol</i>(3)</a>). When dynamically linked
-        objects have been attached, they are present in this linked list,
-        and therefore included in searches by <i>indexsym</i>, <i>lookupsym</i>, and
-        <i>findsym</i> (see <a href="../man3/mach-symbol.html"><i>mach-symbol</i>(3)</a>).
-        
-    </table>
-    <i>corhdr</i>The file header for the core dump, if any.<br>
-    <i>corfil</i>The file name of the core dump, if any.<br>
-    <i>cormap<br>
-    </i>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        The memory map of the core dump or attached process.<br>
-        
-    </table>
-    <i>corpid</i>The process id of the attached process, if any.<br>
-    <i>correg</i>The register set of the core dump or attached process. If
-    these fields are not valid, they are zeroed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Attachcore</i> and <i>attachproc</i> attach to an opened core file or an
-    executing process. They set <i>corhdr</i>, <i>corfil</i>, <i>cormap</i>, <i>corpid</i>, and
-    <i>correg</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Proctextfile</i> returns the name of the main binary for the process
-    with id <i>pid</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Attachdynamic</i> requires that the memory image already be attached.
-    It reads the dynamic linker&#8217;s internal run-time data structures
-    and then opens all the dynamic objects that are currently loaded.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Attachargs</i> uses all of these functions while parsing an argument
-    vector as would be passed to a debugger like <a href="../man1/db.html"><i>db</i>(1)</a> or <a href="../man1/acid.html"><i>acid</i>(1)</a>.
-    It expects a list of executable files, core dump files, or process
-    ids, given in any order. If extra arguments are given (for example,
-    more than one executable, or both a core dump and a
-    process id), they are ignored and diagnostics are printed to standard
-    error. If arguments are missing (for example, the process id is
-    given without an executable file), <i>attachargs</i> fills them in as
-    best it can.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libmach<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mach.html"><i>mach</i>(3)</a>, <a href="../man3/mach-file.html"><i>mach-file</i>(3)</a>, <a href="../man3/mach-map.html"><i>mach-map</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The interface needs to be changed to support multiple threads,
-    each with its own register set.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/mach-file.html b/man/man3/mach-file.html
deleted file mode 100644
index 7fd1a57..0000000
--- a/man/man3/mach-file.html
+++ /dev/null
@@ -1,185 +0,0 @@
-<head>
-<title>mach-file(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MACH-FILE(3)</b><td align=right><b>MACH-FILE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    crackhdr, uncrackhdr, mapfile, unmapfile, mapproc, unmapproc,
-    detachproc, ctlproc, procnotes &ndash; machine-independent access to
-    exectuable files and running processes<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mach.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    int &nbsp;&nbsp;&nbsp;&nbsp;crackhdr(int fd, Fhdr *hdr)<br>
-    void &nbsp;&nbsp;&nbsp;uncrackhdr(Fhdr *hdr) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;mapfile(Fhdr *hdr, ulong base, Map *map, Regs **regs)<br>
-    void &nbsp;&nbsp;&nbsp;unmapfile(Fhdr *hdr, Map *map)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;mapproc(int pid, Map *map, Regs **regs)<br>
-    void &nbsp;&nbsp;&nbsp;unmapproc(Map *map)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;detachproc(int pid)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;ctlproc(int pid, char *msg)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;procnotes(int pid, char ***notes)<br>
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions parse executable files and provide access to those
-    files and to running processes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Crackhdr</i> opens and parses the named executable file. The returned
-    data structure <i>hdr</i> is initialized with a machine-independent description
-    of the header information. The following fields are the most commonly
-    used:<br>
-    <tt><font size=+1>mach</font></tt>a pointer to the <tt><font size=+1>Mach</font></tt> structure for the target architecture<br>
-    <tt><font size=+1>mname<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        the name of the target architecture<br>
-        
-    </table>
-    <tt><font size=+1>fname<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        a description of the kind of file (e.g., executable, core dump)<br>
-        
-    </table>
-    <tt><font size=+1>aname<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        a description of the application binary interface this file uses;
-        typically it is the name of an operating system If the global
-        variable <i>mach</i> is nil, <i>crackhdr</i> points it to the same <tt><font size=+1>Mach</font></tt> structure.
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-        
-    </table>
-    <i>Mapfile</i> adds the segments found in <i>hdr</i> to <i>map</i>. If <i>hdr</i> is an executable
-    file, there are typically three segments: <i>text</i>, <i>data</i>, and a zero-backed
-    <i>bss</i>. If <i>hdr</i> is a dynamic shared library, its segments are relocated
-    by <i>base</i> before being mapping. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If <i>hdr</i> is a core file, there is one segment named <i>core</i> for each
-    contiguous section of memory recorded in the core file. There
-    are often quite a few of these, as most operating systems omit
-    clean memory pages when writing core files (Mac OS X is the only
-    exception among the supported systems). Because core files
-    have such holes, it is typically necessary to construct the core
-    map by calling <i>mapfile</i> on the executable and then calling it again
-    on the core file. Newly-added segments are mapped on top of existing
-    segments, so this arrangement will use the core file for the segments
-    it contains but fall back to the executable for the
-    rest. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Unmapfile</i> removes the mappings in <i>map</i> corresponding to <i>hdr</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Mapproc</i> attaches to a running program and adds its segments to
-    the given map. It adds one segment for each contiguous section
-    of mapped memory. On systems where this information cannot be
-    determined, it adds a single segment covering the entire address
-    space. Accessing areas of this segment that are
-    actually not mapped in the process address space will cause the
-    get/put routines to return errors. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Unmapproc</i> removes the mappings in <i>map</i> corresponding to <i>pid</i>. <i>Detachproc</i>
-    detaches from all previously attached processes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Ctlproc</i> manipulates the process with id <i>pid</i> according to the message
-    <i>msg</i>. Valid messages include:<br>
-    <tt><font size=+1>kill</font></tt>terminate the process<br>
-    <tt><font size=+1>startstop<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        start the process and wait for it to stop<br>
-        
-    </table>
-    <tt><font size=+1>sysstop<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        arrange for the process to stop at its next system call, start
-        the process, and then wait for it to stop<br>
-        
-    </table>
-    <tt><font size=+1>waitstop<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        wait for the process to stop<br>
-        
-    </table>
-    <tt><font size=+1>start<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        start the process 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-        
-    </table>
-    <i>Procnotes</i> fills <tt><font size=+1>*</font></tt><i>notes</i> with a pointer to an array of strings representing
-    pending notes waiting for the process. (On Unix, these notes are
-    textual descriptions of any pending signals.) <i>Procnotes</i> returns
-    the number of pending notes. The memory at <tt><font size=+1>*</font></tt><i>notes</i> should be freed
-    via <i>free</i> (see <a href="../man3/malloc.html"><i>malloc</i>(3)</a>) when no longer needed.
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libmach<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mach.html"><i>mach</i>(3)</a>, <a href="../man3/mach-map.html"><i>mach-map</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/mach-map.html b/man/man3/mach-map.html
deleted file mode 100644
index ddf7275..0000000
--- a/man/man3/mach-map.html
+++ /dev/null
@@ -1,312 +0,0 @@
-<head>
-<title>mach-map(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MACH-MAP(3)</b><td align=right><b>MACH-MAP(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    allocmap, addseg, findseg, addrtoseg, addrtosegafter, removeseg,
-    freemap, get1, get2, get4, get8, put1, put2, put4, put8, rget,
-    rput, fpformat, locnone, locaddr, locconst, locreg, locindir,
-    loccmp, loceval, locfmt, locsimplify, lget1, lget2, lget4, lget8,
-    lput1, lput2, lput4, lput8 &ndash; machine-independent access to address
-    spaces and register sets<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mach.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    typedef struct Map Map;<br>
-    typedef struct Seg Seg;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    struct Seg<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        char &nbsp;&nbsp;&nbsp;*name;<br>
-        char &nbsp;&nbsp;&nbsp;*file;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;fd;<br>
-        ulong &nbsp;&nbsp;&nbsp;base;<br>
-        ulong &nbsp;&nbsp;&nbsp;size;<br>
-        ulong &nbsp;&nbsp;&nbsp;offset;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;(*rw)(Map*, Seg*, ulong, void*, uint, int);<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    struct Map<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Seg &nbsp;&nbsp;&nbsp;&nbsp;*seg;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;nseg;<br>
-        <i>...<br>
-        </i>
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Map &nbsp;&nbsp;&nbsp;*allocmap(void)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;addseg(Map *map, Seg seg)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;findseg(Map *map, char *name, char *file)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;addrtoseg(Map *map, ulong addr, Seg *seg)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;addrtosegafter(Map *map, ulong addr, Seg *seg)<br>
-    void &nbsp;&nbsp;&nbsp;removeseg(Map *map, int i)<br>
-    void &nbsp;&nbsp;&nbsp;freemap(Map *map)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;get1(Map *map, ulong addr, uchar *a, uint n)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;get2(Map *map, ulong addr, u16int *u)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;get4(Map *map, ulong addr, u32int *u)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;get8(Map *map, ulong addr, u64int *u)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;put1(Map *map, ulong addr, uchar *a, uint n)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;put2(Map *map, ulong addr, u16int u)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;put4(Map *map, ulong addr, u32int u)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;put8(Map *map, ulong addr, u64int u)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;rget(Regs *regs, char *reg, ulong *u)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;fpformat(Map *map, char *reg, char *a, uint n, char code);<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;rput(Regs *regs, char *name, ulong u)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Loc &nbsp;&nbsp;&nbsp;locnone(void)<br>
-    Loc &nbsp;&nbsp;&nbsp;locaddr(ulong addr)<br>
-    Loc &nbsp;&nbsp;&nbsp;locconst(ulong con)<br>
-    Loc &nbsp;&nbsp;&nbsp;locreg(char *reg)<br>
-    Loc &nbsp;&nbsp;&nbsp;locindir(char *reg, long offset)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;loccmp(Loc *a, Loc *b)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;loceval(Map *map, Loc loc, ulong *addr)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;locfmt(Fmt *fmt)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;locsimplify(Map *map, Loc *regs, Loc loc, Loc *newloc)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;lget1(Map *map, Loc loc, uchar *a, uint n)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;lget2(Map *map, Loc loc, u16int *u)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;lget4(Map *map, Loc loc, u32int *u)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;lget8(Map *map, Loc loc, u64int *u)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;lput1(Map *map, Loc loc, uchar *a, uint n)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;lput2(Map *map, Loc loc, u16int u)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;lput4(Map *map, Loc loc, u32int u)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;lput8(Map *map, Loc loc, u64int u)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions provide a processor-independent interface for
-    accessing executable files, core files, and running processes
-    via <i>maps</i>, data structures that provides access to an address space
-    and register set. The functions described in <a href="../man3/mach-file.html"><i>mach-file</i>(3)</a> are
-    typically used to construct these maps. Related library functions
-    described in <a href="../man3/mach-symbol.html"><i>mach-symbol</i>(3)</a> provide similar access to symbol tables.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Each <i>map</i> comprises an optional register set and one or more <tt><font size=+1>segments</font></tt>,
-    each associating a non-overlapping range of memory addresses with
-    a logical section of an executable file or of a running process&#8217;s
-    address space. Other library functions then use a map and the
-    architecture-specific data structures to provide
-    a generic interface to the processor-dependent data. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Each segment has a name (e.g., <tt><font size=+1>text</font></tt> or <tt><font size=+1>data</font></tt>) and may be associated
-    with a particular file. A segment represents a range of accessible
-    address space. Segments may be backed an arbitary access function
-    (if the <tt><font size=+1>rw</font></tt> pointer is non-nil), or by the contents of an open
-    file (using the <tt><font size=+1>fd</font></tt> file descriptor). Each range has a
-    starting address in the space (<tt><font size=+1>base</font></tt>) and an extent (<tt><font size=+1>size</font></tt>). In
-    segments mapped by files, the range begins at byte <tt><font size=+1>offset</font></tt> in the
-    file. The <tt><font size=+1>rw</font></tt> function is most commonly used to provide access
-    to executing processes via <a href="../man2/ptrace.html"><i>ptrace</i>(2)</a> and to zeroed segments. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Allocmap</i> creates an empty map; <i>freemap</i> frees a map. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Addseg</i> adds the given segment to the map, resizing the map&#8217;s <i>seg</i>
-    array if necessary. A negative return value indicates an allocation
-    error. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Findseg</i> returns the index of the segment with the given name (and,
-    if <i>file</i> is non-nil, the given file), or &ndash;1 if no such segment is
-    found. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Addrtoseg</i> returns the index of the segment containing for the
-    given address, or &ndash;1 if that address is not mapped. Segments may
-    have overlapping address ranges: <i>addseg</i> appends segments to the
-    end of the <i>seg</i> array in the map, and <i>addrtoseg</i> searches the map
-    backwards from the end, so the most recently mapped
-    segment wins. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Addrtosegafter</i> returns the index of the segment containing the
-    lowest mapped address greater than <i>addr</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Removeseg</i> removes the segment at the given index. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Get1</i>, <i>get2</i>, <i>get4</i>, and <i>get8</i> retrieve the data stored at address
-    <i>addr</i> in the address space associated with <i>map</i>. <i>Get1</i> retrieves
-    <i>n</i> bytes of data beginning at <i>addr</i> into <i>buf</i>. <i>Get2</i>, <i>get4</i> and <i>get8</i>
-    retrieve 16-bit, 32-bit and 64-bit values respectively, into the
-    location pointed to by <i>u</i>. The value is byte-swapped if the source
-    byte order differs from that of the current architecture. This
-    implies that the value returned by <i>get2</i>, <i>get4</i>, and <i>get8</i> may not
-    be the same as the byte sequences returned by <i>get1</i> when <i>n</i> is two,
-    four or eight; the former may be byte-swapped, the latter reflects
-    the byte order of the target architecture. These functions
-    return the number of bytes read or a &ndash;1 when there is an error.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Put1</i>, <i>put2</i>, <i>put4</i>, and <i>put8</i> write to the address space associated
-    with <i>map</i>. The address is translated using the map parameters and
-    multi-byte quantities are byte-swapped, if necessary, before they
-    are written. <i>Put1</i> transfers <i>n</i> bytes stored at <i>buf</i>; <i>put2</i>, <i>put4</i>,
-    and <i>put8</i> write the 16-bit, 32-bit or 64-bit quantity
-    contained in <i>val</i>, respectively. The number of bytes transferred
-    is returned. A &ndash;1 return value indicates an error. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    When representing core files or running programs, maps also provide
-    access to the register set. <i>Rget</i> and <i>rput</i> read or write the register
-    named by <i>reg</i>. If the register is smaller than a <tt><font size=+1>ulong</font></tt>, the high
-    bits are ignored. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Fpformat</i> converts the contents of a floating-point register to
-    a string. <i>Buf</i> is the address of a buffer of <i>n</i> bytes to hold the
-    resulting string. <i>Code</i> must be either <tt><font size=+1>F</font></tt> or <tt><font size=+1>f</font></tt>, selecting double
-    or single precision, respectively. If <i>code</i> is <tt><font size=+1>F</font></tt>, the contents
-    of the specified register and the following register are interpreted
-    as a
-    double-precision floating-point number; this is meaningful only
-    for architectures that implement double-precision floats by combining
-    adjacent single-precision registers. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A <i>location</i> represents a place in an executing image capable of
-    storing a value. Note that locations are typically passed by value
-    rather than by reference. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Locnone</i> returns an unreadable, unwritable location. <i>Locaddr</i> returns
-    a location representing the memory address <i>addr</i>. <i>Locreg</i> returns
-    a location representing the register <i>reg</i>. <i>Locindir</i> returns an
-    location representing the memory address at <i>offset</i> added to the
-    value of <i>reg</i>. <i>Locconst</i> returns an imaginary unwritable
-    location holding the constant <i>con</i>; such locations are useful for
-    passing specific constants to functions expect locations, such
-    as <i>unwind</i> (see <a href="../man3/mach-stack.html"><i>mach-stack</i>(3)</a>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Loccmp</i> compares two locations, returning negative, zero, or positive
-    values if <tt><font size=+1>*a</font></tt> is less than, equal to, or greater than <tt><font size=+1>*b</font></tt>, respectively.
-    Register locations are ordered before memory addresses, which
-    are ordered before indirections. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Locfmt</i> is a <a href="../man3/print.html"><i>print</i>(3)</a>-verb that formats a <tt><font size=+1>Loc</font></tt> structure (<i>not</i> a
-    pointer to one). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Indirection locations are needed in some contexts (e.g., when
-    using <i>findlsym</i> (see <a href="../man3/mach-symbol.html"><i>mach-symbol</i>(3)</a>)), but bothersome in most.
-    <i>Locsimplify</i> rewrites indirections as absolute memory addresses,
-    by evaluating the register using the given map and adding the
-    offset. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The functions <i>lget1</i>, <i>lget2</i>, <i>lget4</i>, <i>lget8</i>, <i>lput1</i>, <i>lput2</i>, <i>lput4</i>,
-    and <i>lput8</i> read and write the given locations, using the <i>get</i>, <i>put</i>,
-    <i>rget</i>, and <i>rput</i> function families as necessary.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libmach<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mach.html"><i>mach</i>(3)</a>, <a href="../man3/mach-file.html"><i>mach-file</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines set <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    This man page needs to describe <tt><font size=+1>Regs</font></tt> and <tt><font size=+1>Regdesc<br>
-    </font></tt>
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/mach-stack.html b/man/man3/mach-stack.html
deleted file mode 100644
index d08258b..0000000
--- a/man/man3/mach-stack.html
+++ /dev/null
@@ -1,232 +0,0 @@
-<head>
-<title>mach-stack(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MACH-STACK(3)</b><td align=right><b>MACH-STACK(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    stacktrace, localaddr, unwindframe, windindex, windreglocs &ndash; stack
-    traces<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mach.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    int &nbsp;&nbsp;&nbsp;&nbsp;stacktrace(Map *map, Rgetter rget, Tracer trace) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;localaddr(Map *map, Regs *regs, char *fn, char *val, ulong
-    *val) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;unwindframe(Map *map, Regs *regs, ulong *next, Symbol *sym)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;windindex(char *regname) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Loc* &nbsp;&nbsp;&nbsp;windreglocs(void)<br>
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Stacktrace</i> provides machine-independent implementations of process
-    stack traces. They must retrieve data and register contents from
-    an executing image. Sometimes the desired registers are not the
-    current registers but rather a set of saved registers stored elsewhere
-    in memory. The caller may specify an initial
-    register set in the form of an <i>Rgetter</i> function, of the form 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>ulong rget(Map *map, char *name)<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    It returns the contents of a register when given a map and a register
-    name. It is usually sufficient for the register function to return
-    meaningful values only for <tt><font size=+1>SP</font></tt> and <tt><font size=+1>PC</font></tt>, and for the link register
-    (usually <tt><font size=+1>LR</font></tt>) on CISC machines. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Given the map and the rgetter, <i>stacktrace</i> unwinds the stack starting
-    at the innermost function. At each level in the trace, it calls
-    the tracer function, which has the form 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>int trace(Map *map, ulong pc, ulong callerpc,<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Rgetter rget, Symbol *s)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        </font></tt>
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    The tracer is passed the map, the current program counter, the
-    program counter of the caller (zero if the caller is unknown),
-    a new <i>rget</i> function, and a symbol (see <a href="../man3/mach-symbol.html"><i>mach-symbol</i>(3)</a>) describing
-    the current function (nil if no symbol is known). The value returned
-    by the tracer controls whether the stack trace continues: a
-    zero or negative return value stops the trace, while a positive
-    return value continues it. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The rgetter passed to the tracer is not the rgetter passed to
-    <tt><font size=+1>stacktrace</font></tt> itself. Instead, it is a function returning the register
-    values at the time of the call, to the extent that they can be
-    reconstructed. The most common use for this rgetter is as an argument
-    to <i>lget4</i>, etc., when evaluating the locations of local
-    variables. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Localaddr</i> uses <i>stacktrace</i> to walk up the stack looking for the
-    innermost instance of a function named <i>fn ;</i> once it finds the
-    function, it looks for the parameter or local variable <i>var</i>, storing
-    the address of the variable in <i>val</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Unwindframe</i> is the low-level function on which <i>stacktrace</i> is built.
-    Given the current memory image in <i>map</i> and the current register
-    set in <i>regs , unwindframe</i> fills in <i>next</i> with the values of the
-    register set at the time of the call to the function in the current
-    program counter. <i>Sym</i> should be the symbol corresponding to
-    the current function, if available. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <i>next</i> array holds only the <i>winding registers</i>, typically the
-    caller-save registers and the program counter and stack pointer.
-    The order of registers in the array is called the <i>winding order</i>.
-    The winding set can be found in the array <i>mach</i><tt><font size=+1>&#8722;&gt;</font></tt><i>windreg</i>, which
-    has <i>mach</i><tt><font size=+1>&#8722;&gt;</font></tt><i>nwindreg</i> entries. <i>Windindex</i> returns the index of
-    the named register in the winding order. <i>Windreglocs</i> returns an
-    array of <i>Loc</i> structures corresponding to the winding registers,
-    in the winding order.<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The following code writes a simple stack trace to standard output,
-    stopping after at most 20 stack frames.<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        static int<br>
-        trace(Map *map, ulong pc, ulong callerpc,<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Rgetter rget, Symbol *s, int depth)<br>
-            
-        </table>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char buf[512];<br>
-            int i, first;<br>
-            u32int v;<br>
-            Symbol s2;<br>
-            if(sym)<br>
-             print(&quot;%s+%lx&quot;, s-&gt;name, pc - loceval(s-&gt;loc));<br>
-            else<br>
-             print(&quot;%lux&quot;, pc);<br>
-            print(&quot;(&quot;);<br>
-            first = 0;<br>
-            for(i=0; indexlsym(s, &amp;i, &amp;s2)&gt;=0; i++){<br>
-             if(s.class != CPARAM)<br>
-              continue;<br>
-             if(first++)<br>
-              print(&quot;, &quot;);<br>
-             if(lget4(map, rget, s-&gt;loc, &amp;v) &gt;= 0)<br>
-              print(&quot;%s=%#lux&quot;, s-&gt;name, (ulong)v);<br>
-             else<br>
-              print(&quot;%s=???&quot;, s-&gt;name);<br>
-            }<br>
-            print(&quot;) called from &quot;);<br>
-            symoff(buf, sizeof buf, callerpc, CTEXT);<br>
-            print(&quot;%s\n&quot;, buf);<br>
-            return depth &lt; 20;<br>
-            
-        </table>
-        }<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            if(stacktrace(map, nil, trace) &lt;= 0)<br>
-             print(&quot;no stack frame0);<br>
-            
-        </table>
-        
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libmach<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mach.html"><i>mach</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Need to talk about Regs<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/mach-swap.html b/man/man3/mach-swap.html
deleted file mode 100644
index 5eefd9d..0000000
--- a/man/man3/mach-swap.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<head>
-<title>mach-swap(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MACH-SWAP(3)</b><td align=right><b>MACH-SWAP(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    beswap2, beswap4, beswap8, beieeeftoa32, beieeeftoa64, beieeeftoa80,
-    beload2, beload4, beload8, leswap2, leswap4, leswap8, leieeeftoa32,
-    leieeeftoa64, leieeeftoa80, leload2, leload4, leload8, ieeeftoa32,
-    ieeeftoa64 &ndash; machine-independent access to byte-ordered data<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mach.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>u16int beswap2(u16int u)<br>
-    </font></tt>u32int &nbsp;&nbsp;&nbsp;beswap4(u32int u)<br>
-    u64int &nbsp;&nbsp;&nbsp;beswap8(u64int u) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;beieeeftoa32(char *a, uint n, void *f)<br>
-    </font></tt>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;beieeeftoa64(char *a, uint n, void *f)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;beieeeftoa80(char *a, uint n, void *f) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>u16int beload2(uchar *p)<br>
-    </font></tt>u32int &nbsp;&nbsp;&nbsp;beload4(uchar *p)<br>
-    u64int &nbsp;&nbsp;&nbsp;beload8(uchar *p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>u16int leswap2(u16int u)<br>
-    </font></tt>u32int &nbsp;&nbsp;&nbsp;leswap4(u32int u)<br>
-    u64int &nbsp;&nbsp;&nbsp;leswap8(u64int u) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;leieeeftoa32(char *a, uint n, void *f)<br>
-    </font></tt>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;leieeeftoa64(char *a, uint n, void *f)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;leieeeftoa80(char *a, uint n, void *f) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>u16int leload2(uchar *p)<br>
-    </font></tt>u32int &nbsp;&nbsp;&nbsp;leload4(uchar *p)<br>
-    u64int &nbsp;&nbsp;&nbsp;leload8(uchar *p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;ieeeftoa32(char *a, uint n, u32int u)<br>
-    </font></tt>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ieeeftoa64(char *a, uint n, u32int hi, u32int lo)<br>
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions provide machine-independent access to data in
-    a particular byte order. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Beswap2</i>, <i>beswap4</i>, and <i>beswap8</i> return the 2-byte, 4-byte, and 8-byte
-    big-endian representation of the bytes in <i>val</i>, respectively. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Beload2</i>, <i>beload4</i>, and <i>beload8</i> return the 2-byte, 4-byte, and 8-byte
-    big-endian interpretation of the bytes at <i>p</i>, respectively. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Beieeeftoa32</i>, <i>beieeeftoa64</i>, and <i>beieeeftoa80</i> format the big-endian
-    4-byte, 8-byte, or 10-byte IEEE floating-point value at <i>f</i> into
-    the <i>n</i>-byte string buffer <i>a</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Leswap2</i>, <i>leswap4</i>, etc. are the little-endian equivalents of the
-    routines just described. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Ieeeftoa32</i> and <i>ieeeftoa64</i> format a local machine byte-order floating-point
-    value into the <i>n</i>-byte string buffer <i>a</i>. <i>Ieeeftoa32</i> expects a 32-bit
-    floating-point value stored in the bits of <i>u</i>. <i>Ieeeftoa64</i> expects
-    a 64-bit floating-point value whose high 32-bits are in <i>hi</i> and
-    low 32-bits are in <i>lo</i>.
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libmach<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mach.html"><i>mach</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/mach-symbol.html b/man/man3/mach-symbol.html
deleted file mode 100644
index 246d51b..0000000
--- a/man/man3/mach-symbol.html
+++ /dev/null
@@ -1,272 +0,0 @@
-<head>
-<title>mach-symbol(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MACH-SYMBOL(3)</b><td align=right><b>MACH-SYMBOL(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    symopen, symclose, findhdr, indexsym, lookupsym, findsym, findexsym,
-    flookupsym, ffindsym, lookuplsym, indexlsym, findlsym, symoff,
-    pc2file, file2pc, line2pc, fnbound, fileline, pc2line &ndash; symbol
-    table access functions<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mach.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;symopen(Fhdr *hdr)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;symclose(Fhdr *hdr)<br>
-    Fhdr &nbsp;&nbsp;&nbsp;&nbsp;*findhdr(char *name)<br>
-    extern &nbsp;&nbsp;&nbsp;Fhdr* fhdrlist; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indexsym(uint n, Symbol *s)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lookupsym(char *fn, char *var, Symbol *s)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;findsym(Loc loc, uint class, Symbol *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;findexsym(Fhdr *hdr, uint n, Symbol *s)<br>
-    Symbol *flookupsym(Fhdr *hdr, char *name)<br>
-    Symbol *ffindsym(Fhdr *hdr, Loc loc, uint class) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indexlsym(Symbol *s1, uint n, Symbol *s2)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lookuplsym(Symbol *s1, char *name, Symbol *s2)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;findlsym(Symbol *s1, Loc loc, Symbol *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;symoff(char *a, uint n, ulong addr, uint class) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc2file(ulong pc, char *file, uint n, ulong *line)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc2line(ulong pc, ulong *line)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileline(ulong pc, char *buf, uint n)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file2pc(char *file, ulong line, ulong *pc)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line2pc(ulong basepc, ulong line, ulong *pc)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fnbound(ulong pc, ulong bounds[2])<br>
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions provide machine-independent access to the symbol
-    table of an executable file or executing process. <a href="../man3/Mach.html"><i>Mach</i>(3)</a>, <a href="../man3/mach-file.html"><i>mach-file</i>(3)</a>,
-    and <a href="../man3/mach-map.html"><i>mach-map</i>(3)</a> describe additional library functions for accessing
-    executable files and executing processes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Symopen</i> uses the data in the <tt><font size=+1>Fhdr</font></tt> structure filled by <i>crackhdr</i>
-    (see <a href="../man3/mach-file.html"><i>mach-file</i>(3)</a>) to initialize in-memory structures used to
-    access the symbol tables contained in the file. <i>Symclose</i> frees
-    the structures. The rest of the functions described here access
-    a composite symbol table made up of all currently open tables.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The set of all currently open <tt><font size=+1>Fhdr</font></tt>s is maintained as a linked
-    list starting at <i>fhdrlist</i> (chained via <tt><font size=+1>Fhdr.next</font></tt>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Findhdr</i> searches the currently open <tt><font size=+1>Fhdr</font></tt>s for one whose file name
-    ends with the path <i>name</i> (that is, <tt><font size=+1>libc.so</font></tt> matches <tt><font size=+1>/usr/lib/libc.so</font></tt>
-    but not <tt><font size=+1>mylibc.so</font></tt>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>Symbol</font></tt> data structure:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        typedef struct Symbol Symbol;<br>
-        struct Symbol<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char &nbsp;&nbsp;&nbsp;*name;<br>
-            Loc &nbsp;&nbsp;&nbsp;loc;<br>
-            Loc &nbsp;&nbsp;&nbsp;hiloc;<br>
-            char &nbsp;&nbsp;&nbsp;class;<br>
-            char &nbsp;&nbsp;&nbsp;type;<br>
-            <i>...<br>
-            </i>
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-        
-    </table>
-    describes a symbol table entry. The <tt><font size=+1>value</font></tt> field contains the offset
-    of the symbol within its address space: global variables relative
-    to the beginning of the data segment, text beyond the start of
-    the text segment, and automatic variables and parameters relative
-    to the stack frame. The <tt><font size=+1>type</font></tt> field contains the type of
-    the symbol:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>T</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text segment symbol<br>
-        <tt><font size=+1>t</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static text segment symbol<br>
-        <tt><font size=+1>D</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data segment symbol<br>
-        <tt><font size=+1>d</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static data segment symbol<br>
-        <tt><font size=+1>B</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bss segment symbol<br>
-        <tt><font size=+1>b</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static bss segment symbol<br>
-        <tt><font size=+1>a</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;automatic (local) variable symbol<br>
-        <tt><font size=+1>p</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function parameter symbol<br>
-        <tt><font size=+1>U</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;undefined symbol<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-        
-    </table>
-    The <tt><font size=+1>class</font></tt> field assigns the symbol to a general class; <tt><font size=+1>CTEXT</font></tt>,
-    <tt><font size=+1>CDATA</font></tt>, <tt><font size=+1>CAUTO</font></tt>, and <tt><font size=+1>CPARAM</font></tt> are the most popular. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Indexsym</i> stores information for the <i>n th</i> symbol into <i>s</i>. The symbols
-    are ordered by increasing address. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Lookupsym</i> fills a <tt><font size=+1>Symbol</font></tt> structure with symbol table information.
-    Global variables and functions are represented by a single name;
-    local variables and parameters are uniquely specified by a function
-    and variable name pair. Arguments <i>fn</i> and <i>var</i> contain the name
-    of a function and variable, respectively. If both are
-    non-zero, the symbol table is searched for a parameter or automatic
-    variable. If only <i>var</i> is zero, the text symbol table is searched
-    for function <i>fn</i>. If only <i>fn</i> is zero, the global variable table
-    is searched for <i>var</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Findsym</i> returns the symbol table entry of type <i>class</i> stored near
-    <i>addr</i>. The selected symbol is a global variable or function with
-    address nearest to and less than or equal to <i>addr</i>. Class specification
-    <tt><font size=+1>CDATA</font></tt> searches only the global variable symbol table; class <tt><font size=+1>CTEXT</font></tt>
-    limits the search to the text symbol table. Class
-    specification <tt><font size=+1>CANY</font></tt> searches the text table first, then the global
-    table. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Findexsym</i>, <i>flookupsym</i>, and <i>ffindsym</i> are similar to <i>indexsym</i>, <i>lookupsym</i>,
-    and <i>findsym</i>, but operate only on the symbols from <i>hdr</i>. <i>Flookupsym</i>
-    and <i>ffindsym</i> return pointers to data stored in the <i>hdr</i>, which
-    must not be modified or freed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Indexlsym</i>, <i>lookuplsym</i>, and <i>findlsym</i> are similar to <i>indexsym</i>, <i>lookupsym</i>,
-    and <i>findsym</i>, but operate on the smaller symbol table of parameters
-    and variables local to the function represented by symbol <i>s1</i>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Indexlsym</i> writes symbol information for the <i>n</i>th local symbol of
-    function <i>s1</i> to <i>s2</i>. Function parameters appear first in the ordering,
-    followed by local symbols. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Lookuplsym</i> writes symbol information for the symbol named <i>name</i>
-    in function <i>s1</i> to <i>s2</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Findlsym</i> searches for a symbol local to the function <i>s1</i> whose
-    location is exactly <i>loc</i>, writing its symbol information to <i>s2</i>.
-    <i>Loc</i> is almost always an indirection through a frame pointer register;
-    the details vary from architecture to architecture. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Symoff</i> converts a location to a symbol reference. The string containing
-    that reference is of the form &#8216;name+offset&#8217;, where &#8216;name&#8217; is the
-    name of the nearest symbol with an address less than or equal
-    to the target address, and &#8216;offset&#8217; is the hexadecimal offset
-    beyond that symbol. If &#8216;offset&#8217; is zero, only the name of the
-    symbol is printed. If no symbol is found within 4096 bytes of
-    the address, the address is formatted as a hexadecimal address.
-    <i>Buf</i> is the address of a buffer of <i>n</i> bytes to receive the formatted
-    string. <i>Addr</i> is the address to be converted. <i>Type</i> is the type
-    code of the search space: <tt><font size=+1>CTEXT</font></tt>, <tt><font size=+1>CDATA</font></tt>, or <tt><font size=+1>CANY</font></tt>. <i>Symoff
-    </i>returns the length of the formatted string contained in <i>buf</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Pc2file</i> searches the symbol table to find the file and line number
-    corresponding to the instruction at program counter <i>pc</i>. <i>File</i> is
-    the address of a buffer of <i>n</i> bytes to receive the file name. <i>Line</i>
-    receives the line number. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Pc2line</i> is like <i>pc2file</i> but neglects to return information about
-    the source file. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Fileline</i> is also like <i>pc2file</i>, but returns the file and line number
-    in the <i>n</i>-byte text buffer <i>buf</i>, formatted as &#8216;file:line&#8217;. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>File2pc</i> performs the opposite mapping: it stores in <i>pc</i> a text
-    address associated with line <i>line</i> in file <i>file</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Line2pc</i> is similar: it converts a line number to an instruction
-    address, storing it in <i>pc</i>. Since a line number does not uniquely
-    identify an instruction (e.g., every source file has line 1),
-    <i>basepc</i> specifies a text address from which the search begins.
-    Usually this is the address of the first function in the file
-    of interest. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Fnbound</i> returns the start and end addresses of the function containing
-    the text address supplied as the first argument. The second argument
-    is an array of two unsigned longs; <i>fnbound</i> places the bounding
-    addresses of the function in the first and second elements of
-    this array. The start address is the address of the
-    first instruction of the function; the end address is the first
-    address beyond the end of the target function. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    All functions return 0 on success and &ndash;1 on error. When an error
-    occurs, a message describing it is stored in the system error
-    buffer where it is available via <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libmach<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mach.html"><i>mach</i>(3)</a>, <a href="../man3/mach-file.html"><i>mach-file</i>(3)</a>, <a href="../man3/mach-map.html"><i>mach-map</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/mach.html b/man/man3/mach.html
deleted file mode 100644
index d69e592..0000000
--- a/man/man3/mach.html
+++ /dev/null
@@ -1,123 +0,0 @@
-<head>
-<title>mach(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MACH(3)</b><td align=right><b>MACH(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    machbytype, machbyname &ndash; machine-independent access to executables
-    and programs<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mach.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>void machbytype(int type) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int machbyname(char *name) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>extern Mach *mach;<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Libmach</i> provides an interface for accessing the executable files
-    and executing images of various architectures and operating systems.
-    The interface is machine-independent, meaning that, for example,
-    Mac OS X core dumps may be inspected using an x86 Linux machine
-    and vice versa. In its current form, the library is
-    mainly useful for writing debuggers of one sort or another. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    An architecture is described primarily by a <tt><font size=+1>Mach</font></tt> structure, which
-    contains data structures and parameters describing the particular
-    architecture. Most library functions assume that the global variable
-    <i>mach</i> points at the structure for the architecture being debugged.
-    It is set implicitly by <i>crackhdr</i> (see <a href="../man3/mach-file.html"><i>mach-file</i>(3)</a>) and
-    can be set explicitly by calling <i>machbyname</i> or <i>machbytype</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    There is no operating system-specific structure akin to <i>mach</i>.
-    Typically the choice of operating system on a particular architecture
-    affects only the executable and core dump formats; the various
-    file parsers deduce the operating system from information in the
-    binary files themselves and adjust accordingly. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The supported architectures are <tt><font size=+1>386</font></tt> (Intel 32-bit x86) 386 and
-    later) and <tt><font size=+1>power</font></tt> (IBM PowerPC, typically running Mac OS X). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Other manual pages describe the library functions in detail. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <a href="../man3/Mach-cmd.html"><i>Mach-cmd</i>(3)</a> describes some convenience routines for attaching
-    to processes and core files. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <a href="../man3/Mach-file.html"><i>Mach-file</i>(3)</a> describes the manipulation of binary files. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <a href="../man3/Mach-map.html"><i>Mach-map</i>(3)</a> describes the interface to address spaces and register
-    sets in executable files and executing programs. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <a href="../man3/Mach-stack.html"><i>Mach-stack</i>(3)</a> describes support for unwinding the stack. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <a href="../man3/Mach-swap.html"><i>Mach-swap</i>(3)</a> describes helper functions for accessing data in
-    a particular byte order. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <a href="../man3/Mach-symbol.html"><i>Mach-symbol</i>(3)</a> describes the interface to debugging symbol information.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libmach<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mach-file.html"><i>mach-file</i>(3)</a>, <a href="../man3/mach-map.html"><i>mach-map</i>(3)</a>, <a href="../man3/mach-stack.html"><i>mach-stack</i>(3)</a>, <a href="../man3/mach-swap.html"><i>mach-swap</i>(3)</a>, <a href="../man3/mach-symbol.html"><i>mach-symbol</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/malloc.html b/man/man3/malloc.html
deleted file mode 100644
index 9c30c29..0000000
--- a/man/man3/malloc.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<head>
-<title>malloc(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MALLOC(3)</b><td align=right><b>MALLOC(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    malloc, mallocz, free, realloc, calloc, setmalloctag, setrealloctag,
-    getmalloctag, getrealloctag &ndash; memory allocator<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void* malloc(ulong size) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void* mallocz(ulong size, int clr) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;free(void *ptr) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void* realloc(void *ptr, ulong size) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void* calloc(ulong nelem, ulong elsize) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;setmalloctag(void *ptr, ulong tag) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong getmalloctag(void *ptr) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;setrealloctag(void *ptr, ulong tag) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong getrealloctag(void *ptr)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Malloc</i> and <i>free</i> provide a simple memory allocation package. <i>Malloc</i>
-    returns a pointer to a new block of at least <i>size</i> bytes. The block
-    is suitably aligned for storage of any type of object. No two
-    active pointers from <i>malloc</i> will have the same value. The call
-    <tt><font size=+1>malloc(0)</font></tt> returns a valid pointer rather than null. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The argument to <i>free</i> is a pointer to a block previously allocated
-    by <i>malloc</i>; this space is made available for further allocation.
-    It is legal to free a null pointer; the effect is a no-op. The
-    contents of the space returned by <i>malloc</i> are undefined. <i>Mallocz</i>
-    behaves as <i>malloc</i>, except that if <i>clr</i> is non-zero, the memory
-    returned will be zeroed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Realloc</i> changes the size of the block pointed to by <i>ptr</i> to <i>size</i>
-    bytes and returns a pointer to the (possibly moved) block. The
-    contents will be unchanged up to the lesser of the new and old
-    sizes. <i>Realloc</i> takes on special meanings when one or both arguments
-    are zero:<br>
-    <tt><font size=+1>realloc(0, size)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        means <tt><font size=+1>malloc(size)</font></tt>; returns a pointer to the newly-allocated memory<br>
-        
-    </table>
-    <tt><font size=+1>realloc(ptr, 0)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        means <tt><font size=+1>free(ptr)</font></tt>; returns null<br>
-        
-    </table>
-    <tt><font size=+1>realloc(0, 0)<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        no-op; returns null 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-        
-    </table>
-    <i>Calloc</i> allocates space for an array of <i>nelem</i> elements of size
-    <i>elsize</i>. The space is initialized to zeros. <i>Free</i> frees such a block.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The memory allocator on Plan 9 maintains two word-sized fields
-    associated with each block, the &#8220;malloc tag&#8221; and the &#8220;realloc
-    tag&#8221;. By convention, the malloc tag is the PC that allocated the
-    block, and the realloc tag the PC that last reallocated the block.
-    These may be set or examined with <i>setmalloctag</i>, <i>getmalloctag</i>,
-    <i>setrealloctag</i>, and <i>getrealloctag</i>. When allocating blocks directly
-    with <i>malloc</i> and <i>realloc</i>, these tags will be set properly. If a
-    custom allocator wrapper is used, the allocator wrapper can set
-    the tags itself (usually by passing the result of <a href="../man3/getcallerpc.html"><i>getcallerpc</i>(3)</a>
-    to <i>setmalloctag</i>) to provide more useful information about the
-    source
-    of allocation.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/malloc.c<br>
-    /usr/local/plan9/src/lib9/malloctag.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>trump</i> (in <a href="../man1/acid.html"><i>acid</i>(1)</a>), <a href="../man3/getcallerpc.html"><i>getcallerpc</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Malloc, realloc</i> and <i>calloc</i> return 0 if there is no available memory.
-    <i>Errstr</i> is likely to be set. If the allocated blocks have no malloc
-    or realloc tags, <i>getmalloctag</i> and <i>getrealloctag</i> return <tt><font size=+1>~0</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <i>trump</i> library for <i>acid</i> can be used to obtain traces of malloc
-    execution; see <a href="../man1/acid.html"><i>acid</i>(1)</a>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The different specification of <i>calloc</i> is bizarre. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    User errors can corrupt the storage arena. The most common gaffes
-    are (1) freeing an already freed block, (2) storing beyond the
-    bounds of an allocated block, and (3) freeing data that was not
-    obtained from the allocator. When <i>malloc</i> and <i>free</i> detect such
-    corruption, they abort. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    To avoid name conflicts with the system versions of these functions,
-    <i>malloc</i>, <i>realloc</i>, <i>calloc</i>, and <i>free</i> are preprocessor macros defined
-    as <i>p9malloc</i>, <i>p9realloc</i>, <i>p9calloc</i>, and <i>p9free</i>; see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/matrix.html b/man/man3/matrix.html
deleted file mode 100644
index ad72d10..0000000
--- a/man/man3/matrix.html
+++ /dev/null
@@ -1,263 +0,0 @@
-<head>
-<title>matrix(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MATRIX(3)</b><td align=right><b>MATRIX(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    ident, matmul, matmulr, determinant, adjoint, invertmat, xformpoint,
-    xformpointd, xformplane, pushmat, popmat, rot, qrot, scale, move,
-    xform, ixform, persp, look, viewport &ndash; Geometric transformations<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;draw.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;geometry.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void ident(Matrix m) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void matmul(Matrix a, Matrix b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void matmulr(Matrix a, Matrix b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double determinant(Matrix m) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void adjoint(Matrix m, Matrix madj) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double invertmat(Matrix m, Matrix inv) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 xformpoint(Point3 p, Space *to, Space *from) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 xformpointd(Point3 p, Space *to, Space *from) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point3 xformplane(Point3 p, Space *to, Space *from) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Space *pushmat(Space *t) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Space *popmat(Space *t) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void rot(Space *t, double theta, int axis) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void qrot(Space *t, Quaternion q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void scale(Space *t, double x, double y, double z) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void move(Space *t, double x, double y, double z) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void xform(Space *t, Matrix m) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void ixform(Space *t, Matrix m, Matrix inv) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int persp(Space *t, double fov, double n, double f) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void look(Space *t, Point3 eye, Point3 look, Point3 up) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void viewport(Space *t, Rectangle r, double aspect)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines manipulate 3-space affine and projective transformations,
-    represented as 4&#215;4 matrices, thus:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef double Matrix[4][4];<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    <i>Ident</i> stores an identity matrix in its argument. <i>Matmul</i> stores
-    <i>a&#215;b</i> in <i>a</i>. <i>Matmulr</i> stores <i>b&#215;a</i> in <i>b</i>. <i>Determinant</i> returns the determinant
-    of matrix <i>m</i>. <i>Adjoint</i> stores the adjoint (matrix of cofactors)
-    of <i>m</i> in <i>madj</i>. <i>Invertmat</i> stores the inverse of matrix <i>m</i> in <i>minv</i>,
-    returning <i>m</i>&#8217;s determinant. Should <i>m</i> be singular
-    (determinant zero), <i>invertmat</i> stores its adjoint in <i>minv</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The rest of the routines described here manipulate <i>Spaces</i> and
-    transform <i>Point3s</i>. A <i>Point3</i> is a point in three-space, represented
-    by its homogeneous coordinates:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct Point3 Point3;<br>
-        struct Point3{<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            double x, y, z, w;<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    The homogeneous coordinates (<i>x</i>, <i>y</i>, <i>z</i>, <i>w</i>) represent the Euclidean
-    point (<i>x</i>/<i>w</i>, <i>y</i>/<i>w</i>, <i>z</i>/<i>w</i>) if <i>w</i>!=0, and a &#8220;point at infinity&#8221; if <i>w</i>=0.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A <i>Space</i> is just a data structure describing a coordinate system:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct Space Space;<br>
-        struct Space{<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Matrix t;<br>
-            Matrix tinv;<br>
-            Space *next;<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    It contains a pair of transformation matrices and a pointer to
-    the <i>Space</i>&#8217;s parent. The matrices transform points to and from
-    the &#8220;root coordinate system,&#8221; which is represented by a null <i>Space</i>
-    pointer. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Pushmat</i> creates a new <i>Space</i>. Its argument is a pointer to the
-    parent space. Its result is a newly allocated copy of the parent,
-    but with its <tt><font size=+1>next</font></tt> pointer pointing at the parent. <i>Popmat</i> discards
-    the <tt><font size=+1>Space</font></tt> that is its argument, returning a pointer to the stack.
-    Nominally, these two functions define a stack of
-    transformations, but <tt><font size=+1>pushmat</font></tt> can be called multiple times on the
-    same <tt><font size=+1>Space</font></tt> multiple times, creating a transformation tree. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Xformpoint</i> and <i>Xformpointd</i> both transform points from the <tt><font size=+1>Space</font></tt>
-    pointed to by <i>from</i> to the space pointed to by <i>to</i>. Either pointer
-    may be null, indicating the root coordinate system. The difference
-    between the two functions is that <tt><font size=+1>xformpointd</font></tt> divides <i>x</i>, <i>y</i>, <i>z</i>,
-    and <i>w</i> by <i>w</i>, if <i>w</i>!=0, making (<i>x</i>, <i>y</i>, <i>z</i>) the Euclidean
-    coordinates of the point. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Xformplane</i> transforms planes or normal vectors. A plane is specified
-    by the coefficients (<i>a</i>, <i>b</i>, <i>c</i>, <i>d</i>) of its implicit equation <i>ax+by+cz+d</i>=0.
-    Since this representation is dual to the homogeneous representation
-    of points, <tt><font size=+1>libgeometry</font></tt> represents planes by <tt><font size=+1>Point3</font></tt> structures,
-    with (<i>a</i>, <i>b</i>, <i>c</i>, <i>d</i>) stored in (<i>x</i>, <i>y</i>, <i>z</i>, <i>w</i>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The remaining functions transform the coordinate system represented
-    by a <tt><font size=+1>Space</font></tt>. Their <tt><font size=+1>Space *</font></tt> argument must be non-null -- you can&#8217;t
-    modify the root <tt><font size=+1>Space</font></tt>. <i>Rot</i> rotates by angle <i>theta</i> (in radians)
-    about the given <i>axis</i>, which must be one of <tt><font size=+1>XAXIS</font></tt>, <tt><font size=+1>YAXIS</font></tt> or <tt><font size=+1>ZAXIS</font></tt>.
-    <i>Qrot</i> transforms by a rotation about an
-    arbitrary axis, specified by <tt><font size=+1>Quaternion</font></tt> <i>q</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Scale</i> scales the coordinate system by the given scale factors
-    in the directions of the three axes. <i>Move</i> translates by the given
-    displacement in the three axial directions. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Xform</i> transforms the coordinate system by the given <tt><font size=+1>Matrix</font></tt>. If
-    the matrix&#8217;s inverse is known <i>a priori</i>, calling <i>ixform</i> will save
-    the work of recomputing it. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Persp</i> does a perspective transformation. The transformation maps
-    the frustum with apex at the origin, central axis down the positive
-    <i>y</i> axis, and apex angle <i>fov</i> and clipping planes <i>y</i>=<i>n</i> and <i>y</i>=<i>f</i> into
-    the double-unit cube. The plane <i>y</i>=<i>n</i> maps to <i>y</i>&#8217;=-1, <i>y</i>=<i>f</i> maps to
-    <i>y</i>&#8217;=1. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Look</i> does a view-pointing transformation. The <tt><font size=+1>eye</font></tt> point is moved
-    to the origin. The line through the <i>eye</i> and <i>look</i> points is aligned
-    with the y axis, and the plane containing the <tt><font size=+1>eye</font></tt>, <tt><font size=+1>look</font></tt> and <tt><font size=+1>up</font></tt>
-    points is rotated into the <i>x</i>-<i>y</i> plane. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Viewport</i> maps the unit-cube window into the given screen viewport.
-    The viewport rectangle <i>r</i> has <i>r</i><tt><font size=+1>.min</font></tt> at the top left-hand corner,
-    and <i>r</i><tt><font size=+1>.max</font></tt> just outside the lower right-hand corner. Argument <i>aspect</i>
-    is the aspect ratio (<i>dx</i>/<i>dy</i>) of the viewport&#8217;s pixels (not of the
-    whole viewport). The whole window is transformed
-    to fit centered inside the viewport with equal slop on either
-    top and bottom or left and right, depending on the viewport&#8217;s
-    aspect ratio. The window is viewed down the <i>y</i> axis, with <i>x</i> to
-    the left and <i>z</i> up. The viewport has <i>x</i> increasing to the right
-    and <i>y</i> increasing down. The window&#8217;s <i>y</i> coordinates are mapped,
-    unchanged, into the viewport&#8217;s <i>z</i> coordinates.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libgeometry/matrix.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/arith3.html"><i>arith3</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/memdraw.html b/man/man3/memdraw.html
deleted file mode 100644
index 57a0c96..0000000
--- a/man/man3/memdraw.html
+++ /dev/null
@@ -1,466 +0,0 @@
-<head>
-<title>memdraw(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MEMDRAW(3)</b><td align=right><b>MEMDRAW(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Memimage, Memdata, Memdrawparam, memimageinit, wordaddr, byteaddr,
-    memimagemove, allocmemimage, allocmemimaged, readmemimage, creadmemimage,
-    writememimage, freememimage, memsetchan, loadmemimage, cloadmemimage,
-    unloadmemimage, memfillcolor, memarc, mempoly, memellipse,
-    memfillpoly, memimageline, memimagedraw, drawclip, memlinebbox,
-    memlineendsize, allocmemsubfont, openmemsubfont, freememsubfont,
-    memsubfontwidth, getmemdefont, memimagestring, iprint, hwdraw
-    &ndash; drawing routines for memory-resident images<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt; <br>
-    #include &lt;u.h&gt; <br>
-    #include &lt;libc.h&gt; <br>
-    #include &lt;draw.h&gt; <br>
-    #include &lt;memdraw.h&gt; <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>typedef struct Memdata<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*base; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* allocated data pointer */<br>
-        uchar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*bdata; &nbsp;&nbsp;&nbsp;&nbsp;/* first byte of actual data; word&#8722;aligned */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ref;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* number of Memimages using this data */<br>
-        void* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imref; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* last image that pointed at this */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allocd; &nbsp;&nbsp;&nbsp;&nbsp;/* is this malloc'd? */<br>
-        
-    </table>
-    } Memdata;<br>
-    enum {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Frepl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1&lt;&lt;0, &nbsp;&nbsp;&nbsp;&nbsp;/* is replicated */<br>
-        Fsimple &nbsp;&nbsp;&nbsp;&nbsp;= 1&lt;&lt;1, &nbsp;&nbsp;&nbsp;&nbsp;/* is 1x1 */<br>
-        Fgrey &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1&lt;&lt;2, &nbsp;&nbsp;&nbsp;&nbsp;/* is grey */<br>
-        Falpha &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1&lt;&lt;3, &nbsp;&nbsp;&nbsp;&nbsp;/* has explicit alpha */<br>
-        Fcmap &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1&lt;&lt;4, &nbsp;&nbsp;&nbsp;&nbsp;/* has cmap channel */<br>
-        Fbytes &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1&lt;&lt;5, &nbsp;&nbsp;&nbsp;&nbsp;/* has only 8&#8722;bit channels */<br>
-        
-    </table>
-    };<br>
-    typedef struct Memimage<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Rectangle r;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* rectangle in data area, local coords */<br>
-        Rectangle clipr; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* clipping region */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;depth; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* number of bits of storage per pixel */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nchan; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* number of channels */<br>
-        ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chan; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* channel descriptions */<br>
-        Memdata &nbsp;&nbsp;&nbsp;&nbsp;*data; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* pointer to data */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zero; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* data&#8722;&gt;bdata+zero==&amp;byte containing (0,0) */<br>
-        ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* width in words of a single scan line */<br>
-        Memlayer &nbsp;&nbsp;&nbsp;*layer; &nbsp;&nbsp;&nbsp;&nbsp;/* nil if not a layer*/<br>
-        ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags;<br>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>...<br>
-        </i>
-    </table>
-    <tt><font size=+1>} Memimage;<br>
-    typedef struct Memdrawparam<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Memimage &nbsp;&nbsp;&nbsp;*dst;<br>
-        Rectangle r;<br>
-        Memimage &nbsp;&nbsp;&nbsp;*src;<br>
-        Rectangle sr;<br>
-        Memimage &nbsp;&nbsp;&nbsp;*mask;<br>
-        Rectangle mr;<br>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>...<br>
-        </i>
-    </table>
-    <tt><font size=+1>} Memdrawparam;<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drawdebug;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt><i>
-    </i><tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memimageinit(void)<br>
-    ulong* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wordaddr(Memimage *i, Point p)<br>
-    uchar* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byteaddr(Memimage *i, Point p)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memimagemove(void *from, void *to)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Memimage* &nbsp;&nbsp;&nbsp;&nbsp;allocmemimage(Rectangle r, ulong chan)<br>
-    Memimage* &nbsp;&nbsp;&nbsp;&nbsp;allocmemimaged(Rectangle r, ulong chan, Memdata *data)<br>
-    Memimage* &nbsp;&nbsp;&nbsp;&nbsp;readmemimage(int fd)<br>
-    Memimage* &nbsp;&nbsp;&nbsp;&nbsp;creadmemimage(int fd)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writememimage(int fd, Memimage *i)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freememimage(Memimage *i)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memsetchan(Memimage*, ulong)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loadmemimage(Memimage *i, Rectangle r,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            uchar *buf, int nbuf)<br>
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cloadmemimage(Memimage *i, Rectangle r,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            uchar *buf, int nbuf)<br>
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unloadmemimage(Memimage *i, Rectangle r,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            uchar *buf, int nbuf)<br>
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memfillcolor(Memimage *i, ulong color)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memarc(Memimage *dst, Point c, int a, int b, int thick,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Memimage *src, Point sp, int alpha, int phi, Drawop op)<br>
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mempoly(Memimage *dst, Point *p, int np, int end0,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int end1, int radius, Memimage *src, Point sp, Drawop op)<br>
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memellipse(Memimage *dst, Point c, int a, int b,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int thick, Memimage *src, Point sp, Drawop op)<br>
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memfillpoly(Memimage *dst, Point *p, int np, int wind,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Memimage *src, Point sp, Drawop op)<br>
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memimageline(Memimage *dst, Point p0, Point p1, int end0,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int end1, int radius, Memimage *src, Point sp, Drawop op)<br>
-            
-        </table>
-        
-    </table>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memimagedraw(Memimage *dst, Rectangle r, Memimage *src,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Point sp, Memimage *mask, Point mp, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drawclip(Memimage *dst, Rectangle *dr, Memimage *src,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Point *sp, Memimage *mask, Point *mp,<br>
-             Rectangle *sr, Rectangle *mr)<br>
-            
-        </table>
-        
-    </table>
-    Rectangle &nbsp;&nbsp;&nbsp;&nbsp;memlinebbox(Point p0, Point p1, int end0, int end1,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int radius)<br>
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memlineendsize(int end)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Memsubfont* allocmemsubfont(char *name, int n, int height,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int ascent, Fontchar *info, Memimage *i)<br>
-            
-        </table>
-        
-    </table>
-    Memsubfont* openmemsubfont(char *name)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freememsubfont(Memsubfont *f)<br>
-    Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memsubfontwidth(Memsubfont *f, char *s)<br>
-    Memsubfont* getmemdefont(void)<br>
-    Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memimagestring(Memimage *dst, Point p, Memimage *color,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Point cp, Memsubfont *f, char *cs, Drawop op)<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iprint(char *fmt, ...)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hwdraw(Memdrawparam *param)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The <tt><font size=+1>Memimage</font></tt> type defines memory-resident rectangular pictures
-    and the methods to draw upon them; <tt><font size=+1>Memimage</font></tt>s differ from <tt><font size=+1>Image</font></tt>s
-    (see <a href="../man3/draw.html"><i>draw</i>(3)</a>) in that they are manipulated directly in user memory
-    rather than by RPCs to the <tt><font size=+1>/dev/draw</font></tt> hierarchy. The library is
-    the basis for the kernel <a href="../man3/draw.html"><i>draw</i>(3)</a> driver and also
-    used by a number of programs that must manipulate images without
-    a display. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>r, clipr</font></tt>, <tt><font size=+1>depth</font></tt>, <tt><font size=+1>nchan</font></tt>, and <tt><font size=+1>chan</font></tt> structure elements are identical
-    to the ones of the same name in the <tt><font size=+1>Image</font></tt> structure. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>flags</font></tt> element of the <tt><font size=+1>Memimage</font></tt> structure holds a number of
-    bits of information about the image. In particular, it subsumes
-    the purpose of the <tt><font size=+1>repl</font></tt> element of <tt><font size=+1>Image</font></tt> structures. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memimageinit</i> initializes various static data that the library
-    depends on, as well as the replicated solid color images <tt><font size=+1>memopaque</font></tt>,
-    <tt><font size=+1>memtransparent</font></tt>, <tt><font size=+1>memblack</font></tt>, and <tt><font size=+1>memwhite</font></tt>. It should be called before
-    referring to any of these images and before calling any of the
-    other library functions. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Each <tt><font size=+1>Memimage</font></tt> points at a <tt><font size=+1>Memdata</font></tt> structure that in turn points
-    at the actual pixel data for the image. This allows multiple images
-    to be associated with the same <tt><font size=+1>Memdata</font></tt>. The first word of the
-    data pointed at by the <tt><font size=+1>base</font></tt> element of <tt><font size=+1>Memdata</font></tt> points back at
-    the <tt><font size=+1>Memdata</font></tt> structure, so that in the Plan 9 kernel,
-    the memory allocator (see Plan 9&#8217;s <i>pool</i>(3)) can compact image
-    memory using <i>memimagemove</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Because images can have different coordinate systems, the <tt><font size=+1>zero</font></tt>
-    element of the <tt><font size=+1>Memimage</font></tt> structure contains the offset that must
-    be added to the <tt><font size=+1>bdata</font></tt> element of the corresponding <tt><font size=+1>Memdata</font></tt> structure
-    in order to yield a pointer to the data for the pixel (0,0). Adding
-    <tt><font size=+1>width</font></tt> machine words to this pointer moves it
-    down one scan line. The <tt><font size=+1>depth</font></tt> element can be used to determine
-    how to move the pointer horizontally. Note that this method works
-    even for images whose rectangles do not include the origin, although
-    one should only dereference pointers corresponding to pixels within
-    the image rectangle. <i>Wordaddr</i> and
-    <i>byteaddr</i> perform these calculations, returning pointers to the
-    word and byte, respectively, that contain the beginning of the
-    data for a given pixel. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Allocmemimage</i> allocages images with a given rectangle and channel
-    descriptor (see <tt><font size=+1>strtochan</font></tt> in <a href="../man3/graphics.html"><i>graphics</i>(3)</a>), creating a fresh <tt><font size=+1>Memdata</font></tt>
-    structure and associated storage. <i>Allocmemimaged</i> is similar but
-    uses the supplied <i>Memdata</i> structure rather than a new one. The
-    <i>readmemimage</i> function reads an
-    uncompressed bitmap from the given file descriptor, while <i>creadmemimage</i>
-    reads a compressed bitmap. <i>Writememimage</i> writes a compressed representation
-    of <i>i</i> to file descriptor <i>fd</i>. For more on bitmap formats, see <a href="../man7/image.html"><i>image</i>(7)</a>.
-    <i>Freememimage</i> frees images returned by any of these routines. The
-    <tt><font size=+1>Memimage</font></tt> structure
-    contains some tables that are used to store precomputed values
-    depending on the channel descriptor. <i>Memsetchan</i> updates the <tt><font size=+1>chan</font></tt>
-    element of the structure as well as these tables, returning &ndash;1
-    if passed a bad channel descriptor. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Loadmemimage</i> and <i>cloadmemimage</i> replace the pixel data for a given
-    rectangle of an image with the given buffer of uncompressed or
-    compressed data, respectively. When calling <i>cloadmemimage</i>, the
-    buffer must contain an integral number of compressed chunks of
-    data that exactly cover the rectangle.
-    <i>Unloadmemimage</i> retrieves the uncompressed pixel data for a given
-    rectangle of an image. All three return the number of bytes consumed
-    on success, and &ndash;1 in case of an error. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memfillcolor</i> fills an image with the given color, a 32-bit number
-    as described in <a href="../man3/color.html"><i>color</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memarc</i>, <i>mempoly</i>, <i>memellipse</i>, <i>memfillpoly</i>, <i>memimageline</i>, and <i>memimagedraw</i>
-    are identical to the <i>arc</i>, <i>poly</i>, <i>ellipse</i>, <i>fillpoly</i>, <i>line</i>, and <i>gendraw</i>,
-    routines described in <a href="../man3/draw.html"><i>draw</i>(3)</a>, except that they operate on <tt><font size=+1>Memimage</font></tt>s
-    rather than <tt><font size=+1>Image</font></tt>s. Similarly, <i>allocmemsubfont</i>, <i>openmemsubfont</i>,
-    <i>freememsubfont</i>,
-    <i>memsubfontwidth</i>, <i>getmemdefont</i>, and <i>memimagestring</i> are the <tt><font size=+1>Memimage</font></tt>
-    analogues of <i>allocsubfont</i>, <i>openfont</i>, <i>freesubfont</i>, <i>strsubfontwidth</i>,
-    <i>getdefont</i>, and <tt><font size=+1>string</font></tt> (see <a href="../man3/subfont.html"><i>subfont</i>(3)</a> and <a href="../man3/graphics.html"><i>graphics</i>(3)</a>), except
-    that they operate only on <tt><font size=+1>Memsubfont</font></tt>s rather than <tt><font size=+1>Font</font></tt>s. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Drawclip</i> takes the images involved in a draw operation, together
-    with the destination rectangle <tt><font size=+1>dr</font></tt> and source and mask alignment
-    points <tt><font size=+1>sp</font></tt> and <tt><font size=+1>mp</font></tt>, and clips them according to the clipping rectangles
-    of the images involved. It also fills in the rectangles <tt><font size=+1>sr</font></tt> and
-    <tt><font size=+1>mr</font></tt> with rectangles congruent to the returned
-    destination rectangle but translated so the upper left corners
-    are the returned <tt><font size=+1>sp</font></tt> and <tt><font size=+1>mp</font></tt>. <i>Drawclip</i> returns zero when the clipped
-    rectangle is empty. <i>Memlinebbox</i> returns a conservative bounding
-    box containing a line between two points with given end styles
-    and radius. <i>Memlineendsize</i> calculates the extra length
-    added to a line by attaching an end of a given style. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <i>hwdraw</i> and <i>iprint</i> functions are no-op stubs that may be overridden
-    by clients of the library. <i>Hwdraw</i> is called at each call to <i>memimagedraw</i>
-    with the current request&#8217;s parameters. If it can satisfy the request,
-    it should do so and return 1. If it cannot satisfy the request,
-    it should return 0. This allows (for
-    instance) the kernel to take advantage of hardware acceleration.
-    <i>Iprint</i> should format and print its arguments; it is given much
-    debugging output when the global integer variable <tt><font size=+1>drawdebug</font></tt> is
-    non-zero. In the kernel, <i>iprint</i> prints to a serial line rather
-    than the screen, for obvious reasons.
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/addpt.html"><i>addpt</i>(3)</a>, <a href="../man3/color.html"><i>color</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, <a href="../man3/memlayer.html"><i>memlayer</i>(3)</a>, <a href="../man3/stringsize.html"><i>stringsize</i>(3)</a>,
-    <a href="../man3/subfont.html"><i>subfont</i>(3)</a>, <a href="../man7/color.html"><i>color</i>(7)</a>, <a href="../man7/utf.html"><i>utf</i>(7)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Memimagestring</i> is unusual in using a subfont rather than a font,
-    and in having no parameter to align the source. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    These functions are archived into <i>libdraw</i>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/memlayer.html b/man/man3/memlayer.html
deleted file mode 100644
index c21f5bf..0000000
--- a/man/man3/memlayer.html
+++ /dev/null
@@ -1,325 +0,0 @@
-<head>
-<title>memlayer(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MEMLAYER(3)</b><td align=right><b>MEMLAYER(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    memdraw, memlalloc, memldelete, memlexpose, memlfree, memlhide,
-    memline, memlnorefresh, memload, memunload, memlorigin, memlsetrefresh,
-    memltofront, memltofrontn, memltorear, memltorearn &ndash; windows of
-    memory-resident images<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt; <br>
-    #include &lt;libc.h&gt; <br>
-    #include &lt;draw.h&gt; <br>
-    #include &lt;memdraw.h&gt; <br>
-    #include &lt;memlayer.h&gt; <br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>typedef struct Memscreen Memscreen;<br>
-    typedef struct Memlayer Memlayer;<br>
-    typedef void (*Refreshfn)(Memimage*, Rectangle, void*);<br>
-    struct Memscreen<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Memimage &nbsp;&nbsp;&nbsp;*frontmost; /* frontmost layer on screen */<br>
-        Memimage &nbsp;&nbsp;&nbsp;*rearmost; &nbsp;&nbsp;&nbsp;/* rearmost layer on screen */<br>
-        Memimage &nbsp;&nbsp;&nbsp;*image; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* upon which all layers are drawn */<br>
-        Memimage &nbsp;&nbsp;&nbsp;*fill; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* if non&#8722;zero, picture to use when repainting
-        */<br>
-        
-    </table>
-    };<br>
-    struct Memlayer<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Rectangle screenr; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* true position of layer on screen */<br>
-        Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delta; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* add delta to go from image coords to screen */<br>
-        Memscreen *screen; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* screen this layer belongs to */<br>
-        Memimage &nbsp;&nbsp;&nbsp;*front; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* window in front of this one */<br>
-        Memimage &nbsp;&nbsp;&nbsp;*rear; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* window behind this one*/<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clear; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* layer is fully visible */<br>
-        Memimage &nbsp;&nbsp;&nbsp;*save; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* save area for obscured parts */<br>
-        Refreshfn refreshfn; &nbsp;&nbsp;&nbsp;/* fn to refresh obscured parts if save==nil
-        */<br>
-        void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*refreshptr;/* argument to refreshfn */<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Memimage* memlalloc(Memscreen *s, Rectangle r, Refreshfn fn, void
-    *arg, ulong col)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memlnorefresh(Memimage *i, Rectangle r, void *arg)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memlsetrefresh(Memimage *i, Refreshfn fn, void *arg)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memldelete(Memimage *i)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memlfree(Memimage *i)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memlexpose(Memimage *i, Rectangle r)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memlhide(Memimage *i, Rectangle r)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memltofront(Memimage *i)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memltofrontn(Memimage**ia, int n)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memltorear(Memimage *i)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memltorearn(Memimage **ia , int n)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memlorigin(Memimage *i, Point log, Point phys)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memdraw(Image *dst, Rectangle r,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Image *src, Point sp, Image *mask, Point mp, Drawop op)<br>
-            
-        </table>
-        
-    </table>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memload(Memimage *i, Rectangle r,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            uchar *buf, int n, int iscompressed) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memunload(Memimage *i, Rectangle r,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            uchar *buf, int n) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions build upon the <a href="../man3/memdraw.html"><i>memdraw</i>(3)</a> interface to maintain
-    overlapping graphical windows on in-memory images. They are used
-    by the kernel to implement the windows interface presented by
-    <a href="../man3/draw.html"><i>draw</i>(3)</a> and <a href="../man3/window.html"><i>window</i>(3)</a> and probably have little use outside of
-    the kernel. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The basic function is to extend the definition of a <tt><font size=+1>Memimage</font></tt> (see
-    <a href="../man3/memdraw.html"><i>memdraw</i>(3)</a>) to include overlapping windows defined by the <tt><font size=+1>Memlayer</font></tt>
-    type. The first fields of the <tt><font size=+1>Memlayer</font></tt> structure are identical
-    to those in <tt><font size=+1>Memimage</font></tt>, permitting a function that expects a <tt><font size=+1>Memimage</font></tt>
-    to be passed a <tt><font size=+1>Memlayer</font></tt>, and vice versa.
-    Both structures have a <tt><font size=+1>save</font></tt> field, which is nil in a <tt><font size=+1>Memimage</font></tt>
-    and points to &#8216;backing store&#8217; in a <tt><font size=+1>Memlayer</font></tt>. The layer routines
-    accept <tt><font size=+1>Memimages</font></tt> or <tt><font size=+1>Memlayers</font></tt>; if the image is a <tt><font size=+1>Memimage</font></tt> the
-    underlying <tt><font size=+1>Memimage</font></tt> routine is called; otherwise the layer routines
-    recursively subdivide the geometry, reducing the
-    operation into a smaller component that ultimately can be performed
-    on a <tt><font size=+1>Memimage</font></tt>, either the display on which the window appears,
-    or the backing store. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>Memlayers</font></tt> are associated with a <tt><font size=+1>Memscreen</font></tt> that holds the data
-    structures to maintain the windows and connects them to the associated
-    <tt><font size=+1>image</font></tt>. The <tt><font size=+1>fill</font></tt> color is used to paint the background when a window
-    is deleted. There is no function to establish a <tt><font size=+1>Memscreen</font></tt>; to
-    create one, allocate the memory, zero
-    <tt><font size=+1>frontmost</font></tt> and <tt><font size=+1>rearmost</font></tt>, set <tt><font size=+1>fill</font></tt> to a valid fill color or image,
-    and set <tt><font size=+1>image</font></tt> to the <tt><font size=+1>Memimage</font></tt> (or <tt><font size=+1>Memlayer</font></tt>) on which the windows
-    will be displayed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memlalloc</i> allocates a <tt><font size=+1>Memlayer</font></tt> of size <i>r</i> on <tt><font size=+1>Memscreen</font></tt> <i>s</i>. If <i>col</i>
-    is not <tt><font size=+1>DNofill</font></tt>, the new window will be initialized by painting
-    it that color. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The refresh function <i>fn</i> and associated argument <i>arg</i> will be called
-    by routines in the library to restore portions of the window uncovered
-    due to another window being deleted or this window being pulled
-    to the front of the stack. The function, when called, receives
-    a pointer to the image (window) being refreshed, the
-    rectangle that has been uncovered, and the <i>arg</i> recorded when the
-    window was created. A couple of predefined functions provide built-in
-    management methods: <i>memlnorefresh</i> does no backup at all, useful
-    for making efficient temporary windows; while a <i>nil</i> function specifies
-    that the backing store
-    (<tt><font size=+1>Memlayer.save</font></tt>) will be used to keep the obscured data. Other
-    functions may be provided by the client. <i>Memlsetrefresh</i> allows
-    one to change the function associated with the window. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memldelete</i> deletes the window <i>i</i>, restoring the underlying display.
-    <i>Memlfree</i> frees the data structures without unlinking the window
-    from the associated <tt><font size=+1>Memscreen</font></tt> or doing any graphics. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memlexpose</i> restores rectangle <i>r</i> within the window, using the backing
-    store or appropriate refresh method. <i>Memlhide</i> goes the other way,
-    backing up <i>r</i> so that that portion of the screen may be modified
-    without losing the data in this window. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memltofront</i> pulls <i>i</i> to the front of the stack of windows, making
-    it fully visible. <i>Memltofrontn</i> pulls the <i>n</i> windows in the array
-    <i>ia</i> to the front as a group, leaving their internal order unaffected.
-    <i>Memltorear</i> and <i>memltorearn</i> push the windows to the rear. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memlorigin</i> changes the coordinate systems associated with the
-    window <i>i</i>. The points <i>log</i> and <i>phys</i> represent the upper left corner
-    (<tt><font size=+1>min</font></tt>) of the window&#8217;s internal coordinate system and its physical
-    location on the screen. Changing <i>log</i> changes the interpretation
-    of coordinates within the window; for example, setting it
-    to (0, 0) makes the upper left corner of the window appear to
-    be the origin of the coordinate system, regardless of its position
-    on the screen. Changing <i>phys</i> changes the physical location of
-    the window on the screen. When a window is created, its logical
-    and physical coordinates are the same, so
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <tt><font size=+1>memlorigin(i, i&#8722;&gt;r.min, i&#8722;&gt;r.min)<br>
-            </font></tt>
-        </table>
-        
-    </table>
-    would be a no-op. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memdraw</i> and <i>memline</i> are implemented in the layer library but provide
-    the main entry points for drawing on memory-resident windows.
-    They have the signatures of <i>memimagedraw</i> and <i>memimageline</i> (see
-    <a href="../man3/memdraw.html"><i>memdraw</i>(3)</a>) but accept <tt><font size=+1>Memlayer</font></tt> or <tt><font size=+1>Memimage</font></tt> arguments both. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memload</i> and <i>memunload</i> are similarly layer-savvy versions of <i>loadmemimage</i>
-    and <i>unloadmemimage</i>. The <i>iscompressed</i> flag to <i>memload</i> specifies
-    whether the <i>n</i> bytes of data in <i>buf</i> are in compressed image format
-    (see <a href="../man7/image.html"><i>image</i>(7)</a>).<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, <a href="../man3/memdraw.html"><i>memdraw</i>(3)</a>, <a href="../man3/stringsize.html"><i>stringsize</i>(3)</a>, <a href="../man3/window.html"><i>window</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions are archived into <i>libdraw</i>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/memory.html b/man/man3/memory.html
deleted file mode 100644
index a67101b..0000000
--- a/man/man3/memory.html
+++ /dev/null
@@ -1,123 +0,0 @@
-<head>
-<title>memory(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MEMORY(3)</b><td align=right><b>MEMORY(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    memccpy, memchr, memcmp, memcpy, memmove, memset &ndash; memory operations<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void* memccpy(void *s1, void *s2, int c, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void* memchr(void *s, int c, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;memcmp(void *s1, void *s2, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void* memcpy(void *s1, void *s2, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void* memmove(void *s1, void *s2, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void* memset(void *s, int c, long n)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions operate efficiently on memory areas (arrays of
-    bytes bounded by a count, not terminated by a zero byte). They
-    do not check for the overflow of any receiving memory area. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memccpy</i> copies bytes from memory area <i>s2</i> into <i>s1</i>, stopping after
-    the first occurrence of byte <i>c</i> has been copied, or after <i>n</i> bytes
-    have been copied, whichever comes first. It returns a pointer
-    to the byte after the copy of <i>c</i> in <i>s1</i>, or zero if <i>c</i> was not found
-    in the first <i>n</i> bytes of <i>s2</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memchr</i> returns a pointer to the first occurrence of byte <i>c</i> in
-    the first <i>n</i> bytes of memory area <i>s,</i> or zero if <i>c</i> does not occur.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memcmp</i> compares its arguments, looking at the first <i>n</i> bytes only,
-    and returns an integer less than, equal to, or greater than 0,
-    according as <i>s1</i> is lexicographically less than, equal to, or greater
-    than <i>s2</i>. The comparison is bytewise unsigned. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memcpy</i> copies <i>n</i> bytes from memory area <i>s2</i> to <i>s1</i>. It returns <i>s1</i>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memmove</i> works like <i>memcpy</i>, except that it is guaranteed to work
-    if <i>s1</i> and <i>s2</i> overlap. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Memset</i> sets the first <i>n</i> bytes in memory area <i>s</i> to the value of
-    byte <i>c</i>. It returns <i>s</i>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    All these routines have portable C implementations in <tt><font size=+1>/usr/local/plan9/src/lib9</font></tt>.<br>
-    
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/strcat.html"><i>strcat</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    ANSI C does not require <i>memcpy</i> to handle overlapping source and
-    destination; on Plan 9, it does, so <i>memmove</i> and <i>memcpy</i> behave
-    identically. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If <i>memcpy</i> and <i>memmove</i> are handed a negative count, they abort.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/mouse.html b/man/man3/mouse.html
deleted file mode 100644
index 5e2b278..0000000
--- a/man/man3/mouse.html
+++ /dev/null
@@ -1,249 +0,0 @@
-<head>
-<title>mouse(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MOUSE(3)</b><td align=right><b>MOUSE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    initmouse, readmouse, closemouse, moveto, cursorswitch, getrect,
-    drawgetrect, menuhit, setcursor &ndash; mouse control<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;draw.h&gt;<br>
-    #include &lt;thread.h&gt;<br>
-    #include &lt;mouse.h&gt;<br>
-    #include &lt;cursor.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Mousectl &nbsp;&nbsp;&nbsp;*initmouse(char *file, Image *i)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readmouse(Mousectl *mc)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;atomouse();<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closemouse(Mousectl *mc)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveto(Mousectl *mc, Point pt)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setcursor(Mousectl *mc, Cursor *c)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rectangle getrect(int but, Mousectl *mc)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drawgetrect(Rectangle r, int up)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menuhit(int but, Mousectl *mc, Menu *menu, Screen *scr)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions access and control a mouse in a multi-threaded
-    environment. They use the message-passing <tt><font size=+1>Channel</font></tt> interface in
-    the threads library (see <a href="../man3/thread.html"><i>thread</i>(3)</a>); programs that wish a more
-    event-driven, single-threaded approach should use <a href="../man3/event.html"><i>event</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The state of the mouse is recorded in a structure, <tt><font size=+1>Mouse</font></tt>, defined
-    in <tt><font size=+1>&lt;mouse.h&gt;</font></tt>:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct Mouse Mouse;<br>
-        struct Mouse<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buttons; &nbsp;&nbsp;&nbsp;&nbsp;/* bit array: LMR=124 */<br>
-            Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xy;<br>
-            ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msec;<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    The <tt><font size=+1>Point xy</font></tt> records the position of the cursor, <tt><font size=+1>buttons</font></tt> the state
-    of the buttons (three bits representing, from bit 0 up, the buttons
-    from left to right, 0 if the button is released, 1 if it is pressed),
-    and <tt><font size=+1>msec</font></tt>, a millisecond time stamp. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The routine <tt><font size=+1>initmouse</font></tt> returns a structure through which one may
-    access the mouse:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct Mousectl Mousectl;<br>
-        struct Mousectl<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Mouse;<br>
-            Channel &nbsp;&nbsp;&nbsp;&nbsp;*c; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* chan(Mouse)[16] */<br>
-            Channel &nbsp;&nbsp;&nbsp;&nbsp;*resizec; &nbsp;&nbsp;&nbsp;/* chan(int)[2] */<br>
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*file;<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mfd; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* to mouse file */<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cfd; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* to cursor file */<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* of slave proc */<br>
-            Image* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* of associated window/display */<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    The arguments to <i>initmouse</i> are a <i>file</i> naming the device file connected
-    to the mouse and an <i>Image</i> (see <a href="../man3/draw.html"><i>draw</i>(3)</a>) on which the mouse will
-    be visible. Typically the file is nil, which requests the default
-    <tt><font size=+1>/dev/mouse</font></tt>; and the image is the window in which the program is
-    running, held in the variable <tt><font size=+1>screen</font></tt> after a call
-    to <i>initdraw</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Once the <tt><font size=+1>Mousectl</font></tt> is set up, mouse motion will be reported by
-    messages of type <tt><font size=+1>Mouse</font></tt> sent on the <tt><font size=+1>Channel Mousectl.c</font></tt>. Typically,
-    a message will be sent every time a read of <tt><font size=+1>/dev/mouse</font></tt> succeeds,
-    which is every time the state of the mouse changes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    When the window is resized, a message is sent on <tt><font size=+1>Mousectl.resizec</font></tt>.
-    The actual value sent may be discarded; the receipt of the message
-    tells the program that it should call <tt><font size=+1>getwindow</font></tt> (see <a href="../man3/graphics.html"><i>graphics</i>(3)</a>)
-    to reconnect to the window. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Readmouse</i> updates the <tt><font size=+1>Mouse</font></tt> structure held in the <tt><font size=+1>Mousectl</font></tt>, blocking
-    if the state has not changed since the last <i>readmouse</i> or message
-    sent on the channel. It calls <tt><font size=+1>flushimage</font></tt> (see <a href="../man3/graphics.html"><i>graphics</i>(3)</a>) before
-    blocking, so any buffered graphics requests are displayed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Closemouse</i> closes the file descriptors associated with the mouse,
-    kills the slave processes, and frees the <tt><font size=+1>Mousectl</font></tt> structure. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Moveto</i> moves the mouse cursor on the display to the position specified
-    by <i>pt</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Setcursor</i> sets the image of the cursor to that specified by <i>c</i>.
-    If <i>c</i> is nil, the cursor is set to the default. The format of the
-    cursor data is spelled out in <tt><font size=+1>&lt;cursor.h&gt;</font></tt> and described in <a href="../man3/graphics.html"><i>graphics</i>(3)</a>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Getrect</i> returns the dimensions of a rectangle swept by the user,
-    using the mouse, in the manner <a href="../man1/rio.html"><i>rio</i>(1)</a> or <a href="../man1/sam.html"><i>sam</i>(1)</a> uses to create
-    a new window. The <i>but</i> argument specifies which button the user
-    must press to sweep the window; any other button press cancels
-    the action. The returned rectangle is all zeros if the user
-    cancels. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Getrect</i> uses successive calls to <i>drawgetrect</i> to maintain the red
-    rectangle showing the sweep-in-progress. The rectangle to be drawn
-    is specified by <i>rc</i> and the <i>up</i> parameter says whether to draw (1)
-    or erase (0) the rectangle. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Menuhit</i> provides a simple menu mechanism. It uses a <tt><font size=+1>Menu</font></tt> structure
-    defined in <tt><font size=+1>&lt;mouse.h&gt;</font></tt>:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct Menu Menu;<br>
-        struct Menu<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**item;<br>
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(*gen)(int);<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lasthit;<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    <i>Menuhit</i> behaves the same as its namesake <i>emenuhit</i> described in
-    <a href="../man3/event.html"><i>event</i>(3)</a>, with two exceptions. First, it uses a <tt><font size=+1>Mousectl</font></tt> to access
-    the mouse rather than using the event interface; and second, it
-    creates the menu as a true window on the <tt><font size=+1>Screen</font></tt> <i>scr</i> (see <a href="../man3/window.html"><i>window</i>(3)</a>),
-    permitting the menu to be displayed in parallel
-    with other activities on the display. If <i>scr</i> is null, <i>menuhit</i>
-    behaves like <i>emenuhit</i>, creating backing store for the menu, writing
-    the menu directly on the display, and restoring the display when
-    the menu is removed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man3/event.html"><i>event</i>(3)</a>, <a href="../man3/keyboard.html"><i>keyboard</i>(3)</a>, <a href="../man3/thread.html"><i>thread</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/mousescrollsize.html b/man/man3/mousescrollsize.html
deleted file mode 100644
index 3aa816f..0000000
--- a/man/man3/mousescrollsize.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<head>
-<title>mousescrollsize(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MOUSESCROLLSIZE(3)</b><td align=right><b>MOUSESCROLLSIZE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    mousescrollsize &ndash; compute mouse scroll increment<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;draw.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    int &nbsp;&nbsp;&nbsp;&nbsp;mousescrollsize(int maxlines)<br>
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Mousescrollsize</i> computes the number of lines of text that should
-    be scrolled in response to a mouse scroll wheel click. <i>Maxlines</i>
-    is the number of lines visible in the text window. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The default scroll increment is one line. This default can be
-    overridden by setting the <tt><font size=+1>$mousescrollsize</font></tt> environment variable
-    to an integer, which specifies a constant number of lines, or
-    to a real number followed by a percent character, indicating that
-    the scroll increment should be a percentage of the total
-    number of lines in the window. For example, setting <tt><font size=+1>$mousescrollsize</font></tt>
-    to <tt><font size=+1>50%</font></tt> causes a half-window scroll increment. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Mousescrollsize</i> is used by <a href="../man1/9term.html"><i>9term</i>(1)</a> and <a href="../man1/acme.html"><i>acme</i>(1)</a> to set their scrolling
-    behavior.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw/scroll.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/9term.html"><i>9term</i>(1)</a>, <a href="../man1/acme.html"><i>acme</i>(1)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Libdraw</i> expects up and down scroll wheel events to be expressed
-    as clicks of mouse buttons 4 and 5, but the XFree86 default is
-    to ignore the scroll wheel. To enable the scroll wheel, change
-    your <tt><font size=+1>InputDevice</font></tt> section of <tt><font size=+1>XF86Config&#8722;4</font></tt> to look like:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>Section &quot;InputDevice&quot;<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Identifier &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Mouse0&quot;<br>
-            Driver &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;mouse&quot;<br>
-            Option &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Device&quot; &quot;/dev/psaux&quot;<br>
-            # next four lines enable scroll wheel as buttons 4 and 5<br>
-            Option &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Buttons&quot; &quot;5&quot;<br>
-            Option &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Emulate3Buttons&quot; &quot;off&quot;<br>
-            Option &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Protocol&quot; &quot;ImPS/2&quot;<br>
-            Option &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ZAxisMapping&quot; &quot;4 5&quot;<br>
-            
-        </table>
-        EndSection<br>
-        </font></tt>
-    </table>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/mp.html b/man/man3/mp.html
deleted file mode 100644
index 86dc745..0000000
--- a/man/man3/mp.html
+++ /dev/null
@@ -1,441 +0,0 @@
-<head>
-<title>mp(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MP(3)</b><td align=right><b>MP(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    mpsetminbits, mpnew, mpfree, mpbits, mpnorm, mpcopy, mpassign,
-    mprand, strtomp, mpfmt,mptoa, betomp, mptobe, letomp, mptole,
-    mptoui, uitomp, mptoi, itomp, uvtomp, mptouv, vtomp, mptov, mpdigdiv,
-    mpadd, mpsub, mpleft, mpright, mpmul, mpexp, mpmod, mpdiv, mpfactorial,
-    mpcmp, mpextendedgcd,
-    mpinvert, mpsignif, mplowbits0, mpvecdigmuladd, mpvecdigmulsub,
-    mpvecadd, mpvecsub, mpveccmp, mpvecmul, mpmagcmp, mpmagadd, mpmagsub,
-    crtpre, crtin, crtout, crtprefree, crtresfree &ndash; extended precision
-    arithmetic<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mp.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mpnew(int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpfree(mpint *b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpsetminbits(int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpbits(mpint *b, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpnorm(mpint *b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mpcopy(mpint *b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpassign(mpint *old, mpint *new) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mprand(int bits, void (*gen)(uchar*, int), mpint *b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strtomp(char *buf, char **rptr, int base, mpint *b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mptoa(mpint *b, int base, char *buf, int blen) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;mpfmt(Fmt*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;betomp(uchar *buf, uint blen, mpint *b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;mptobe(mpint *b, uchar *buf, uint blen, uchar **bufp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;letomp(uchar *buf, uint blen, mpint *b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;mptole(mpint *b, uchar *buf, uint blen, uchar **bufp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uint mptoui(mpint*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uitomp(uint, mpint*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;mptoi(mpint*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itomp(int, mpint*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtomp(vlong, mpint*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>vlong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mptov(mpint*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uvtomp(uvlong, mpint*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uvlong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mptouv(mpint*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpadd(mpint *b1, mpint *b2, mpint *sum) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpmagadd(mpint *b1, mpint *b2, mpint *sum) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpsub(mpint *b1, mpint *b2, mpint *diff) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpmagsub(mpint *b1, mpint *b2, mpint *diff) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpleft(mpint *b, int shift, mpint *res) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpright(mpint *b, int shift, mpint *res) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpmul(mpint *b1, mpint *b2, mpint *prod) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpexp(mpint *b, mpint *e, mpint *m, mpint *res) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpmod(mpint *b, mpint *m, mpint *remainder) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpdiv(mpint *dividend, mpint *divisor, &nbsp;&nbsp;&nbsp;mpint *quotient, mpint
-    *remainder) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mpfactorial(ulong n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;mpcmp(mpint *b1, mpint *b2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;mpmagcmp(mpint *b1, mpint *b2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpextendedgcd(mpint *a, mpint *b, mpint *d, mpint *x, mpint
-    *y) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpinvert(mpint *b, mpint *m, mpint *res) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;mpsignif(mpint *b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;mplowbits0(mpint *b) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpdigdiv(mpdigit *dividend, mpdigit divisor, mpdigit *quotient)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpvecadd(mpdigit *a, int alen, mpdigit *b, int blen, mpdigit
-    *sum) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpvecsub(mpdigit *a, int alen, mpdigit *b, int blen, mpdigit
-    *diff) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpvecdigmuladd(mpdigit *b, int n, mpdigit m, mpdigit *p)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;mpvecdigmulsub(mpdigit *b, int n, mpdigit m, mpdigit *p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void mpvecmul(mpdigit *a, int alen, mpdigit *b, int blen, mpdigit
-    *p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;mpveccmp(mpdigit *a, int alen, mpdigit *b, int blen) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>CRTpre* &nbsp;&nbsp;&nbsp;&nbsp;crtpre(int nfactors, mpint **factors) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>CRTres* &nbsp;&nbsp;&nbsp;&nbsp;crtin(CRTpre *crt, mpint *x) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void crtout(CRTpre *crt, CRTres *r, mpint *x) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void crtprefree(CRTpre *cre) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void crtresfree(CRTres *res) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*mpzero, *mpone, *mptwo<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines perform extended precision integer arithmetic.
-    The basic type is <tt><font size=+1>mpint</font></tt>, which points to an array of <tt><font size=+1>mpdigit</font></tt>s,
-    stored in little-endian order:<br>
-    <tt><font size=+1>typedef struct mpint mpint;<br>
-    struct mpint<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        int &nbsp;&nbsp;&nbsp;sign; &nbsp;&nbsp;&nbsp;&nbsp;/* +1 or &#8722;1 */<br>
-        int &nbsp;&nbsp;&nbsp;size; &nbsp;&nbsp;&nbsp;&nbsp;/* allocated digits */<br>
-        int &nbsp;&nbsp;&nbsp;top; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* significant digits */<br>
-        mpdigit &nbsp;&nbsp;&nbsp;&nbsp;*p;<br>
-        char flags;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    The sign of 0 is +1. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The size of <tt><font size=+1>mpdigit</font></tt> is architecture-dependent and defined in <tt><font size=+1>/$cputype/include/u.h</font></tt>.
-    <tt><font size=+1>Mpint</font></tt>s are dynamically allocated and must be explicitly freed.
-    Operations grow the array of digits as needed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    In general, the result parameters are last in the argument list.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Routines that return an <tt><font size=+1>mpint</font></tt> will allocate the <tt><font size=+1>mpint</font></tt> if the result
-    parameter is <tt><font size=+1>nil</font></tt>. This includes <i>strtomp</i>, <i>itomp</i>, <i>uitomp</i>, and <i>btomp</i>.
-    These functions, in addition to <i>mpnew</i> and <i>mpcopy</i>, will return
-    <tt><font size=+1>nil</font></tt> if the allocation fails. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Input and result parameters may point to the same <tt><font size=+1>mpint</font></tt>. The routines
-    check and copy where necessary. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Mpnew</i> creates an <tt><font size=+1>mpint</font></tt> with an initial allocation of <i>n</i> bits. If
-    <i>n</i> is zero, the allocation will be whatever was specified in the
-    last call to <i>mpsetminbits</i> or to the initial value, 1056. <i>Mpfree</i>
-    frees an <tt><font size=+1>mpint</font></tt>. <i>Mpbits</i> grows the allocation of <i>b</i> to fit at least
-    <i>n</i> bits. If <tt><font size=+1>b&#8722;&gt;top</font></tt> doesn&#8217;t cover <i>n</i> bits it increases it to do so.
-    Unless
-    you are writing new basic operations, you can restrict yourself
-    to <tt><font size=+1>mpnew(0)</font></tt> and <tt><font size=+1>mpfree(b)</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Mpnorm</i> normalizes the representation by trimming any high order
-    zero digits. All routines except <tt><font size=+1>mpbits</font></tt> return normalized results.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Mpcopy</i> creates a new <tt><font size=+1>mpint</font></tt> with the same value as <i>b</i> while <i>mpassign</i>
-    sets the value of <i>new</i> to be that of <i>old</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Mprand</i> creates an <i>n</i> bit random number using the generator <i>gen</i>.
-    <i>Gen</i> takes a pointer to a string of uchar&#8217;s and the number to fill
-    in. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strtomp</i> and <i>mptoa</i> convert between ASCII and <tt><font size=+1>mpint</font></tt> representations
-    using the base indicated. Only the bases 10, 16, 32, and 64 are
-    supported. Anything else defaults to 16. <i>Strtomp</i> skips any leading
-    spaces or tabs. <i>Strtomp</i>&#8217;s scan stops when encountering a digit
-    not valid in the base. If <i>rptr</i> is not zero, <i>*rptr</i> is
-    set to point to the character immediately after the string converted.
-    If the parse pterminates before any digits are found, <i>strtomp</i>
-    return <tt><font size=+1>nil</font></tt>. <i>Mptoa</i> returns a pointer to the filled buffer. If the
-    parameter <i>buf</i> is <tt><font size=+1>nil</font></tt>, the buffer is allocated. <i>Mpfmt</i> can be used
-    with <a href="../man3/fmtinstall.html"><i>fmtinstall</i>(3)</a> and <a href="../man3/print.html"><i>print</i>(3)</a> to print hexadecimal
-    representations of <tt><font size=+1>mpint</font></tt>s. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Mptobe</i> and <i>mptole</i> convert an <i>mpint</i> to a byte array. The former
-    creates a big endian representation, the latter a little endian
-    one. If the destination <i>buf</i> is not <tt><font size=+1>nil</font></tt>, it specifies the buffer
-    of length <i>blen</i> for the result. If the representation is less than
-    <i>blen</i> bytes, the rest of the buffer is zero filled. If <i>buf</i> is <tt><font size=+1>nil</font></tt>,
-    then a
-    buffer is allocated and a pointer to it is deposited in the location
-    pointed to by <i>bufp</i>. Sign is ignored in these conversions, i.e.,
-    the byte array version is always positive. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Betomp</i>, and <i>letomp</i> convert from a big or little endian byte array
-    at <i>buf</i> of length <i>blen</i> to an <i>mpint</i>. If <i>b</i> is not <i>nil</i>, it refers
-    to a preallocated <i>mpint</i> for the result. If <i>b</i> is <tt><font size=+1>nil</font></tt>, a new integer
-    is allocated and returned as the result. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The integer conversions are:<br>
-    <i>mptoui</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;mpint</font></tt>-&gt;<tt><font size=+1>unsigned int<br>
-    </font></tt><i>uitomp</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;unsigned int</font></tt>-&gt;<tt><font size=+1>mpint<br>
-    </font></tt><i>mptoi</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mpint</font></tt>-&gt;<tt><font size=+1>int<br>
-    </font></tt><i>itomp</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int</font></tt>-&gt;<tt><font size=+1>mpint<br>
-    </font></tt><i>mptouv</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;mpint</font></tt>-&gt;<tt><font size=+1>unsigned vlong<br>
-    </font></tt><i>uvtomp</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;unsigned vlong</font></tt>-&gt;<tt><font size=+1>mpint<br>
-    </font></tt><i>mptov</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mpint</font></tt>-&gt;<tt><font size=+1>vlong<br>
-    </font></tt><i>vtomp</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vlong</font></tt>-&gt;<tt><font size=+1>mpint 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    When converting to the base integer types, if the integer is too
-    large, the largest integer of the appropriate sign and size is
-    returned. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The mathematical functions are:<br>
-    <i>mpadd</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum = b1 + b2</font></tt>.<br>
-    <i>mpmagadd</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;sum = abs(b1) + abs(b2)</font></tt>.<br>
-    <i>mpsub</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;diff = b1 &#8722; b2</font></tt>.<br>
-    <i>mpmagsub</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;diff = abs(b1) &#8722; abs(b2)</font></tt>.<br>
-    <i>mpleft</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res = b&lt;&lt;shift</font></tt>.<br>
-    <i>mpright</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res = b&gt;&gt;shift</font></tt>.<br>
-    <i>mpmul</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prod = b1*b2</font></tt>.<br>
-    <i>mpexp</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if <i>m</i> is nil, <tt><font size=+1>res = b**e</font></tt>. Otherwise, <tt><font size=+1>res = b**e mod m</font></tt>.<br>
-    <i>mpmod</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remainder = b % m</font></tt>.<br>
-    <i>mpdiv</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quotient = dividend/divisor</font></tt>. <tt><font size=+1>remainder = dividend % divisor</font></tt>.<br>
-    <i>mpfactorial</i>&nbsp;&nbsp;&nbsp;returns factorial of <i>n</i>.<br>
-    <i>mpcmp</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns -1, 0, or +1 as <i>b1</i> is less than, equal to, or greater
-    than <i>b2</i>.<br>
-    <i>mpmagcmp</i>&nbsp;&nbsp;&nbsp;the same as <i>mpcmp</i> but ignores the sign and just compares
-    magnitudes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Mpextendedgcd</i> computes the greatest common denominator, <i>d</i>, of
-    <i>a</i> and <i>b</i>. It also computes <i>x</i> and <i>y</i> such that <tt><font size=+1>a*x + b*y = d</font></tt>. Both
-    <i>a</i> and <i>b</i> are required to be positive. If called with negative arguments,
-    it will return a gcd of 0. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Mpinverse</i> computes the multiplicative inverse of <i>b</i> <tt><font size=+1>mod</font></tt> <i>m</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Mpsignif</i> returns the bit offset of the left most 1 bit in <i>b</i>. <i>Mplowbits0</i>
-    returns the bit offset of the right most 1 bit. For example, for
-    0x14, <i>mpsignif</i> would return 4 and <i>mplowbits0</i> would return 2. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The remaining routines all work on arrays of <tt><font size=+1>mpdigit</font></tt> rather than
-    <tt><font size=+1>mpint</font></tt>&#8217;s. They are the basis of all the other routines. They are
-    separated out to allow them to be rewritten in assembler for each
-    architecture. There is also a portable C version for each one.<br>
-    <i>mpdigdiv</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quotient = dividend[0:1] / divisor</font></tt>.<br>
-    <i>mpvecadd</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum[0:alen] = a[0:alen&#8722;1] + b[0:blen&#8722;1]</font></tt>. We assume alen
-    &gt;= blen and that sum has room for alen+1 digits.<br>
-    <i>mpvecsub</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;diff[0:alen&#8722;1] = a[0:alen&#8722;1] &#8722; b[0:blen&#8722;1]</font></tt>. We assume
-    that alen &gt;= blen and that diff has room for alen digits.<br>
-    <i>mpvecdigmuladd</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[0:n] += m * b[0:n&#8722;1]</font></tt>. This multiplies a an array
-    of digits times a scalar and adds it to another array. We assume
-    p has room for n+1 digits.<br>
-    <i>mpvecdigmulsub</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[0:n] &#8722;= m * b[0:n&#8722;1]</font></tt>. This multiplies a an array
-    of digits times a scalar and subtracts it fromo another array.
-    We assume p has room for n+1 digits. It returns +1 is the result
-    is positive and -1 if negative.<br>
-    <i>mpvecmul</i><tt><font size=+1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[0:alen*blen] = a[0:alen&#8722;1] * b[0:blen&#8722;1]</font></tt>. We assume
-    that p has room for alen*blen+1 digits.<br>
-    <i>mpveccmp</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This returns -1, 0, or +1 as a - b is negative, 0, or
-    positive. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>mptwo</i>, <i>mpone</i> and <i>mpzero</i> are the constants 2, 1 and 0. These cannot
-    be freed.<br>
-    <p><font size=+1><b>Chinese remainder theorem     </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    When computing in a non-prime modulus, <i>n,</i> it is possible to perform
-    the computations on the residues modulo the prime factors of <i>n</i>
-    instead. Since these numbers are smaller, multiplication and exponentiation
-    can be much faster. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Crtin</i> computes the residues of <i>x</i> and returns them in a newly allocated
-    structure:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct CRTres &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CRTres; <br>
-        {<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int &nbsp;&nbsp;&nbsp;n; &nbsp;&nbsp;&nbsp;&nbsp;// number of residues<br>
-             mpint &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*r[n]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// residues<br>
-            
-        </table>
-        };<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    <i>Crtout</i> takes a residue representation of a number and converts
-    it back into the number. It also frees the residue structure.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Crepre</i> saves a copy of the factors and precomputes the constants
-    necessary for converting the residue form back into a number modulo
-    the product of the factors. It returns a newly allocated structure
-    containing values. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Crtprefree</i> and <i>crtresfree</i> free <i>CRTpre</i> and <i>CRTres</i> structures respectively.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libmp<br>
-    </font></tt>
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/muldiv.html b/man/man3/muldiv.html
deleted file mode 100644
index 486020c..0000000
--- a/man/man3/muldiv.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<head>
-<title>muldiv(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MULDIV(3)</b><td align=right><b>MULDIV(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    muldiv, umuldiv &ndash; high-precision multiplication and division<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;muldiv(long a, long b, long c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong umuldiv(ulong a, ulong b, ulong c)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Muldiv</i> returns <tt><font size=+1>a*b/c</font></tt>, using a <tt><font size=+1>vlong</font></tt> to hold the intermediate result.
-    <i>Umuldiv</i> is the equivalent for unsigned integers. They can be used
-    to scale integer values without worry about overflowing the intermediate
-    result. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    On some architectures, these routines can generate a trap if the
-    final result does not fit in a <tt><font size=+1>long</font></tt> or <tt><font size=+1>ulong</font></tt>; on others they will
-    silently truncate.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/mux.html b/man/man3/mux.html
deleted file mode 100644
index e3e7e4c..0000000
--- a/man/man3/mux.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<head>
-<title>mux(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>MUX(3)</b><td align=right><b>MUX(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Mux, muxinit, muxrpc, muxthreads &ndash; protocol multiplexor<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;mux.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    struct Mux<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        uint mintag;<br>
-        uint maxtag;<br>
-        int (*settag)(Mux *mux, void *msg, uint tag);<br>
-        int (*gettag)(Mux *mux, void *msg);<br>
-        int (*send)(Mux *mux, void *msg);<br>
-        void *(*recv)(Mux *mux);<br>
-        void *aux;<br>
-        ... /* private fields follow */<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;muxinit(Mux *mux);<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void* muxrpc(Mux *mux, void *request);<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;muxprocs(Mux *mux);<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Libmux</i> is a generic protocol multiplexor. A client program initializes
-    a <tt><font size=+1>Mux</font></tt> structure with information about the protocol (mainly in
-    the form of helper functions) and can then use <i>muxrpc</i> to execute
-    individual RPCs without worrying about details of multiplexing
-    requests and demultiplexing responses. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Libmux</i> assumes that the protocol messages contain a <i>tag</i> (or message
-    ID) field that exists for the sole purpose of demultiplexing messages.
-    <i>Libmux</i> chooses the tags and then calls a helper function to put
-    them in the outgoing messages. <i>Libmux</i> calls another helper function
-    to retrieve tags from incoming messages.
-    It also calls helper functions to send and receive packets. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A client should allocate a <tt><font size=+1>Mux</font></tt> structure and then call <i>muxinit</i>
-    to initialize the library&#8217;s private elements. The client must
-    initialize the following elements:<br>
-    <i>mintag</i>, <i>maxtag<br>
-    </i>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        The range of valid tags; <i>maxtag</i> is the maximum valid tag plus
-        one, so that <i>maxtag</i>&ndash;<i>mintag</i> is equal to the number of valid tags.
-        If <i>libmux</i> runs out of tags (all tags are being used for RPCs currently
-        in progress), a new call to <i>muxrpc</i> will block until an executing
-        call finishes.<br>
-        
-    </table>
-    <i>settag</i>, <i>gettag<br>
-    </i>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Set or get the tag value in a message.<br>
-        
-    </table>
-    <i>send</i>, <i>recv<br>
-    </i>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Send or receive protocol messages on the connection. <i>Recv</i> should
-        block until a message is available and should return nil if the
-        connection is closed. <i>Libmux</i> will arrange that only one call to
-        <i>recv</i> is active at a time.<br>
-        
-    </table>
-    <i>aux</i>&nbsp;&nbsp;&nbsp;An auxiliary pointer for use by the client. Once a client has
-    initialized the <tt><font size=+1>Mux</font></tt> structure, it can call <i>muxrpc</i> to execute RPCs.
-    The <i>request</i> is the message passed to <i>settag</i> and <i>send</i>. The return
-    value is the response packet, as provided by <i>recv</i>, or nil if an
-    error occurred. <i>Muxprocs</i> allocates new procs (see
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <a href="../man3/thread.html"><i>thread</i>(3)</a>) in which to run <i>send</i> and <i>recv</i>. After a call to <i>muxprocs</i>,
-        <i>muxrpc</i> will run <i>send</i> and <i>recv</i> in these procs instead of in the
-        calling proc. This is useful if the implementation of either (particularly
-        <i>recv</i>) blocks an entire proc and there are other threads in the
-        calling proc that need to remain active.
-        
-    </table>
-    
-</table>
-<p><font size=+1><b>EXAMPLE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    See <tt><font size=+1>/usr/local/plan9/src/lib9pclient/fs.c</font></tt> for an example of using
-    <i>libmux</i> with 9P (see <i>intro</i>(9p)).<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libmux<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/thread.html"><i>thread</i>(3)</a>, <i>intro</i>(9p)<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Libmux</i> does not know how to free protocol messages, so message
-    arriving with unexpected or invalid tags are leaked. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Using <i>mintag</i> other than zero is not well tested and probably buggy.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/nan.html b/man/man3/nan.html
deleted file mode 100644
index e644116..0000000
--- a/man/man3/nan.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<head>
-<title>nan(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>NAN(3)</b><td align=right><b>NAN(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    NaN, Inf, isNaN, isInf &ndash; not-a-number and infinity functions<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double NaN(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double Inf(int) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isNaN(double) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isInf(double, int)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The IEEE floating point standard defines values called &#8216;not-a-number&#8217;
-    and positive and negative &#8216;infinity&#8217;. These values can be produced
-    by such things as overflow and division by zero. Also, the library
-    functions sometimes return them when the arguments are not in
-    the domain, or the result is out of range. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>NaN</i> returns a double that is not-a-number. <i>IsNaN</i> returns true
-    if its argument is not-a-number. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Inf</i>(<i>i</i>) returns positive infinity if <i>i</i> is greater than or equal
-    to zero, else negative infinity. <i>IsInf</i> returns true if its first
-    argument is infinity with the same sign as the second argument.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/nan.c<br>
-    </font></tt>
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/needstack.html b/man/man3/needstack.html
deleted file mode 100644
index bba5fbe..0000000
--- a/man/man3/needstack.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<head>
-<title>needstack(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>NEEDSTACK(3)</b><td align=right><b>NEEDSTACK(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    needstack &ndash; check for execution stack overflow<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;needstack(int n)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Stack overflow in the thread library leads to bugs that are difficult
-    to diagnose. The Plan 9 libraries are careful about not allocating
-    large structures on the stack, so typically four or eight kilobytes
-    is plenty of stack for a thread. Other libraries are not always
-    as careful. Calling <i>needstack</i> indicates to the thread library
-    that an external routine is about to be called that will require
-    <i>n</i> bytes of stack space. If there is not enough space left on the
-    stack, the thread library prints an error and terminates the program.
-    The call <tt><font size=+1>needstack(0)</font></tt> can be used to check whether the stack is
-    currently overflowed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Needstack</i> is defined in <tt><font size=+1>libc.h</font></tt> so that library functions used
-    in threaded and non-threaded contexts can call it. The implementation
-    of <i>needstack</i> in <tt><font size=+1>lib9</font></tt> is a no-op. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Needstack</i> should be thought of as a comment checked at run time,
-    like <a href="../man3/assert.html"><i>assert</i>(3)</a>.<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The X Window library implementation of <i>XLookupString</i> allocates
-    some very large buffers on the stack, so <tt><font size=+1>/usr/local/plan9/src/libdraw/x11&#8722;itrans.c</font></tt>
-    calls <tt><font size=+1>needstack(20*1024)</font></tt> before making calls to <i>XLookupString</i>.
-    If a thread (in this case, the keyboard-reading thread used inside
-    the <a href="../man3/draw.html"><i>draw</i>(3)</a>
-    library) does not allocate a large enough stack, the problem is
-    diagnosed immediately rather than left to corrupt memory.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/needstack.c<br>
-    /usr/local/plan9/src/libthread<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/thread.html"><i>thread</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/notify.html b/man/man3/notify.html
deleted file mode 100644
index 9899e70..0000000
--- a/man/man3/notify.html
+++ /dev/null
@@ -1,183 +0,0 @@
-<head>
-<title>notify(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>NOTIFY(3)</b><td align=right><b>NOTIFY(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    notify, noted, atnotify, noteenable, notedisable, notifyon, notifyoff
-    &ndash; handle asynchronous process notification<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int notify(void (*f)(void*, char*)) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int noted(int v) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int atnotify(int (*f)(void*, char*), int in) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int noteenable(char *msg)<br>
-    int notedisable(char *msg) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int notifyon(char *msg)<br>
-    int notifyoff(char *msg)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    When a process raises an exceptional condition such as dividing
-    by zero or writing on a closed pipe, a <i>note</i> is posted to communicate
-    the exception. A note may also be posted by another process via
-    <a href="../man3/postnote.html"><i>postnote</i>(3)</a>. On Unix, notes are implemented as signals. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    When a note is received, the action taken depends on the note.
-    See <a href="../man7/signal.html"><i>signal</i>(7)</a> for the full description of the defaults. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The default actions may be overridden. The <i>notify</i> function registers
-    a <i>notification handler</i> to be called within the process when a
-    note is received. The argument to <i>notify</i> replaces the previous
-    handler, if any. An argument of zero cancels a previous handler,
-    restoring the default action. A <a href="../man2/fork.html"><i>fork</i>(2)</a> system call leaves the
-    handler registered in both the parent and the child; <a href="../man3/exec.html"><i>exec</i>(3)</a> restores
-    the default behavior. Handlers may not perform floating point
-    operations. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    After a note is posted, the handler is called with two arguments:
-    the first is unimplemented and should not be used (on Plan 9 it
-    is a <tt><font size=+1>Ureg</font></tt> structure giving the current values of registers); the
-    second is a pointer to the note itself, a null-terminated string.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A notification handler must finish either by exiting the program
-    or by calling <i>noted</i>; if the handler returns the behavior is undefined
-    and probably erroneous. Until the program calls <i>noted</i>, any further
-    externally-generated notes (e.g., <tt><font size=+1>hangup</font></tt> or <tt><font size=+1>alarm</font></tt>) will be held
-    off, and any further notes generated by erroneous
-    behavior by the program (such as divide by zero) will kill the
-    program. The argument to <i>noted</i> defines the action to take: <tt><font size=+1>NDFLT</font></tt>
-    instructs the system to perform the default action as if the handler
-    had never been registered; <tt><font size=+1>NCONT</font></tt> instructs the system to resume
-    the process at the point it was notified. In neither case
-    does <i>noted</i> return to the handler. If the note interrupted an incomplete
-    system call, that call returns an error (with error string <tt><font size=+1>interrupted</font></tt>)
-    after the process resumes. A notification handler can also jump
-    out to an environment set up with <i>setjmp</i> using the <i>notejmp</i> function
-    (see <a href="../man3/setjmp.html"><i>setjmp</i>(3)</a>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Unix provides a fixed set of notes (typically there are 32) called
-    <i>signals</i>. It also allows a process to block certain notes from
-    being delivered (see <a href="../man2/sigprocmask.html"><i>sigprocmask</i>(2)</a>) and to ignore certain notes
-    by setting the signal hander to the special value <tt><font size=+1>SIG_IGN</font></tt> (see
-    <a href="../man2/signal.html"><i>signal</i>(2)</a>). <i>Noteenable</i> and <i>notedisable</i> enable or disable receipt
-    of
-    a particular note by changing the current process&#8217;s blocked signal
-    mask. Receipt of a disabled note will be postponed until it is
-    reenabled. <i>Notifyon</i> and <i>notifyoff</i> enable or disable whether the
-    notification handler is called upon receipt of the note; if the
-    handler is not called, the note is discarded. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Regardless of the origin of the note or the presence of a handler,
-    if the process is being debugged (see <a href="../man2/ptrace.html"><i>ptrace</i>(2)</a>) the arrival of
-    a note puts the process in the <tt><font size=+1>Stopped</font></tt> state and awakens the debugger.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Rather than using the system calls <i>notify</i> and <i>noted</i>, most programs
-    should use <i>atnotify</i> to register notification handlers. The parameter
-    <i>in</i> is non-zero to register the function <i>f</i>, and zero to cancel
-    registration. A handler must return a non-zero number if the note
-    was recognized (and resolved); otherwise it must return
-    zero. When the system posts a note to the process, each handler
-    registered with <i>atnotify</i> is called with arguments as described
-    above until one of the handlers returns non-zero. Then <i>noted</i> is
-    called with argument <tt><font size=+1>NCONT</font></tt>. If no registered function returns
-    non-zero, <i>atnotify</i> calls <i>noted</i> with argument <tt><font size=+1>NDFLT</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The set of notes a process may receive is system-dependent, but
-    there is a common set that includes: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <i>Note &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Meaning &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unix signal<br>
-        </i><tt><font size=+1>interrupt </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user interrupt (DEL key) &nbsp;&nbsp;&nbsp;&nbsp;SIGINTR<br>
-        <tt><font size=+1>hangup </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I/O connection closed &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SIGHUP<br>
-        <tt><font size=+1>alarm </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alarm expired &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SIGLARM<br>
-        <tt><font size=+1>quit </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quit from keyboard &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SIGQUIT<br>
-        <tt><font size=+1>kill </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;process requested to exit &nbsp;&nbsp;&nbsp;SIGTERM<br>
-        <tt><font size=+1>sys: kill </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;process forced to exit &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SIGKILL<br>
-        <tt><font size=+1>sys: bus error </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bus error &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SIGBUS<br>
-        <tt><font size=+1>sys: segmentation violation </font></tt>&nbsp;&nbsp;&nbsp;segmentation violation &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SIGSEGV<br>
-        <tt><font size=+1>sys: write on closed pipe </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write on closed pipe &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SIGPIPE<br>
-        <tt><font size=+1>sys: child </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;child wait status change &nbsp;&nbsp;&nbsp;&nbsp;SIGCHLD<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-        
-    </table>
-    See <tt><font size=+1>/usr/local/plan9/src/lib9/await.c</font></tt> (sic) for the full list.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The notes prefixed <tt><font size=+1>sys:</font></tt> are usually generated by the operating
-    system.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/notify.c<br>
-    /usr/local/plan9/src/lib9/atnotify.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/intro.html"><i>intro</i>(3)</a>, <i>notejmp</i> in <a href="../man3/setjmp.html"><i>setjmp</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/open.html b/man/man3/open.html
deleted file mode 100644
index 64f85c5..0000000
--- a/man/man3/open.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<head>
-<title>open(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>OPEN(3)</b><td align=right><b>OPEN(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    open, create, close &ndash; open a file for reading or writing, create
-    file<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int open(char *file, int omode) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int create(char *file, int omode, ulong perm) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int close(int fd)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Open</i> opens the <i>file</i> for I/O and returns an associated file descriptor.
-    <i>Omode</i> is one of <tt><font size=+1>OREAD</font></tt>, <tt><font size=+1>OWRITE</font></tt>, <tt><font size=+1>ORDWR</font></tt>, or <tt><font size=+1>OEXEC</font></tt>, asking for permission
-    to read, write, read and write, or execute, respectively. In addition,
-    there are three values that can be ORed with the <i>omode</i>: <tt><font size=+1>OTRUNC</font></tt>
-    says to truncate the file to zero length
-    before opening it; <tt><font size=+1>OCEXEC</font></tt> says to close the file when an <a href="../man3/exec.html"><i>exec</i>(3)</a>
-    or <i>execl</i> system call is made; and <tt><font size=+1>ORCLOSE</font></tt> says to remove the file
-    when it is closed (by everyone who has a copy of the file descriptor).
-    <i>Open</i> fails if the file does not exist or the user does not have
-    permission to open it for the requested purpose (see
-    <a href="../man3/stat.html"><i>stat</i>(3)</a> for a description of permissions). The user must have
-    write permission on the <i>file</i> if the <tt><font size=+1>OTRUNC</font></tt> bit is set. For the
-    <i>open</i> system call (unlike the implicit <i>open</i> in <a href="../man3/exec.html"><i>exec</i>(3)</a>), <tt><font size=+1>OEXEC</font></tt>
-    is actually identical to <tt><font size=+1>OREAD</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Create</i> creates a new <i>file</i> or prepares to rewrite an existing <i>file</i>,
-    opens it according to <i>omode</i> (as described for <i>open</i>), and returns
-    an associated file descriptor. If the file is new, the owner is
-    set to the userid of the creating process group; the group to
-    that of the containing directory; the permissions to <i>perm</i> ANDed
-    with
-    the permissions of the containing directory. If the file already
-    exists, it is truncated to 0 length, and the permissions, owner,
-    and group remain unchanged. The created file is a directory if
-    the <tt><font size=+1>DMDIR</font></tt> bit is set in <i>perm</i>, an exclusive-use file if the <tt><font size=+1>DMEXCL</font></tt>
-    bit is set, and an append-only file if the <tt><font size=+1>DMAPPEND</font></tt> bit is set.
-    Exclusive-use files may be open for I/O by only one client at
-    a time, but the file descriptor may become invalid if no I/O is
-    done for an extended period; see <i>open</i>(9p). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Create</i> fails if the path up to the last element of <i>file</i> cannot
-    be evaluated, if the user doesn&#8217;t have write permission in the
-    final directory, if the file already exists and does not permit
-    the access defined by <i>omode</i>, of if there there are no free file
-    descriptors. In the last case, the file may be created even when
-    an error is
-    returned. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Since <i>create</i> may succeed even if the file exists, a special mechanism
-    is necessary for those applications that require an atomic create
-    operation. If the <tt><font size=+1>OEXCL</font></tt> (<tt><font size=+1>0x1000</font></tt>) bit is set in the <i>mode</i> for a
-    <i>create,</i> the call succeeds only if the file does not already exist;
-    see <i>open</i>(9p) for details. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Close</i> closes the file associated with a file descriptor. Provided
-    the file descriptor is a valid open descriptor, <i>close</i> is guaranteed
-    to close it; there will be no error. Files are closed automatically
-    upon termination of a process; <i>close</i> allows the file descriptor
-    to be reused.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/intro.html"><i>intro</i>(3)</a>, <a href="../man3/stat.html"><i>stat</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions set <i>errstr</i>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/opentemp.html b/man/man3/opentemp.html
deleted file mode 100644
index 9ec4757..0000000
--- a/man/man3/opentemp.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<head>
-<title>opentemp(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>OPENTEMP(3)</b><td align=right><b>OPENTEMP(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    opentemp &ndash; create a uniquely-named file<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int opentemp(char *template)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Opentemp</i> replaces <i>template</i> by a unique file name, and returns
-    the address of the template. The template should look like a file
-    name with eleven trailing <tt><font size=+1>X</font></tt>s. The <tt><font size=+1>X</font></tt>s are replaced by a letter
-    followed by the current process id. Letters from <tt><font size=+1>a</font></tt> to <tt><font size=+1>z</font></tt> are tried
-    until the name of a file that does not yet exist (see <a href="../man2/access.html"><i>access</i>(2)</a>)
-    is
-    generated. <i>Opentemp</i> then creates the file for reading and writing
-    and returns the file descriptor. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If no such name can be generated, <i>opentemp</i> returns &ndash;1. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Opentemp</i> avoids races. Two simultaneous calls to <i>opentemp</i> will
-    never return the same name.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/opentemp.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>create</i> in <a href="../man3/open.html"><i>open</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/pipe.html b/man/man3/pipe.html
deleted file mode 100644
index b087ae8..0000000
--- a/man/man3/pipe.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<head>
-<title>pipe(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>PIPE(3)</b><td align=right><b>PIPE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    pipe &ndash; create an interprocess channel<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int pipe(int fd[2])<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Pipe</i> creates a buffered channel for interprocess I/O communication.
-    Two file descriptors are returned in <i>fd</i>. Data written to <tt><font size=+1>fd[1]</font></tt>
-    is available for reading from <tt><font size=+1>fd[0]</font></tt> and data written to <tt><font size=+1>fd[0]</font></tt>
-    is available for reading from <tt><font size=+1>fd[1]</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    After the pipe has been established, cooperating processes created
-    by subsequent <a href="../man2/fork.html"><i>fork</i>(2)</a> calls may pass data through the pipe with
-    <i>read</i> and <i>write</i> calls. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    When all the data has been read from a pipe and the writer has
-    closed the pipe or exited, <a href="../man3/read.html"><i>read</i>(3)</a> will return 0 bytes. Writes
-    to a pipe with no reader will generate a note <tt><font size=+1>sys: write on closed
-    pipe</font></tt>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/pipe.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/intro.html"><i>intro</i>(3)</a>, <a href="../man3/read.html"><i>read</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Sets <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    If a read or a write of a pipe is interrupted, some unknown number
-    of bytes may have been transferred. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Pipe</i> is a macro defined as <i>p9pipe</i> to avoid name conflicts with
-    Unix&#8217;s <i>pipe</i> system call. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Unix pipes are not guaranteed to be bidirectional. In order to
-    ensure a bidirectional channel, <i>p9pipe</i> creates Unix domain sockets
-    via the <a href="../man2/socketpair.html"><i>socketpair</i>(2)</a> instead of Unix pipes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The implementation of pipes as Unix domain sockets causes problems
-    with some Unix implementations of <tt><font size=+1>/dev/fd</font></tt>, Unix&#8217;s dup device.
-    If a Unix domain socket is open as file descriptor 0, some implementations
-    disallow the opening of <tt><font size=+1>/dev/fd/0</font></tt>; instead one must <a href="../man2/connect.html"><i>connect</i>(2)</a>
-    to it. If this functionality is important
-    (as it is for <a href="../man1/rc.html"><i>rc</i>(1)</a>), one must <tt><font size=+1>#undef pipe</font></tt> and fall back on the
-    (possibly unidirectional) Unix pipes.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/plumb.html b/man/man3/plumb.html
deleted file mode 100644
index d764969..0000000
--- a/man/man3/plumb.html
+++ /dev/null
@@ -1,257 +0,0 @@
-<head>
-<title>plumb(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>PLUMB(3)</b><td align=right><b>PLUMB(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    eplumb, plumbfree, plumbopen, plumbopenfid, plumbsend, plumbsendtofid,
-    plumbsendtext, plumblookup, plumbpack, plumbpackattr, plumbaddattr,
-    plumbdelattr, plumbrecv, plumbrecvfid, plumbunpack, plumbunpackpartial,
-    plumbunpackattr, Plumbmsg &ndash; plumb messages<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;plumb.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plumbopen(char *port, int omode) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plumbsend(int fd, Plumbmsg *m) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plumbsendtext(int fd, char *src, char *dst, char *wdir, char
-    *data) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plumbfree(Plumbmsg *m) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Plumbmsg* &nbsp;&nbsp;&nbsp;plumbrecv(int fd) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plumbpack(Plumbmsg *m, int *np) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Plumbmsg* &nbsp;&nbsp;&nbsp;plumbunpack(char *buf, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Plumbmsg* &nbsp;&nbsp;&nbsp;plumbunpackpartial(char *buf, int n, int *morep) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plumbpackattr(Plumbattr *a) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Plumbattr* plumbunpackattr(char *a) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plumblookup(Plumbattr *a, char *name) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Plumbattr* plumbaddattr(Plumbattr *a, Plumbattr *new) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Plumbattr* plumbdelattr(Plumbattra *a, char *name) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eplumb(int key, char *port) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;9pclient.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>CFid &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*plumbopenfid(char *port, int omode) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Plumbmsg* &nbsp;&nbsp;&nbsp;plumbrecvfid(CFid *fid) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plumbsendtofid(CFid *fid, Plumbmsg *m)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines manipulate <a href="../man7/plumb.html"><i>plumb</i>(7)</a> messages, transmitting them,
-    receiving them, and converting them between text and these data
-    structures:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef<br>
-        struct Plumbmsg<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*src;<br>
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*dst;<br>
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*wdir;<br>
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*type;<br>
-            Plumbattr *attr;<br>
-            int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ndata;<br>
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*data;<br>
-            
-        </table>
-        } Plumbmsg;<br>
-        typedef<br>
-        struct Plumbattr<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*name;<br>
-            char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*value;<br>
-            Plumbattr *next;<br>
-            
-        </table>
-        } Plumbattr;<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    <i>Plumbopen</i> opens the named plumb <i>port</i>, using <a href="../man3/open.html"><i>open</i>(3)</a> mode <i>omode</i>.
-    If <i>port</i> begins with a slash, it is taken as a literal file name;
-    otherwise <i>plumbopen</i> searches for the location of the <a href="../man4/plumber.html"><i>plumber</i>(4)</a>
-    service and opens the port there. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    For programs using the <a href="../man3/event.html"><i>event</i>(3)</a> interface, <i>eplumb</i> registers, using
-    the given <i>key</i>, receipt of messages from the named <i>port</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Plumbsend</i> formats and writes message <i>m</i> to the file descriptor
-    <i>fd</i>, which will usually be the result of <tt><font size=+1>plumbopen(&quot;send&quot;, OWRITE)</font></tt>.
-    <i>Plumbsendtext</i> is a simplified version for text-only messages;
-    it assumes <tt><font size=+1>type</font></tt> is <tt><font size=+1>text</font></tt>, sets <tt><font size=+1>attr</font></tt> to nil, and sets <tt><font size=+1>ndata</font></tt> to <tt><font size=+1>strlen(</font></tt><i>data</i><tt><font size=+1>)</font></tt>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Plumbfree</i> frees all the data associated with the message <i>m</i>, all
-    the components of which must therefore have been allocated with
-    <a href="../man3/malloc.html"><i>malloc</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Plumbrecv</i> returns the next message available on the file descriptor
-    <i>fd</i>, or nil for error. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Plumbpack</i> encodes message <i>m</i> as a character string in the format
-    of <a href="../man7/plumb.html"><i>plumb</i>(7)</a><i>,</i> setting <tt><font size=+1>*</font></tt><i>np</i> to the length in bytes of the string.
-    <i>Plumbunpack</i> does the inverse, translating the <i>n</i> bytes of <i>buf</i> into
-    a <tt><font size=+1>Plumbmsg</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Plumbunpackpartial</i> enables unpacking of messages that arrive in
-    pieces. The first call to <i>plumbunpackpartial</i> for a given message
-    must be sufficient to unpack the header; subsequent calls permit
-    unpacking messages with long data sections. For each call, <i>buf</i>
-    points to the beginning of the complete message received
-    so far, and <i>n</i> reports the total number of bytes received for that
-    message. If the message is complete, the return value will be
-    as in <i>plumbunpack</i>. If not, and <i>morep</i> is not null, the return value
-    will be <tt><font size=+1>nil</font></tt> and <tt><font size=+1>*</font></tt>morep will be set to the number of bytes remaining
-    to be read for this message to be complete (recall that
-    the byte count is in the header). Those bytes should be read by
-    the caller, placed at location <i>buf</i><tt><font size=+1>+</font></tt><i>n</i>, and the message unpacked
-    again. If an error is encountered, the return value will be <tt><font size=+1>nil</font></tt>
-    and <tt><font size=+1>*</font></tt><i>morep</i> will be zero. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Plumbpackattr</i> converts the list <i>a</i> of <tt><font size=+1>Plumbattr</font></tt> structures into
-    a null-terminated string. If an attribute value contains white
-    space, quote characters, or equal signs, the value will be quoted
-    appropriately. A newline character will terminate processing.
-    <i>Plumbunpackattr</i> converts the null-terminated string <i>a</i> back into
-    a list of <i>Plumbattr</i> structures. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Plumblookup</i> searches the <tt><font size=+1>Plumbattr</font></tt> list <i>a</i> for an attribute with
-    the given <i>name</i> and returns the associated value. The returned
-    string is the original value, not a copy. If the attribute has
-    no value, the returned value will be the empty string; if the
-    attribute does not occur in the list at all, the value will be
-    nil. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Plumbaddattr</i> appends the <i>new</i> <tt><font size=+1>Plumbattr</font></tt> (which may be a list) to
-    the attribute list <i>a</i> and returns the new list. <i>Plumbattr</i> searches
-    the list <i>a</i> for the first attribute with name <i>name</i> and deletes
-    it from the list, returning the resulting list. <i>Plumbdelattr</i> is
-    a no-op if no such attribute exists. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The file descriptor returned by <i>plumbopen</i> is created with <i>fsopenfd</i>
-    (see <a href="../man3/9pclient.html"><i>9pclient</i>(3)</a>), which masks information about read and write
-    errors. This is acceptable for use in <i>plumbrecv</i> but not for <i>plumbsend</i>,
-    which depends on seeing details of write errors. <i>Plumbopenfid</i>,
-    <i>plumbrecvfid</i>, and <i>plumbsendtofid</i> provide an
-    explicit interface to <i>lib9pclient</i> that preserves the exact error
-    details.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libplumb<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/plumb.html"><i>plumb</i>(1)</a>, <a href="../man3/event.html"><i>event</i>(3)</a>, <a href="../man4/plumber.html"><i>plumber</i>(4)</a>, <a href="../man7/plumb.html"><i>plumb</i>(7)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    When appropriate, including when a <i>plumbsend</i> fails, these routine
-    set <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To avoid rewriting clients that use <i>plumbsend</i>, the call <tt><font size=+1>plumbopen(&quot;send&quot;,
-    OWRITE)</font></tt> returns a useless file descriptor (it is opened to <tt><font size=+1>/dev/null</font></tt>).
-    <i>Plumbsend</i> looks for this particular file descriptor and uses a
-    static copy of the <tt><font size=+1>CFid</font></tt> instead.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/post9pservice.html b/man/man3/post9pservice.html
deleted file mode 100644
index 62238d0..0000000
--- a/man/man3/post9pservice.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<head>
-<title>post9pservice(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>POST9PSERVICE(3)</b><td align=right><b>POST9PSERVICE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    post9pservice &ndash; post 9P service for use by clients<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int post9pservice(int fd, char *name)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Post9pservice</i> invokes <a href="../man4/9pserve.html"><i>9pserve</i>(4)</a> to post a new 9P service in the
-    current &#8220;name space&#8221; (see <a href="../man4/intro.html"><i>intro</i>(4)</a>) named <i>name</i>. Clients connecting
-    to the posted service are multiplexed onto a single 9P conversation
-    with the server on file descriptor <i>fd</i>.<br>
-    
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man4/intro.html"><i>intro</i>(4)</a>, <a href="../man4/9pserve.html"><i>9pserve</i>(4)</a><br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/post9p.c<br>
-    </font></tt>
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/postnote.html b/man/man3/postnote.html
deleted file mode 100644
index b08507e..0000000
--- a/man/man3/postnote.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<head>
-<title>postnote(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>POSTNOTE(3)</b><td align=right><b>POSTNOTE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    postnote &ndash; send a note to a process or process group<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;postnote(int who, int pid, char *note)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Postnote</i> sends a note to a process or process group. If <i>who</i> is
-    <tt><font size=+1>PNPROC</font></tt>, then <i>note</i> is sent to the process with id <i>pid</i>. If <i>who</i> is
-    <tt><font size=+1>PNGROUP</font></tt><i>,</i> the note is delivered to the process group which has
-    the process with id <i>pid</i> as a member. For <tt><font size=+1>PNGROUP</font></tt> only, if the
-    calling process is in the target group, the note is <i>not</i> delivered
-    to
-    that process. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If the write is successful, zero is returned. Otherwise &ndash;1 is returned.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/postnote.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/notify.html"><i>notify</i>(3)</a>, <a href="../man3/intro.html"><i>intro</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Sets <i>errstr</i>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/prime.html b/man/man3/prime.html
deleted file mode 100644
index abaffda..0000000
--- a/man/man3/prime.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<head>
-<title>prime(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>PRIME(3)</b><td align=right><b>PRIME(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    genprime, gensafeprime, genstrongprime, DSAprimes, probably_prime,
-    smallprimetest &ndash; prime number generation<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mp.h&gt;<br>
-    #include &lt;libsec.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;smallprimetest(mpint *p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;probably_prime(mpint *p, int nrep) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void genprime(mpint *p, int n, int nrep) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void gensafeprime(mpint *p, mpint *alpha, int n, int accuracy)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void genstrongprime(mpint *p, int n, int nrep) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void DSAprimes(mpint *q, mpint *p, uchar seed[SHA1dlen])<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Public key algorithms abound in prime numbers. The following routines
-    generate primes or test numbers for primality. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Smallprimetest</i> checks for divisibility by the first 10000 primes.
-    It returns 0 if <i>p</i> is not divisible by the primes and &ndash;1 if it is.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Probably_prime</i> uses the Miller-Rabin test to test <i>p</i>. It returns
-    non-zero if <i>P</i> is probably prime. The probability of it not being
-    prime is 1/4**<i>nrep</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Genprime</i> generates a random <i>n</i> bit prime. Since it uses the Miller-Rabin
-    test, <i>nrep</i> is the repetition count passed to <i>probably_prime</i>. <i>Gensafegprime</i>
-    generates an <i>n</i>-bit prime <i>p</i> and a generator <i>alpha</i> of the multiplicative
-    group of integers mod <i>p</i>; there is a prime <i>q</i> such that <i>p-1=2*q</i>.
-    <i>Genstrongprime</i> generates a
-    prime, <i>p</i>, with the following properties:<br>
-    &ndash;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<i>p</i>-1)/2 is prime. Therefore <i>p</i>-1 has a large prime factor, <i>p</i>&#8217;.<br>
-    &ndash;<i>p</i>&#8217;-1 has a large prime factor<br>
-    &ndash;<i>p</i>+1 has a large prime factor 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>DSAprimes</i> generates two primes, <i>q</i> and <i>p,</i> using the NIST recommended
-    algorithm for DSA primes. <i>q</i> divides <i>p</i>-1. The random seed used
-    is also returned, so that skeptics can later confirm the computation.
-    Be patient; this is a slow algorithm.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libsec<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/aes.html"><i>aes</i>(3)</a> <a href="../man3/blowfish.html"><i>blowfish</i>(3)</a>, <a href="../man3/des.html"><i>des</i>(3)</a>, <a href="../man3/elgamal.html"><i>elgamal</i>(3)</a>, <a href="../man3/rsa.html"><i>rsa</i>(3)</a>,<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/print.3 b/man/man3/print.3
index c4f96bb..3fd32d1 100644
--- a/man/man3/print.3
+++ b/man/man3/print.3
@@ -412,7 +412,7 @@
 }
 .EE
 .SH SOURCE
-.B \*9/src/lib9/libfmt
+.B \*9/src/lib9/fmt
 .SH SEE ALSO
 .IR fmtinstall (3),
 .IR fprintf (3),
diff --git a/man/man3/print.html b/man/man3/print.html
deleted file mode 100644
index 8640efc..0000000
--- a/man/man3/print.html
+++ /dev/null
@@ -1,309 +0,0 @@
-<head>
-<title>print(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>PRINT(3)</b><td align=right><b>PRINT(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    print, fprint, sprint, snprint, seprint, smprint, runesprint,
-    runesnprint, runeseprint, runesmprint, vfprint, vsnprint, vseprint,
-    vsmprint, runevsnprint, runevseprint, runevsmprint &ndash; print formatted
-    output<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;print(char *format, ...) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;fprint(int fd, char *format, ...) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;sprint(char *s, char *format, ...) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;snprint(char *s, int len, char *format, ...) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* seprint(char *s, char *e, char *format, ...) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* smprint(char *format, ...) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;runesprint(Rune *s, char *format, ...) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;runesnprint(Rune *s, int len, char *format, ...) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runeseprint(Rune *s, Rune *e, char *format, ...) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runesmprint(char *format, ...) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;vfprint(int fd, char *format, va_list v) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;vsnprint(char *s, int len, char *format, va_list v) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* vseprint(char *s, char *e, char *format, va_list v) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* vsmprint(char *format, va_list v) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;runevsnprint(Rune *s, int len, char *format, va_list v) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runevseprint(Rune *s, Rune *e, char *format, va_list v)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runevsmprint(Rune *format, va_list v) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Print</i> writes text to the standard output. <i>Fprint</i> writes to the
-    named output file descriptor: a buffered form is described in
-    <a href="../man3/bio.html"><i>bio</i>(3)</a>. <i>Sprint</i> places text followed by the NUL character (<tt><font size=+1>\0</font></tt>)
-    in consecutive bytes starting at <i>s</i>; it is the user&#8217;s responsibility
-    to ensure that enough storage is available. Each function returns
-    the
-    number of bytes transmitted (not including the NUL in the case
-    of <i>sprint</i>), or a negative value if an output error was encountered.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Snprint</i> is like <i>sprint</i>, but will not place more than <i>len</i> bytes
-    in <i>s</i>. Its result is always NUL-terminated and holds the maximal
-    number of complete UTF-8 characters that can fit. <i>Seprint</i> is like
-    <i>snprint</i>, except that the end is indicated by a pointer <i>e</i> rather
-    than a count and the return value points to the terminating NUL
-    of
-    the resulting string. <i>Smprint</i> is like <i>sprint</i>, except that it prints
-    into and returns a string of the required length, which is allocated
-    by <a href="../man3/malloc.html"><i>malloc</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The routines <i>runesprint</i>, <i>runesnprint</i>, <i>runeseprint</i>, and <i>runesmprint</i>
-    are the same as <i>sprint</i>, <i>snprint</i>, <i>seprint</i> and <i>smprint</i> except that
-    their output is rune strings instead of byte strings. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Finally, the routines <i>vfprint</i>, <i>vsnprint</i>, <i>vseprint</i>, <i>vsmprint</i>, <i>runevsnprint</i>,
-    <i>runevseprint</i>, and <i>runevsmprint</i> are like their <tt><font size=+1>v&#8722;less</font></tt> relatives
-    except they take as arguments a <tt><font size=+1>va_list</font></tt> parameter, so they can
-    be called within a variadic function. The Example section shows
-    a representative usage. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Each of these functions converts, formats, and prints its trailing
-    arguments under control of a <i>format</i> string. The format contains
-    two types of objects: plain characters, which are simply copied
-    to the output stream, and conversion specifications, each of which
-    results in fetching of zero or more arguments. The results
-    are undefined if there are arguments of the wrong type or too
-    few arguments for the format. If the format is exhausted while
-    arguments remain, the excess is ignored. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Each conversion specification has the following format:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>% [flags] verb 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    The verb is a single character and each flag is a single character
-    or a (decimal) numeric string. Up to two numeric strings may be
-    used; the first is called <i>width</i>, the second <i>precision</i>. A period
-    can be used to separate them, and if the period is present then
-    <i>width</i> and <i>precision</i> are taken to be zero if missing, otherwise
-    they are &#8216;omitted&#8217;. Either or both of the numbers may be replaced
-    with the character <tt><font size=+1>*</font></tt>, meaning that the actual number will be obtained
-    from the argument list as an integer. The flags and numbers are
-    arguments to the <i>verb</i> described below. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The numeric verbs <tt><font size=+1>d</font></tt>, <tt><font size=+1>o</font></tt>, <tt><font size=+1>b</font></tt>, <tt><font size=+1>x</font></tt>, and <tt><font size=+1>X</font></tt> format their arguments in
-    decimal, octal, binary, hexadecimal, and upper case hexadecimal.
-    Each interprets the flags <tt><font size=+1>0</font></tt>, <tt><font size=+1>h</font></tt>, <tt><font size=+1>hh</font></tt>, <tt><font size=+1>l</font></tt>, <tt><font size=+1>u</font></tt>, <tt><font size=+1>+</font></tt>, <tt><font size=+1>&#8722;</font></tt>, <tt><font size=+1>,</font></tt>, and <tt><font size=+1>#</font></tt> to mean
-    pad with zeros, short, byte, long, unsigned, always print a sign,
-    left justified, commas every three digits, and alternate format.
-    Also, a space character in the flag position is like <tt><font size=+1>+</font></tt>, but prints
-    a space instead of a plus sign for non-negative values. If neither
-    short nor long is specified, then the argument is an <tt><font size=+1>int</font></tt>. If unsigned
-    is specified, then the argument is interpreted as a positive number
-    and no sign is output. If two <tt><font size=+1>l</font></tt> flags are given, then
-    the argument is interpreted as a <tt><font size=+1>vlong</font></tt> (usually an 8-byte, sometimes
-    a 4-byte integer). If <i>precision</i> is not omitted, the number is
-    padded on the left with zeros until at least <i>precision</i> digits
-    appear. If <i>precision</i> is explicitly 0, and the number is 0, no
-    digits are generated, and alternate formatting does not apply.
-    Then,
-    if alternate format is specified, for <tt><font size=+1>o</font></tt> conversion, the number
-    is preceded by a <tt><font size=+1>0</font></tt> if it doesn&#8217;t already begin with one; for <tt><font size=+1>x</font></tt>
-    conversion, the number is preceded by <tt><font size=+1>0x</font></tt>; for <tt><font size=+1>X</font></tt> conversion, the
-    number is preceded by <tt><font size=+1>0X</font></tt>. Finally, if <i>width</i> is not omitted, the
-    number is padded on the left (or right, if left justification
-    is specified)
-    with enough blanks to make the field at least <i>width</i> characters
-    long. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The floating point verbs <tt><font size=+1>f</font></tt>, <tt><font size=+1>e</font></tt>, <tt><font size=+1>E</font></tt>, <tt><font size=+1>g</font></tt>, and <tt><font size=+1>G</font></tt> take a <tt><font size=+1>double</font></tt> argument.
-    Each interprets the flags <tt><font size=+1>0</font></tt>, <tt><font size=+1>L +</font></tt>, <tt><font size=+1>&#8722;</font></tt>, and <tt><font size=+1>#</font></tt> to mean pad with zeros,
-    long double argument, always print a sign, left justified, and
-    alternate format. <i>Width</i> is the minimum field width and, if the
-    converted value takes up less than <i>width</i> characters, it is
-    padded on the left (or right, if &#8216;left justified&#8217;) with spaces.
-    <i>Precision</i> is the number of digits that are converted after the
-    decimal place for <tt><font size=+1>e</font></tt>, <tt><font size=+1>E</font></tt>, and <tt><font size=+1>f</font></tt> conversions, and <i>precision</i> is the
-    maximum number of significant digits for <tt><font size=+1>g</font></tt> and <tt><font size=+1>G</font></tt> conversions.
-    The <tt><font size=+1>f</font></tt> verb produces output of the form [<tt><font size=+1>&#8722;</font></tt>]<tt><font size=+1>digits</font></tt>[<tt><font size=+1>.digits</font></tt>]. <tt><font size=+1>E
-    </font></tt>conversion appends an exponent <tt><font size=+1>E</font></tt>[<tt><font size=+1>&#8722;</font></tt>]<tt><font size=+1>digits</font></tt>, and <tt><font size=+1>e</font></tt> conversion appends
-    an exponent <tt><font size=+1>e</font></tt>[<tt><font size=+1>&#8722;</font></tt>]<tt><font size=+1>digits</font></tt>. The <tt><font size=+1>g</font></tt> verb will output the argument in
-    either <tt><font size=+1>e</font></tt> or <tt><font size=+1>f</font></tt> with the goal of producing the smallest output.
-    Also, trailing zeros are omitted from the fraction part of the
-    output, and a trailing decimal point appears only if it is
-    followed by a digit. The <tt><font size=+1>G</font></tt> verb is similar, but uses <tt><font size=+1>E</font></tt> format
-    instead of <tt><font size=+1>e</font></tt>. When alternate format is specified, the result will
-    always contain a decimal point, and for <tt><font size=+1>g</font></tt> and <tt><font size=+1>G</font></tt> conversions, trailing
-    zeros are not removed. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>s</font></tt> verb copies a NUL-terminated string (pointer to <tt><font size=+1>char</font></tt>) to
-    the output. The number of characters copied (<i>n</i>) is the minimum
-    of the size of the string and <i>precision</i>. These <i>n</i> characters are
-    justified within a field of <i>width</i> characters as described above.
-    If a <i>precision</i> is given, it is safe for the string not to be nul-
-    terminated as long as it is at least <i>precision</i> characters (not
-    bytes!) long. The <tt><font size=+1>S</font></tt> verb is similar, but it interprets its pointer
-    as an array of runes (see <a href="../man7/utf.html"><i>utf</i>(7)</a>); the runes are converted to
-    UTF before output. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>c</font></tt> verb copies a single <tt><font size=+1>char</font></tt> (promoted to <tt><font size=+1>int</font></tt>) justified within
-    a field of <i>width</i> characters as described above. The <tt><font size=+1>C</font></tt> verb is
-    similar, but works on runes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>p</font></tt> verb formats a pointer value. At the moment, it is a synonym
-    for <tt><font size=+1>x</font></tt>, but that will change if pointers and integers are different
-    sizes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>r</font></tt> verb takes no arguments; it copies the error string returned
-    by a call to <a href="../man3/errstr.html"><i>errstr</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Custom verbs may be installed using <a href="../man3/fmtinstall.html"><i>fmtinstall</i>(3)</a>.<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    This function prints an error message with a variable number of
-    arguments and then quits.<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>void fatal(char *msg, ...)<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char buf[1024], *out;<br>
-            va_list arg;<br>
-            out = seprint(buf, buf+sizeof buf, &quot;Fatal error: &quot;);<br>
-            va_start(arg, msg);<br>
-            out = vseprint(out, buf+sizeof buf, msg, arg);<br>
-            va_end(arg);<br>
-            write(2, buf, out&#8722;buf);<br>
-            exits(&quot;fatal error&quot;);<br>
-            
-        </table>
-        }<br>
-        </font></tt>
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/libfmt<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/fmtinstall.html"><i>fmtinstall</i>(3)</a>, <a href="../man3/fprintf.html"><i>fprintf</i>(3)</a>, <a href="../man7/utf.html"><i>utf</i>(7)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Routines that write to a file descriptor or call <i>malloc</i> set <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The formatting is close to that specified for ANSI <a href="../man3/fprintf.html"><i>fprintf</i>(3)</a>;
-    the main difference is that <tt><font size=+1>b</font></tt> and <tt><font size=+1>r</font></tt> are not in ANSI and <tt><font size=+1>u</font></tt> is a
-    flag here instead of a verb. Also, and distinctly not a bug, <i>print</i>
-    and friends generate UTF rather than ASCII. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    There is no <i>runeprint</i>, <i>runefprint</i>, etc. because runes are byte-order
-    dependent and should not be written directly to a file; use the
-    UTF output of <i>print</i> or <i>fprint</i> instead. Also, <i>sprint</i> is deprecated
-    for safety reasons; use <i>snprint</i>, <i>seprint</i>, or <i>smprint</i> instead.
-    Safety also precludes the existence of <i>runesprint</i>.
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/proto.3 b/man/man3/proto.3
index fcd3904..2d5da3a 100644
--- a/man/man3/proto.3
+++ b/man/man3/proto.3
@@ -127,5 +127,5 @@
 .SH SOURCE
 .B \*9/src/libdisk/proto.c
 .SH SEE ALSO
-.IR mk9660 (8),
+.IR mk9660 (1),
 Plan 9's \fImkfs\fR(8)
diff --git a/man/man3/proto.html b/man/man3/proto.html
deleted file mode 100644
index 59e4fcc..0000000
--- a/man/man3/proto.html
+++ /dev/null
@@ -1,140 +0,0 @@
-<head>
-<title>proto(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>PROTO(3)</b><td align=right><b>PROTO(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    rdproto &ndash; parse and process a proto file listing<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;disk.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>typedef void Protoenum(char *new, char *old, Dir *d, void *a)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>typedef void Protowarn(char *msg, void *a)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int rdproto(char *proto, char *root, Protoenum *enm,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Protowarn *warn, void *a)<br>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Rdproto</i> reads and interprets the named <i>proto</i> file relative to
-    the root directory <i>root</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Each line of the <i>proto</i> file specifies a file to copy. Blank lines
-    and lines beginning with <tt><font size=+1>#</font></tt> are ignored. Indentation (usually tabs)
-    is significant, with each level of indentation corresponding to
-    a level in the file tree. Fields within a line are separated by
-    white space. The first field is the last path element in the destination
-    file tree. The second field specifies the permissions. The third
-    field is the owner of the file, and the fourth is the group owning
-    the file. The fifth field is the name of the file from which to
-    copy; this file is read from the current name space, not the source
-    file tree. All fields except the first are optional. Specifying
-    <tt><font size=+1>&#8722;</font></tt> for
-    permissions, owner, or group causes <i>rdproto</i> to fetch the corresponding
-    information from the file rather than override it. (This is the
-    default behavior when the fields are not present; explicitly specifying
-    <tt><font size=+1>&#8722;</font></tt> is useful when one wishes to set, say, the file owner without
-    setting the permissions.) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Names beginning with a <tt><font size=+1>$</font></tt> are expanded as environment variables.
-    If the first file specified in a directory is <tt><font size=+1>*</font></tt>, all of the files
-    in that directory are considered listed. If the first file is
-    <tt><font size=+1>+</font></tt>, all of the files are copied, and all subdirectories are recursively
-    considered listed. All files are considered relative to <i>root</i>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    For each file named by the <i>proto</i>, <i>enm</i> is called with <i>new</i> pointing
-    at the name of the file (without the root prefix), <i>old</i> pointing
-    at the name of the source file (with the root prefix, when applicable),
-    and <i>Dir</i> at the desired directory information for the new file.
-    Only the <tt><font size=+1>name</font></tt>, <tt><font size=+1>uid</font></tt>, <tt><font size=+1>gid</font></tt>, <tt><font size=+1>mode</font></tt>, <tt><font size=+1>mtime</font></tt>, and <tt><font size=+1>length</font></tt> fields
-    are guaranteed to be valid. The argument <i>a</i> is the same argument
-    passed to <i>rdproto</i>; typically it points at some extra state used
-    by the enumeration function. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    When files or directories do not exist or cannot be read by <i>rdproto</i>,
-    it formats a warning message, calls <i>warn</i>, and continues processing;
-    if <i>warn</i> is nil, <i>rdproto</i> prints the warning message to standard
-    error. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Rdproto</i> returns zero if <i>proto</i> was processed, &ndash;1 if it could not
-    be opened.<br>
-    
-</table>
-<p><font size=+1><b>FILES     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/sys/lib/sysconfig/proto/</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;directory of prototype files.<br>
-    <tt><font size=+1>/sys/lib/sysconfig/proto/portproto</font></tt>&nbsp;&nbsp;&nbsp;generic prototype file.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdisk/proto.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man8/mk9660.html"><i>mk9660</i>(8)</a>, Plan 9&#8217;s <i>mkfs</i>(8)<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/pushtls.html b/man/man3/pushtls.html
deleted file mode 100644
index ee80670..0000000
--- a/man/man3/pushtls.html
+++ /dev/null
@@ -1,261 +0,0 @@
-<head>
-<title>pushtls(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>PUSHTLS(3)</b><td align=right><b>PUSHTLS(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    pushtls, tlsClient, tlsServer, initThumbprints, freeThumbprints,
-    okThumbprint, readcert, readcertchain &ndash; attach TLS1 or SSL3 encryption
-    to a communication channel<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pushtls(int fd, char *hashalg, char *encalg,<br>
-       
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int isclient, char *secret, char *dir) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>#include &lt;mp.h&gt;<br>
-    #include &lt;libsec.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tlsClient(int fd, TLSconn *conn) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tlsServer(int fd, TLSconn *conn) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uchar  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*readcert(char *filename, int *pcertlen) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>PEMchain  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*readcertchain(char *filename) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Thumbprint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initThumbprints(char *ok, char *crl) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freeThumbprints(Thumbprint *table) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;okThumbprint(uchar *hash, Thumbprint *table)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Transport Layer Security (TLS) comprises a record layer protocol,
-    doing message digesting and encrypting in the kernel, and a handshake
-    protocol, doing initial authentication and secret creation at
-    user level and then starting a data channel in the record protocol.
-    TLS is nearly the same as SSL 3.0, and the software
-    should interoperate with implementations of either standard. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    To use just the record layer, as described in Plan 9&#8217;s <i>tls</i>(3),
-    call <i>pushtls</i> to open the record layer device, connect to the communications
-    channel <i>fd</i>, and start up encryption and message authentication
-    as specified in <i>hashalg</i>, <i>encalg</i>, and <i>secret</i>. These parameters
-    must have been arranged at the two ends of the
-    conversation by other means. For example, <i>hashalg</i> could be <tt><font size=+1>sha1</font></tt>,
-    <i>encalg</i> could be <tt><font size=+1>rc4_128</font></tt>, and <i>secret</i> could be the base-64 encoding
-    of two (client-to-server and server-to-client) 20-byte digest
-    keys and two corresponding 16-byte encryption keys. <i>Pushtls</i> returns
-    a file descriptor for the TLS data channel.
-    Anything written to this descriptor will get encrypted and authenticated
-    and then written to the file descriptor, <i>fd</i>. If <i>dir</i> is non-zero,
-    the path name of the connection directory is copied into <i>dir</i>.
-    This path name is guaranteed to be less than 40 bytes long. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Alternatively, call <i>tlsClient</i> to speak the full handshake protocol,
-    negotiate the algorithms and secrets, and return a new data file
-    descriptor for the data channel. <i>Conn</i> points to a (caller-allocated)
-    struct<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct TLSconn{<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            char dir[40]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// OUT &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connection directory<br>
-             uchar *cert; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// IN/OUT certificate<br>
-             uchar *sessionID; // IN/OUT sessionID<br>
-             int certlen, sessionIDlen;<br>
-             void (*trace)(char*fmt, ...);<br>
-             PEMChain *chain;<br>
-            
-        </table>
-         } TLSconn;<br>
-        </font></tt>
-    </table>
-    defined in <i>tls.h</i>. On input, the caller can provide options such
-    as <i>cert</i>, the local certificate, and <i>sessionID</i>, used by a client
-    to resume a previously negotiated security association. On output,
-    the connection directory is set, as with <tt><font size=+1>listen</font></tt> (see <a href="../man3/dial.html"><i>dial</i>(3)</a>).
-    The input <i>cert</i> is freed and a freshly allocated copy of the remote&#8217;s
-    certificate is returned in <i>conn</i>, to be checked by the caller according
-    to its needs. One mechanism is supplied by <i>initThumbprints</i> and
-    <i>freeThumbprints</i> which allocate and free, respectively, a table
-    of hashes from files of known trusted and revoked certificates.
-    <i>okThumbprint</i> confirms that a particular hash is in the
-    table, as computed by 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>uchar hash[SHA1dlen];<br>
-         conn = (TLSconn*)mallocz(sizeof *conn, 1);<br>
-         fd = tlsClient(fd, conn);<br>
-         sha1(conn&#8722;&gt;cert, conn&#8722;&gt;certlen, hash, nil);<br>
-         if(!okThumbprint(hash,table))<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            exits(&quot;suspect server&quot;);<br>
-            
-        </table>
-         ...application begins...<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    Call <i>tlsServer</i> to perform the corresponding function on the server
-    side: 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>fd = accept(lcfd, ldir);<br>
-         conn = (TLSconn*)mallocz(sizeof *conn, 1);<br>
-         conn&#8722;&gt;cert = readcert(&quot;cert.pem&quot;, &amp;conn&#8722;&gt;certlen);<br>
-         fd = tlsServer(fd, conn);<br>
-         ...application begins...<br>
-        </font></tt>
-    </table>
-    The private key corresponding to <i>cert.pem</i> should have been previously
-    loaded into factotum. (See <a href="../man3/rsa.html"><i>rsa</i>(3)</a> for more about key generation.)
-    By setting<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>conn&#8722;&gt;chain = readcertchain(&quot;intermediate&#8722;certs.pem&quot;);<br>
-        </font></tt>
-    </table>
-    the server can present extra certificate evidence to establish
-    the chain of trust to a root authority known to the client. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Conn</i> is not required for the ongoing conversation and may be freed
-    by the application whenever convenient.<br>
-    
-</table>
-<p><font size=+1><b>FILES     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/sys/lib/tls<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        thumbprints of trusted services<br>
-        
-    </table>
-    <tt><font size=+1>/sys/lib/ssl<br>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        PEM certificate files<br>
-        
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libsec/port<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/dial.html"><i>dial</i>(3)</a>, <a href="../man7/thumbprint.html"><i>thumbprint</i>(7)</a>; Plan 9&#8217;s <i>factotum</i>(4) and <i>tls</i>(3)<br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    return &ndash;1 on failure.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Pushtls</i> is not implemented. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Client certificates and client sessionIDs are not yet implemented.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Note that in the TLS protocol <i>sessionID</i> itself is public; it is
-    used as a pointer to secrets stored in factotum.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/qball.html b/man/man3/qball.html
deleted file mode 100644
index b140333..0000000
--- a/man/man3/qball.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<head>
-<title>qball(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>QBALL(3)</b><td align=right><b>QBALL(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    qball &ndash; 3-d rotation controller<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;draw.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;geometry.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void qball(Rectangle r, Mouse *mousep,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Quaternion *orientation,<br>
-        void (*redraw)(void), Quaternion *ap)<br>
-        
-    </table>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Qball</i> is an interactive controller that allows arbitrary 3-space
-    rotations to be specified with the mouse. Imagine a sphere with
-    its center at the midpoint of rectangle <i>r</i>, and diameter the smaller
-    of <i>r</i>&#8217;s dimensions. Dragging from one point on the sphere to another
-    specifies the endpoints of a great-circle arc. (Mouse
-    points outside the sphere are projected to the nearest point on
-    the sphere.) The axis of rotation is normal to the plane of the
-    arc, and the angle of rotation is twice the angle of the arc.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Argument <i>mousep</i> is a pointer to the mouse event that triggered
-    the interaction. It should have some button set. <i>Qball</i> will read
-    more events into <i>mousep</i>, and return when no buttons are down.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    While <i>qball</i> is reading mouse events, it calls out to the caller-supplied
-    routine <i>redraw</i>, which is expected to update the screen to reflect
-    the changing orientation. Argument <i>orientation</i> is the orientation
-    that <i>redraw</i> should examine, represented as a unit Quaternion (see
-    <i>quaternion(9.2)).</i> The caller may set it to any
-    orientation. It will be updated before each call to <i>redraw</i> (and
-    on return) by multiplying by the rotation specified with the mouse.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    It is possible to restrict <i>qball&#8217;s</i> attention to rotations about
-    a particular axis. If <i>ap</i> is null, the rotation is unconstrained.
-    Otherwise, the rotation will be about the same axis as <i>*ap</i>. This
-    is accomplished by projecting points on the sphere to the nearest
-    point also on the plane through the sphere&#8217;s center and normal
-    to
-    the axis.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libgeometry/qball.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/quaternion.html"><i>quaternion</i>(3)</a><br>
-    Ken Shoemake, &#8220;Animating Rotation with Quaternion Curves&#8221;, <i>SIGGRAPH
-    &#8217;85 Conference Proceedings.<br>
-    </i>
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/quaternion.html b/man/man3/quaternion.html
deleted file mode 100644
index 257ebe5..0000000
--- a/man/man3/quaternion.html
+++ /dev/null
@@ -1,163 +0,0 @@
-<head>
-<title>quaternion(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>QUATERNION(3)</b><td align=right><b>QUATERNION(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    qtom, mtoq, qadd, qsub, qneg, qmul, qdiv, qunit, qinv, qlen, slerp,
-    qmid, qsqrt &ndash; Quaternion arithmetic<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;draw.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;geometry.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Quaternion qadd(Quaternion q, Quaternion r) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Quaternion qsub(Quaternion q, Quaternion r) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Quaternion qneg(Quaternion q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Quaternion qmul(Quaternion q, Quaternion r) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Quaternion qdiv(Quaternion q, Quaternion r) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Quaternion qinv(Quaternion q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double qlen(Quaternion p) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Quaternion qunit(Quaternion q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void qtom(Matrix m, Quaternion q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Quaternion mtoq(Matrix mat) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Quaternion slerp(Quaternion q, Quaternion r, double a) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Quaternion qmid(Quaternion q, Quaternion r) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Quaternion qsqrt(Quaternion q)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The Quaternions are a non-commutative extension field of the Real
-    numbers, designed to do for rotations in 3-space what the complex
-    numbers do for rotations in 2-space. Quaternions have a real component
-    <i>r</i> and an imaginary vector component <i>v</i>=(<i>i</i>,<i>j</i>,<i>k</i>). Quaternions add
-    componentwise and multiply according to
-    the rule (<i>r</i>,<i>v</i>)(<i>s</i>,<i>w</i>)=(<i>rs</i>-<i>v</i>.<i>w</i>, <i>rw</i>+<i>vs</i>+<i>v</i>x<i>w</i>), where . and x are the ordinary
-    vector dot and cross products. The multiplicative inverse of a
-    non-zero quaternion (<i>r</i>,<i>v</i>) is (<i>r</i>,<i>-v</i>)/(<i>r</i>2-<i>v</i>.<i>v</i>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The following routines do arithmetic on quaternions, represented
-    as<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct Quaternion Quaternion;<br>
-        struct Quaternion{<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            double r, i, j, k;<br>
-            
-        </table>
-        };<br>
-        </font></tt>
-    </table>
-    Name&nbsp;&nbsp;&nbsp;&nbsp;Description<br>
-    <tt><font size=+1>qadd</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;Add two quaternions.<br>
-    <tt><font size=+1>qsub</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;Subtract two quaternions.<br>
-    <tt><font size=+1>qneg</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;Negate a quaternion.<br>
-    <tt><font size=+1>qmul</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;Multiply two quaternions.<br>
-    <tt><font size=+1>qdiv</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;Divide two quaternions.<br>
-    <tt><font size=+1>qinv</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;Return the multiplicative inverse of a quaternion.<br>
-    <tt><font size=+1>qlen</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;Return <tt><font size=+1>sqrt(q.r*q.r+q.i*q.i+q.j*q.j+q.k*q.k)</font></tt>, the length of
-    a quaternion.<br>
-    <tt><font size=+1>qunit</font></tt>&nbsp;&nbsp;&nbsp;Return a unit quaternion (<i>length=1</i>) with components proportional
-    to <i>q</i>&#8217;s. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A rotation by angle <i>&#952;</i> about axis <i>A</i> (where <i>A</i> is a unit vector)
-    can be represented by the unit quaternion <i>q</i>=(cos <i>&#952;</i>/2, <i>A</i>sin <i>&#952;</i>/2).
-    The same rotation is represented by -<i>q</i>; a rotation by -<i>&#952;</i> about -<i>A</i>
-    is the same as a rotation by <i>&#952;</i> about <i>A</i>. The quaternion <i>q</i> transforms
-    points by (0,<i>x&#8217;,y&#8217;,z&#8217;</i>) = <i>q</i>-1(0,<i>x,y,z</i>)<i>q</i>. Quaternion
-    multiplication composes rotations. The orientation of an object
-    in 3-space can be represented by a quaternion giving its rotation
-    relative to some &#8216;standard&#8217; orientation. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The following routines operate on rotations or orientations represented
-    as unit quaternions:<br>
-    <tt><font size=+1>mtoq</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;Convert a rotation matrix (see <a href="../man3/matrix.html"><i>matrix</i>(3)</a>) to a unit quaternion.<br>
-    <tt><font size=+1>qtom</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;Convert a unit quaternion to a rotation matrix.<br>
-    <tt><font size=+1>slerp</font></tt>&nbsp;&nbsp;&nbsp;Spherical lerp. Interpolate between two orientations. The
-    rotation that carries <i>q</i> to <i>r</i> is <i>q</i>-1<i>r</i>, so <tt><font size=+1>slerp(q, r, t)</font></tt> is <i>q</i>(<i>q</i>-1<i>r</i>)<i>t</i>.<br>
-    <tt><font size=+1>qmid&nbsp;&nbsp;&nbsp;&nbsp;slerp(q, r, .5)<br>
-    qsqrt</font></tt>&nbsp;&nbsp;&nbsp;The square root of <i>q</i>. This is just a rotation about the same
-    axis by half the angle.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libgeometry/quaternion.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/matrix.html"><i>matrix</i>(3)</a>, <a href="../man3/qball.html"><i>qball</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/quote.html b/man/man3/quote.html
deleted file mode 100644
index 433c5bf..0000000
--- a/man/man3/quote.html
+++ /dev/null
@@ -1,164 +0,0 @@
-<head>
-<title>quote(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>QUOTE(3)</b><td align=right><b>QUOTE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    quotestrdup, quoterunestrdup, unquotestrdup, unquoterunestrdup,
-    quotestrfmt, quoterunestrfmt, quotefmtinstall, doquote, needsrcquote
-    &ndash; quoted character strings<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char *quotestrdup(char *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune *quoterunestrdup(Rune *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char *unquotestrdup(char *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune *unquoterunestrdup(Rune *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int quotestrfmt(Fmt*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int quoterunestrfmt(Fmt*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void quotefmtinstall(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int (*doquote)(int c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int needsrcquote(int c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines manipulate character strings, either adding or
-    removing quotes as necessary. In the quoted form, the strings
-    are in the style of <a href="../man1/rc.html"><i>rc</i>(1)</a><i>,</i> with single quotes surrounding the
-    string. Embedded single quotes are indicated by a doubled single
-    quote. For instance,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>Don't worry!<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    when quoted becomes<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>'Don''t worry!'<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    The empty string is represented by two quotes, <tt><font size=+1>''</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The first four functions act as variants of <tt><font size=+1>strdup</font></tt> (see <a href="../man3/strcat.html"><i>strcat</i>(3)</a>).
-    Each returns a freshly allocated copy of the string, created using
-    <a href="../man3/malloc.html"><i>malloc</i>(3)</a>. <i>Quotestrdup</i> returns a quoted copy of <i>s</i>, while <i>unquotestrdup</i>
-    returns a copy of <i>s</i> with the quotes evaluated. The <i>rune</i> versions
-    of these functions do the same for strings (see
-    <a href="../man3/runestrcat.html"><i>runestrcat</i>(3)</a>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The string returned by <i>quotestrdup</i> or <i>quoterunestrdup</i> has the
-    following properties:<br>
-    1.&nbsp;&nbsp;&nbsp;&nbsp;If the original string <i>s</i> is empty, the returned string is <tt><font size=+1>''</font></tt>.<br>
-    2.&nbsp;&nbsp;&nbsp;&nbsp;If <i>s</i> contains no quotes, blanks, or control characters, the
-    returned string is identical to <i>s</i>.<br>
-    3.&nbsp;&nbsp;&nbsp;&nbsp;If <i>s</i> needs quotes to be added, the first character of the returned
-    string will be a quote. For example, <tt><font size=+1>hello world</font></tt> becomes <tt><font size=+1>'hello
-    world'</font></tt> not <tt><font size=+1>hello' 'world</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The function pointer <i>doquote</i> is <tt><font size=+1>nil</font></tt> by default. If it is non-nil,
-    characters are passed to that function to see if they should be
-    quoted. This mechanism allows programs to specify that characters
-    other than blanks, control characters, or quotes be quoted. Regardless
-    of the return value of <i>*doquote</i>, blanks, control
-    characters, and quotes are always quoted. <i>Needsrcquote</i> is provided
-    as a <i>doquote</i> function that flags any character special to <a href="../man1/rc.html"><i>rc</i>(1)</a>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Quotestrfmt</i> and <i>quoterunestrfmt</i> are <a href="../man3/print.html"><i>print</i>(3)</a> formatting routines
-    that produce quoted strings as output. They may be installed by
-    hand, but <i>quotefmtinstall</i> installs them under the standard format
-    characters <tt><font size=+1>q</font></tt> and <tt><font size=+1>Q</font></tt>. (They are not installed automatically.) If
-    the format string includes the alternate format character <tt><font size=+1>#</font></tt>,
-    for example <tt><font size=+1>%#q</font></tt>, the printed string will always be quoted; otherwise
-    quotes will only be provided if necessary to avoid ambiguity.
-    In <tt><font size=+1>&lt;libc.h&gt;</font></tt> there are <tt><font size=+1>#pragma</font></tt> statements so the compiler can type-check
-    uses of <tt><font size=+1>%q</font></tt> and <tt><font size=+1>%Q</font></tt> in <a href="../man3/print.html"><i>print</i>(3)</a> format strings.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/quote.c<br>
-    /usr/local/plan9/src/lib9/fmt/fmtquote.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/rc.html"><i>rc</i>(1)</a>, <a href="../man3/malloc.html"><i>malloc</i>(3)</a>, <a href="../man3/print.html"><i>print</i>(3)</a>, <a href="../man3/strcat.html"><i>strcat</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Because it is provided by the format library, <i>doquote</i> is a preprocessor
-    macro defined as <i>fmtdoquote</i>; see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/rand.html b/man/man3/rand.html
deleted file mode 100644
index 0601c6b..0000000
--- a/man/man3/rand.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<head>
-<title>rand(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>RAND(3)</b><td align=right><b>RAND(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    rand, lrand, frand, nrand, lnrand, srand, truerand, ntruerand,
-    fastrand, nfastrand &ndash; random number generator<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rand(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;lrand(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>double frand(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nrand(int val) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;lnrand(long val) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;srand(long seed) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;truerand(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;ntruerand(ulong val)<br>
-    #include &lt;mp.h&gt;<br>
-    #include &lt;libsec.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;genrandom(uchar *buf, int nbytes) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;prng(uchar *buf, int nbytes) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;fastrand(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>ulong &nbsp;&nbsp;&nbsp;nfastrand(ulong val)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Rand</i> returns a uniform pseudo-random number <i>x</i>, 0&le;<i>x</i>&lt;215. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Lrand</i> returns a uniform <tt><font size=+1>long</font></tt> <i>x</i>, 0&le;<i>x</i>&lt;231. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Frand</i> returns a uniform <tt><font size=+1>double</font></tt> <i>x</i>, 0.0&le;<i>x</i>&lt;1.0, This function calls
-    <i>lrand</i> twice to generate a number with as many as 62 significant
-    bits of mantissa. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Nrand</i> returns a uniform integer <i>x</i>, 0&le;<i>x</i>&lt;<i>val. Lnrand</i> is the same,
-    but returns a <tt><font size=+1>long</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The algorithm is additive feedback with:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        x[n] = (x[n-273] + x[n-607]) mod 231 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-        
-    </table>
-    giving a period of 230 &#215; (2607 &ndash; 1). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The generators are initialized by calling <i>srand</i> with whatever
-    you like as argument. To get a different starting value each time,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>srand(time(0)) 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    will work as long as it is not called more often than once per
-    second. Calling<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>srand(1) 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    will initialize the generators to their starting state. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Truerand</i> returns a random unsigned long read from <tt><font size=+1>/dev/random</font></tt>.
-    Due to the nature of <tt><font size=+1>/dev/random</font></tt>, truerand can only return a few
-    hundred bits a second. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Ntruerand</i> returns a uniform random integer <i>x</i>, 0&le;<i>x</i>&lt;<i>val</i>&le;<i>232-1. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </i>
-    <i>Genrandom</i> fills a buffer with bytes from the X9.17 pseudo-random
-    number generator. The X9.17 generator is seeded by 24 truly random
-    bytes read from <tt><font size=+1>/dev/random</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Prng</i> uses the native <a href="../man3/rand.html"><i>rand</i>(3)</a> pseudo-random number generator to
-    fill the buffer. Used with <i>srand</i>, this function can produce a
-    reproducible stream of pseudo random numbers useful in testing.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Both <i>genrandom</i> and <i>prng</i> may be passed to <i>mprand</i> (see <a href="../man3/mp.html"><i>mp</i>(3)</a>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Fastrand</i> uses <i>genrandom</i> to return a uniform <tt><font size=+1>unsigned long</font></tt> <i>x</i>, 0&le;<i>x</i>&lt;<i>232-1.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </i>
-    <i>Nfastrand</i> uses <i>genrandom</i> to return a uniform <tt><font size=+1>unsigned long</font></tt> <i>x</i>,
-    0&le;<i>x</i>&lt;<i>val</i>&le;<i>232-1.<br>
-    </i>
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9<br>
-    /usr/local/plan9/src/libsec/port<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mp.html"><i>mp</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Truerand</i> and <i>ntruerand</i> maintain a static file descriptor. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    To avoid name conflicts with the underlying system, <i>rand</i>, <i>lrand</i>,
-    <i>frand</i>, <i>nrand</i>, <i>lnrand</i>, and <i>srand</i> are preprocessor macros defined
-    as <i>p9rand</i>, <i>p9lrand</i>, and so on; see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/rc4.html b/man/man3/rc4.html
deleted file mode 100644
index 8c0d374..0000000
--- a/man/man3/rc4.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<head>
-<title>rc4(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>RC4(3)</b><td align=right><b>RC4(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    setupRC4state, rc4, rc4skip, rc4back - alleged rc4 encryption<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mp.h&gt;<br>
-    #include &lt;libsec.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void setupRC4state(RC4state *s, uchar *seed, int slen) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void rc4(RC4state *s, uchar *data, int dlen) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void rc4skip(RC4state *s, int nbytes) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void rc4back(RC4state *s, int nbytes)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    This is an algorithm alleged to be Rivest&#8217;s RC4 encryption function.
-    It is a pseudo-random number generator with a 256 byte state and
-    a long cycle. The input buffer is XOR&#8217;d with the output of the
-    generator both to encrypt and to decrypt. The seed, entered using
-    <i>setupRC4state</i>, can be any length. The generator can
-    be run forward using <i>rc4</i>, skip over bytes using <i>rc4skip</i> to account
-    lost transmissions, or run backwards using <i>rc4back</i> to cover retransmitted
-    data. The <i>RC4state</i> structure keeps track of the algorithm.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libsec<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mp.html"><i>mp</i>(3)</a>, <a href="../man3/aes.html"><i>aes</i>(3)</a>, <a href="../man3/blowfish.html"><i>blowfish</i>(3)</a>, <a href="../man3/des.html"><i>des</i>(3)</a>, <a href="../man3/dsa.html"><i>dsa</i>(3)</a>, <a href="../man3/elgamal.html"><i>elgamal</i>(3)</a>, <a href="../man3/rsa.html"><i>rsa</i>(3)</a>,
-    <a href="../man3/sechash.html"><i>sechash</i>(3)</a>, <a href="../man3/prime.html"><i>prime</i>(3)</a>, <a href="../man3/rand.html"><i>rand</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/read.html b/man/man3/read.html
deleted file mode 100644
index 515c3f7..0000000
--- a/man/man3/read.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<head>
-<title>read(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>READ(3)</b><td align=right><b>READ(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    read, readn, write, pread, pwrite &ndash; read or write file<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long read(int fd, void *buf, long nbytes) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long readn(int fd, void *buf, long nbytes) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long write(int fd, void *buf, long nbytes) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long pread(int fd, void *buf, long nbytes, vlong offset) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long pwrite(int fd, void *buf, long nbytes, vlong offset)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Read</i> reads <i>nbytes</i> bytes of data from the offset in the file associated
-    with <i>fd</i> into memory at <i>buf</i>. The offset is advanced by the number
-    of bytes read. It is not guaranteed that all <i>nbytes</i> bytes will
-    be read; for example if the file refers to the console, at most
-    one line will be returned. In any event the number of bytes
-    read is returned. A return value of 0 is conventionally interpreted
-    as end of file. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Readn</i> is just like read, but does successive <i>read</i> calls until
-    <i>nbytes</i> have been read, or a read system call returns a non-positive
-    count. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Write</i> writes <i>nbytes</i> bytes of data starting at <i>buf</i> to the file
-    associated with <i>fd</i> at the file offset. The offset is advanced
-    by the number of bytes written. The number of characters actually
-    written is returned. It should be regarded as an error if this
-    is not the same as requested. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Pread</i> and <i>Pwrite</i> equivalent to a <a href="../man3/seek.html"><i>seek</i>(3)</a> to <i>offset</i> followed by
-    a <i>read</i> or <i>write</i>. By combining the operations in a single atomic
-    call, they more closely match the 9P protocol (see <i>intro</i>(9p))
-    and, more important, permit multiprocess programs to execute multiple
-    concurrent read and write operations on the same file
-    descriptor without interference.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/readn.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/intro.html"><i>intro</i>(3)</a>, <a href="../man3/open.html"><i>open</i>(3)</a>, <a href="../man3/dup.html"><i>dup</i>(3)</a>, <a href="../man3/pipe.html"><i>pipe</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions set <i>errstr</i>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/regexp.html b/man/man3/regexp.html
deleted file mode 100644
index 21e1849..0000000
--- a/man/man3/regexp.html
+++ /dev/null
@@ -1,178 +0,0 @@
-<head>
-<title>regexp(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>REGEXP(3)</b><td align=right><b>REGEXP(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    regcomp, regcomplit, regcompnl, regexec, regsub, rregexec, rregsub,
-    regerror &ndash; regular expression<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;regexp.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Reprog &nbsp;&nbsp;&nbsp;*regcomp(char *exp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Reprog &nbsp;&nbsp;&nbsp;*regcomplit(char *exp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Reprog &nbsp;&nbsp;&nbsp;*regcompnl(char *exp) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;regexec(Reprog *prog, char *string, Resub *match, int msize)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void regsub(char *source, char *dest, int dlen, Resub *match,
-    int msize)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;rregexec(Reprog *prog, Rune *string, Resub *match, int msize)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void rregsub(Rune *source, Rune *dest, int dlen, Resub *match,
-    int msize)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void regerror(char *msg)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Regcomp</i> compiles a regular expression and returns a pointer to
-    the generated description. The space is allocated by <a href="../man3/malloc.html"><i>malloc</i>(3)</a>
-    and may be released by <i>free</i>. Regular expressions are exactly as
-    in <a href="../man7/regexp.html"><i>regexp</i>(7)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Regcomplit</i> is like <i>regcomp</i> except that all characters are treated
-    literally. <i>Regcompnl</i> is like <i>regcomp</i> except that the <tt><font size=+1>.</font></tt> metacharacter
-    matches all characters, including newlines. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Regexec</i> matches a null-terminated <i>string</i> against the compiled
-    regular expression in <i>prog</i>. If it matches, <i>regexec</i> returns <tt><font size=+1>1</font></tt> and
-    fills in the array <i>match</i> with character pointers to the substrings
-    of <i>string</i> that correspond to the parenthesized subexpressions
-    of <i>exp</i>: <tt><font size=+1>match[</font></tt><i>i</i><tt><font size=+1>].sp</font></tt> points to the beginning and
-    <tt><font size=+1>match[</font></tt><i>i</i><tt><font size=+1>].ep</font></tt> points just beyond the end of the <i>i</i>th substring. (Subexpression
-    <i>i</i> begins at the <i>i</i>th left parenthesis, counting from 1.) Pointers
-    in <tt><font size=+1>match[0]</font></tt> pick out the substring that corresponds to the whole
-    regular expression. Unused elements of <i>match</i> are filled with zeros.
-    Matches involving <tt><font size=+1>*</font></tt>, <tt><font size=+1>+</font></tt>, and <tt><font size=+1>?</font></tt> are
-    extended as far as possible. The number of array elements in <i>match</i>
-    is given by <i>msize</i>. The structure of elements of <i>match</i> is:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            union {<br>
-             char *sp;<br>
-             Rune *rsp;<br>
-            } s;<br>
-            union {<br>
-             char *ep;<br>
-             Rune *rep;<br>
-            } e;<br>
-            
-        </table>
-        } Resub;<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    If <tt><font size=+1>match[0].s.sp</font></tt> is nonzero on entry, <i>regexec</i> starts matching
-    at that point within <i>string</i>. If <tt><font size=+1>match[0].e.ep</font></tt> is nonzero on entry,
-    the last character matched is the one preceding that point. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Regsub</i> places in <i>dest</i> a substitution instance of <i>source</i> in the
-    context of the last <i>regexec</i> performed using <i>match</i>. Each instance
-    of <tt><font size=+1>\</font></tt><i>n</i>, where <i>n</i> is a digit, is replaced by the string delimited
-    by <tt><font size=+1>match[</font></tt><i>n</i><tt><font size=+1>].sp</font></tt> and <tt><font size=+1>match[</font></tt><i>n</i><tt><font size=+1>].ep</font></tt>. Each instance of <tt><font size=+1>&amp;</font></tt> is replaced
-    by the string delimited by <tt><font size=+1>match[0].sp</font></tt> and
-    <tt><font size=+1>match[0].ep</font></tt>. The substitution will always be null terminated and
-    trimmed to fit into dlen bytes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Regerror</i>, called whenever an error is detected in <i>regcomp</i>, writes
-    the string <i>msg</i> on the standard error file and exits. <i>Regerror</i>
-    can be replaced to perform special error processing. If the user
-    supplied <i>regerror</i> returns rather than exits, <i>regcomp</i> will return
-    0. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Rregexec</i> and <i>rregsub</i> are variants of <i>regexec</i> and <i>regsub</i> that use
-    strings of <tt><font size=+1>Runes</font></tt> instead of strings of <tt><font size=+1>chars</font></tt>. With these routines,
-    the <i>rsp</i> and <i>rep</i> fields of the <i>match</i> array elements should be used.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libregexp<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man1/grep.html"><i>grep</i>(1)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Regcomp</i> returns <tt><font size=+1>0</font></tt> for an illegal expression or other failure.
-    <i>Regexec</i> returns 0 if <i>string</i> is not matched.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    There is no way to specify or match a NUL character; NULs terminate
-    patterns and strings.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/rfork.html b/man/man3/rfork.html
deleted file mode 100644
index f76a61f..0000000
--- a/man/man3/rfork.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<head>
-<title>rfork(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>RFORK(3)</b><td align=right><b>RFORK(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    rfork &ndash; manipulate process state<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int rfork(int flags)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Rfork</i> is a partial implementation of the Plan 9 system call. It
-    can be used to manipulate some process state and to create new
-    processes a la <a href="../man2/fork.html"><i>fork</i>(2)</a>. It cannot be used to create shared-memory
-    processes (Plan 9&#8217;s <tt><font size=+1>RFMEM</font></tt> flag); for that functionality use <i>proccreate</i>
-    (see <a href="../man3/thread.html"><i>thread</i>(3)</a>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <i>flags</i> argument to <i>rfork</i> selects which resources of the invoking
-    process (parent) are shared by the new process (child) or initialized
-    to their default values. <i>Flags</i> is the logical OR of some subset
-    of<br>
-    <tt><font size=+1>RFPROC</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If set a new process is created; otherwise changes affect
-    the current process.<br>
-    <tt><font size=+1>RFNOWAIT</font></tt>&nbsp;&nbsp;&nbsp;If set, the child process will be dissociated from the
-    parent. Upon exit the child will leave no <tt><font size=+1>Waitmsg</font></tt> (see <a href="../man3/wait.html"><i>wait</i>(3)</a>)
-    for the parent to collect.<br>
-    <tt><font size=+1>RFNOTEG</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;Each process is a member of a group of processes that all
-    receive notes when a note is sent to the group (see <a href="../man3/postnote.html"><i>postnote</i>(3)</a>
-    and <a href="../man2/signal.html"><i>signal</i>(2)</a>). The group of a new process is by default the same
-    as its parent, but if <tt><font size=+1>RFNOTEG</font></tt> is set (regardless of <tt><font size=+1>RFPROC</font></tt>), the
-    process becomes the first in a new group, isolated
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            from previous processes. In Plan 9, a process can call <tt><font size=+1>rfork(RFNOTEG)</font></tt>
-            and then be sure that it will no longer receive console interrupts
-            or other notes. Unix job-control shells put each command in its
-            own process group and then relay notes to the current foreground
-            command, making the idiom
-            less useful.<br>
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>RFFDG</font></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If set, the invoker&#8217;s file descriptor table (see <i>intro</i>(<i>))</i>
-    is copied; otherwise the two processes share a single table. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    File descriptors in a shared file descriptor table are kept open
-    until either they are explicitly closed or all processes sharing
-    the table exit. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If <tt><font size=+1>RFPROC</font></tt> is set, the value returned in the parent process is
-    the process id of the child process; the value returned in the
-    child is zero. Without <tt><font size=+1>RFPROC</font></tt>, the return value is zero. Process
-    ids range from 1 to the maximum integer (<tt><font size=+1>int</font></tt>) value. <i>Rfork</i> will
-    sleep, if necessary, until required process resources are available.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Calling <tt><font size=+1>rfork(RFFDG|RFPROC)</font></tt> is equivalent to calling <a href="../man2/fork.html"><i>fork</i>(2)</a>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/rfork.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Rfork</i> sets <i>errstr</i>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/rsa.html b/man/man3/rsa.html
deleted file mode 100644
index 0cfd294..0000000
--- a/man/man3/rsa.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<head>
-<title>rsa(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>RSA(3)</b><td align=right><b>RSA(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    asn1dump, asn1toRSApriv, decodepem, decodepemchain, rsadecrypt,
-    rsaencrypt, rsafill,, rsagen, rsaprivalloc, rsaprivfree, rsaprivtopub,
-    rsapuballoc, rsapubfree, X509toRSApub, X509dump, X509gen, X509req,
-    X509verify &ndash; RSA encryption algorithm<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mp.h&gt;<br>
-    #include &lt;libsec.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>RSApriv* &nbsp;&nbsp;&nbsp;rsagen(int nlen, int elen, int nrep) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>RSApriv* &nbsp;&nbsp;&nbsp;rsafill(mpint *n, mpint *ek, mpint *dk, mpint *p, mpint
-    *q) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rsaencrypt(RSApub *k, mpint *in, mpint *out) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>mpint* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rsadecrypt(RSApriv *k, mpint *in, mpint *out) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>RSApub* &nbsp;&nbsp;&nbsp;&nbsp;rsapuballoc(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rsapubfree(RSApub*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>RSApriv* &nbsp;&nbsp;&nbsp;rsaprivalloc(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rsaprivfree(RSApriv*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>RSApub* &nbsp;&nbsp;&nbsp;&nbsp;rsaprivtopub(RSApriv*) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>RSApub* &nbsp;&nbsp;&nbsp;&nbsp;X509toRSApub(uchar *cert, int ncert, char *name, int nname)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>RSApriv* &nbsp;&nbsp;&nbsp;asn1toRSApriv(uchar *priv, int npriv) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asn1dump(uchar *der, int len) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uchar* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decodepem(char *s, char *type, int *len) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>PEMChain* decodepemchain(char *s, char *type) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X509dump(uchar *cert, int ncert) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uchar* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X509gen(RSApriv *priv, char *subj, ulong valid[2], int
-    *certlen); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>uchar* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X509req(RSApriv *priv, char *subj, int *certlen); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* X509verify(uchar *cert, int ncert, RSApub *pk)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    RSA is a public key encryption algorithm. The owner of a key publishes
-    the public part of the key:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <tt><font size=+1>struct RSApub<br>
-            {<br>
-            mpint*n;// modulus<br>
-            mpint*ek;// exp (encryption key)<br>
-            };<br>
-            </font></tt>
-        </table>
-        
-    </table>
-    This part can be used for encrypting data (with <i>rsaencrypt</i>) to
-    be sent to the owner. The owner decrypts (with <i>rsadecrypt</i>) using
-    his private key:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <tt><font size=+1>struct RSApriv<br>
-            {<br>
-            RSApubpub;<br>
-            mpint*dk;// exp (decryption key)<br>
-            <br>
-            // precomputed crt values<br>
-            mpint*p;<br>
-            mpint*q;<br>
-            mpint*kp;// k mod p&#8722;1<br>
-            mpint*kq;// k mod q&#8722;1<br>
-            mpint*c2;// for converting residues to number<br>
-            };<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            </font></tt>
-            
-        </table>
-        
-    </table>
-    Keys are generated using <i>rsagen</i>. <i>Rsagen</i> takes both bit length
-    of the modulus, the bit length of the public key exponent, and
-    the number of repetitions of the Miller-Rabin primality test to
-    run. If the latter is 0, it does the default number of rounds.
-    <i>Rsagen</i> returns a newly allocated structure containing both public
-    and
-    private keys. <i>Rsaprivtopub</i> returns a newly allocated copy of the
-    public key corresponding to the private key. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Rsafill</i> takes as input the bare minimum pieces of an RSA private
-    key and computes the rest (<tt><font size=+1>kp</font></tt>, <tt><font size=+1>kq</font></tt>, and <tt><font size=+1>c2</font></tt>). It returns a new private
-    key. All the <tt><font size=+1>mpint</font></tt>s in the key, even the ones that correspond
-    directly to <i>rsafill</i>&#8217;s input parameters, are freshly allocated,
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The routines <i>rsaalloc</i>, <i>rsafree</i>, <i>rsapuballoc</i>, <i>rsapubfree</i>, <i>rsaprivalloc</i>,
-    and <i>rsaprivfree</i> are provided to aid in user provided key I/O.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Given a binary X.509 <i>cert</i>, the routine <i>X509toRSApub</i> returns the
-    public key and, if <i>name</i> is not nil, the CN part of the Distinguished
-    Name of the certificate&#8217;s Subject. (This is conventionally a userid
-    or a host DNS name.) No verification is done of the certificate
-    signature; the caller should check the fingerprint,
-    <i>sha1(cert)</i>, against a table or check the certificate by other
-    means. X.509 certificates are often stored in PEM format; use
-    <i>dec64</i> to convert to binary before computing the fingerprint or
-    calling <i>X509toRSApub</i>. For the special case of certificates signed
-    by a known trusted key (in a single step, without certificate
-    chains)
-    <i>X509verify</i> checks the signature on <i>cert</i>. It returns nil if successful,
-    else an error string. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>X509dump</i> prints an X.509 certificate to standard ouptut. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>X509gen</i> creates a self-signed X.509 certificate, given an RSA
-    keypair <i>priv</i>, a issuer/subject string <i>subj</i>, and the starting and
-    ending validity dates, <i>valid</i>. Length of the allocated binary certificate
-    is stored in <i>certlen</i>. The subject line is conventionally of the
-    form<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>&quot;C=US ST=NJ L=07922 O=Lucent OU='Bell Labs' CN=Eric&quot;<br>
-        </font></tt>
-    </table>
-    using the quoting conventions of <i>tokenize</i> (see <a href="../man3/getfields.html"><i>getfields</i>(3)</a>).
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>X509req</i> creates an X.509 certification request. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Asn1toRSApriv</i> converts an ASN1 formatted RSA private key into
-    the corresponding <tt><font size=+1>RSApriv</font></tt> structure. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Asn1dump</i> prints an ASN1 object to standard output. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Decodepem</i> takes a zero terminated string, <i>s</i>, and decodes the PEM
-    (privacy-enhanced mail) formatted section for <i>type</i> within it.
-    If successful, it returns the decoded section and sets <tt><font size=+1>*</font></tt><i>len</i> to
-    its decoded length. If not, it returns <tt><font size=+1>nil</font></tt>, and <tt><font size=+1>*</font></tt><i>len</i> is undefined.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Decodepemchain</i> is similar but expects a sequence of PEM-formatted
-    sections and returns a linked list of the decodings:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef struct PEMChain PEMChain<br>
-        struct PEMChain<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            PEMChain *next;<br>
-            uchar *pem;<br>
-            int pemlen;<br>
-            
-        </table>
-        };<br>
-        </font></tt>
-    </table>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libsec<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/mp.html"><i>mp</i>(3)</a>, <a href="../man3/aes.html"><i>aes</i>(3)</a>, <a href="../man3/blowfish.html"><i>blowfish</i>(3)</a>, <a href="../man3/des.html"><i>des</i>(3)</a>, <a href="../man3/dsa.html"><i>dsa</i>(3)</a>, <a href="../man3/elgamal.html"><i>elgamal</i>(3)</a>, <a href="../man3/rc4.html"><i>rc4</i>(3)</a>,
-    <a href="../man3/sechash.html"><i>sechash</i>(3)</a>, <a href="../man3/prime.html"><i>prime</i>(3)</a>, <a href="../man3/rand.html"><i>rand</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/rune.html b/man/man3/rune.html
deleted file mode 100644
index 2fed11f..0000000
--- a/man/man3/rune.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<head>
-<title>rune(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>RUNE(3)</b><td align=right><b>RUNE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    runetochar, chartorune, runelen, runenlen, fullrune, utfecpy,
-    utflen, utfnlen, utfrune, utfrrune, utfutf &ndash; rune/UTF conversion<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runetochar(char *s, Rune *r) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chartorune(Rune *r, char *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runelen(long r) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runenlen(Rune *r, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fullrune(char *s, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;utfecpy(char *s1, char *es1, char *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;utflen(char *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;utfnlen(char *s, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;utfrune(char *s, long c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;utfrrune(char *s, long c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* &nbsp;&nbsp;&nbsp;utfutf(char *s1, char *s2)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines convert to and from a UTF byte stream and runes.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Runetochar</i> copies one rune at <i>r</i> to at most <tt><font size=+1>UTFmax</font></tt> bytes starting
-    at <i>s</i> and returns the number of bytes copied. <tt><font size=+1>UTFmax</font></tt>, defined as
-    <tt><font size=+1>3</font></tt> in <tt><font size=+1>&lt;libc.h&gt;</font></tt>, is the maximum number of bytes required to represent
-    a rune. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Chartorune</i> copies at most <tt><font size=+1>UTFmax</font></tt> bytes starting at <i>s</i> to one rune
-    at <i>r</i> and returns the number of bytes copied. If the input is not
-    exactly in UTF format, <i>chartorune</i> will convert to 0x80 and return
-    1. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Runelen</i> returns the number of bytes required to convert <i>r</i> into
-    UTF. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Runenlen</i> returns the number of bytes required to convert the <i>n</i>
-    runes pointed to by <i>r</i> into UTF. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Fullrune</i> returns 1 if the string <i>s</i> of length <i>n</i> is long enough
-    to be decoded by <i>chartorune</i> and 0 otherwise. This does not guarantee
-    that the string contains a legal UTF encoding. This routine is
-    used by programs that obtain input a byte at a time and need to
-    know when a full rune has arrived. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The following routines are analogous to the corresponding string
-    routines with <tt><font size=+1>utf</font></tt> substituted for <tt><font size=+1>str</font></tt> and <tt><font size=+1>rune</font></tt> substituted for
-    <tt><font size=+1>chr</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Utfecpy</i> copies UTF sequences until a null sequence has been copied,
-    but writes no sequences beyond <i>es1</i>. If any sequences are copied,
-    <i>s1</i> is terminated by a null sequence, and a pointer to that sequence
-    is returned. Otherwise, the original <i>s1</i> is returned. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Utflen</i> returns the number of runes that are represented by the
-    UTF string <i>s</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Utfnlen</i> returns the number of complete runes that are represented
-    by the first <i>n</i> bytes of UTF string <i>s</i>. If the last few bytes of
-    the string contain an incompletely coded rune, <i>utfnlen</i> will not
-    count them; in this way, it differs from <i>utflen</i>, which includes
-    every byte of the string. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Utfrune</i> (<i>utfrrune</i>) returns a pointer to the first (last) occurrence
-    of rune <i>c</i> in the UTF string <i>s</i>, or 0 if <i>c</i> does not occur in the
-    string. The NUL byte terminating a string is considered to be
-    part of the string <i>s</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Utfutf</i> returns a pointer to the first occurrence of the UTF string
-    <i>s2</i> as a UTF substring of <i>s1</i>, or 0 if there is none. If <i>s2</i> is the
-    null string, <i>utfutf</i> returns <i>s1</i>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/utf/rune.c<br>
-    /usr/local/plan9/src/lib9/utf/utfrune.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man7/utf.html"><i>utf</i>(7)</a>, <a href="../man1/tcs.html"><i>tcs</i>(1)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/runestrcat.html b/man/man3/runestrcat.html
deleted file mode 100644
index 4774265..0000000
--- a/man/man3/runestrcat.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<head>
-<title>runestrcat(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>RUNESTRCAT(3)</b><td align=right><b>RUNESTRCAT(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    runestrcat, runestrncat, runestrcmp, runestrncmp, runestrcpy,
-    runestrncpy, runestrecpy, runestrlen, runestrchr, runestrrchr,
-    runestrdup, runestrstr &ndash; rune string operations<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runestrcat(Rune *s1, Rune *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runestrncat(Rune *s1, Rune *s2, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;runestrcmp(Rune *s1, Rune *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;runestrncmp(Rune *s1, Rune *s2, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runestrcpy(Rune *s1, Rune *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runestrncpy(Rune *s1, Rune *s2, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runestrecpy(Rune *s1, Rune *es1, Rune *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;runestrlen(Rune *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runestrchr(Rune *s, Rune c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runestrrchr(Rune *s, Rune c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runestrdup(Rune *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Rune* runestrstr(Rune *s1, Rune *s2)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions are rune string analogues of the corresponding
-    functions in <a href="../man3/strcat.html"><i>strcat</i>(3)</a>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/memory.html"><i>memory</i>(3)</a>, <a href="../man3/rune.html"><i>rune</i>(3)</a>, <a href="../man3/strcat.html"><i>strcat</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The outcome of overlapping moves varies among implementations.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/sechash.html b/man/man3/sechash.html
deleted file mode 100644
index 2e05546..0000000
--- a/man/man3/sechash.html
+++ /dev/null
@@ -1,195 +0,0 @@
-<head>
-<title>sechash(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>SECHASH(3)</b><td align=right><b>SECHASH(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    md4, md5, sha1, hmac_md5, hmac_sha1, md5pickle, md5unpickle, sha1pickle,
-    sha1unpickle &ndash; cryptographically secure hashes<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;mp.h&gt;<br>
-    #include &lt;libsec.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>DigestState* &nbsp;&nbsp;&nbsp;&nbsp;md4(uchar *data, ulong dlen, uchar *digest,    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DigestState
-    *state) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>DigestState* &nbsp;&nbsp;&nbsp;&nbsp;md5(uchar *data, ulong dlen, uchar *digest,    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DigestState
-    *state) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char*  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;md5pickle(MD5state *state) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>MD5state*  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;md5unpickle(char *p); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>DigestState* &nbsp;&nbsp;&nbsp;&nbsp;sha1(uchar *data, ulong dlen, uchar *digest,    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DigestState
-    *state) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char*  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sha1pickle(MD5state *state) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>MD5state*  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sha1unpickle(char *p); 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>DigestState* &nbsp;&nbsp;&nbsp;&nbsp;hmac_md5(uchar *data, ulong dlen,<br>
-       
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            uchar *key, ulong klen,<br>
-               uchar *digest, DigestState *state) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>DigestState* &nbsp;&nbsp;&nbsp;&nbsp;hmac_sha1(uchar *data, ulong dlen,<br>
-       
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            uchar *key, ulong klen,<br>
-               uchar *digest, DigestState *state)<br>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions implement the cryptographic hash functions MD4,
-    MD5, and SHA1. The output of the hash is called a <i>digest</i>. A hash
-    is secure if, given the hashed data and the digest, it is difficult
-    to predict the change to the digest resulting from some change
-    to the data without rehashing the whole data. Therefore, if
-    a secret is part of the hashed data, the digest can be used as
-    an integrity check of the data by anyone possessing the secret.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The routines <i>md4</i>, <i>md5</i>, <i>sha1</i>, <i>hmac_md5</i>, and <i>hmac_sha1</i> differ only
-    in the length of the resulting digest and in the security of the
-    hash. Usage for each is the same. The first call to the routine
-    should have <tt><font size=+1>nil</font></tt> as the <i>state</i> parameter. This call returns a state
-    which can be used to chain subsequent calls. The last call
-    should have digest non-nil. <i>Digest</i> must point to a buffer of at
-    least the size of the digest produced. This last call will free
-    the state and copy the result into <i>digest</i>. For example, to hash
-    a single buffer using <i>md5</i>:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>uchar digest[MD5dlen];<br>
-        md5(data, len, digest, nil);<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    To chain a number of buffers together, bounded on each end by
-    some secret:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>char buf[256];<br>
-        uchar digest[MD5dlen];<br>
-        DigestState *s;<br>
-        s = md5(&quot;my password&quot;, 11, nil, nil);<br>
-        while((n = read(fd, buf, 256)) &gt; 0)<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            md5(buf, n, nil, s);<br>
-            
-        </table>
-        md5(&quot;drowssap ym&quot;, 11, digest, s);<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    The constants <i>MD4dlen</i>, <i>MD5dlen</i>, and <i>SHA1dlen</i> define the lengths
-    of the digests. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Hmac_md5</i> and <i>hmac_sha1</i> are used slightly differently. These hash
-    algorithms are keyed and require a key to be specified on every
-    call. The digest lengths for these hashes are <i>MD5dlen</i> and <i>SHA1dlen</i>
-    respectively. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The functions <i>md5pickle</i> and <i>sha1pickle</i> marshal the state of a
-    digest for transmission. <i>Md5unpickle</i> and <i>sha1unpickle</i> unmarshal
-    a pickled digest. All four routines return a pointer to a newly
-    <a href="../man3/malloc.html"><i>malloc</i>(3)</a>&#8217;d object.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libsec<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/aes.html"><i>aes</i>(3)</a>, <a href="../man3/blowfish.html"><i>blowfish</i>(3)</a>, <a href="../man3/des.html"><i>des</i>(3)</a>, <a href="../man3/elgamal.html"><i>elgamal</i>(3)</a>, <a href="../man3/rc4.html"><i>rc4</i>(3)</a>, <a href="../man3/rsa.html"><i>rsa</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/seek.html b/man/man3/seek.html
deleted file mode 100644
index a2c1965..0000000
--- a/man/man3/seek.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<head>
-<title>seek(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>SEEK(3)</b><td align=right><b>SEEK(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    seek &ndash; change file offset<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>vlong seek(int fd, vlong n, int type)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Seek</i> sets the offset for the file associated with <i>fd</i> as follows:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        If <i>type</i> is 0, the offset is set to <i>n</i> bytes.<br>
-        If <i>type</i> is 1, the pointer is set to its current location plus
-        <i>n</i>.<br>
-        If <i>type</i> is 2, the pointer is set to the size of the file plus
-        <i>n</i>. 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        
-        
-    </table>
-    The new file offset value is returned. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Seeking in a directory is not allowed. Seeking in a pipe is a
-    no-op.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/seek.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/intro.html"><i>intro</i>(3)</a>, <a href="../man3/open.html"><i>open</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Sets <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To avoid name conflicts with the underlying system, <i>seek</i> is a
-    preprocessor macro defined as <i>p9seek</i>; see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/sendfd.html b/man/man3/sendfd.html
deleted file mode 100644
index 3700760..0000000
--- a/man/man3/sendfd.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<head>
-<title>sendfd(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>SENDFD(3)</b><td align=right><b>SENDFD(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    sendfd, recvfd &ndash; pass file descriptors along Unix domain sockets<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;sendfd(int socket, int fd) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;recvfd(int socket)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Recvfd</i> and <i>sendfd</i> can be used to pass an open file descriptor
-    over a Unix domain socket from one process to another. Since <a href="../man3/pipe.html"><i>pipe</i>(3)</a>
-    is implemented with <a href="../man2/socketpair.html"><i>socketpair</i>(2)</a> instead of <a href="../man2/pipe.html"><i>pipe</i>(2)</a>, <i>socket</i> can
-    be a file descriptor obtained from <a href="../man3/pipe.html"><i>pipe</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Sendfd</i> sends the file descriptor <i>fd</i> along the socket to a process
-    calling <i>recvfd</i> on the other end. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    It is assumed that the two sides have coordinated and agreed to
-    transfer a file descriptor already, so that the <i>sendfd</i> is met
-    with a <i>recvfd</i> instead of an ordinary <i>read</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The file descriptor number may change on its way between processes,
-    but the kernel structure it represents will not.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/sendfd.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man2/socketpair.html"><i>socketpair</i>(2)</a>, <i>sendmsg</i> in <a href="../man2/send.html"><i>send</i>(2)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/setjmp.html b/man/man3/setjmp.html
deleted file mode 100644
index b22431f..0000000
--- a/man/man3/setjmp.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<head>
-<title>setjmp(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>SETJMP(3)</b><td align=right><b>SETJMP(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    setjmp, longjmp, notejmp &ndash; non-local goto<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;setjmp(jmp_buf env) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void longjmp(jmp_buf env, int val) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void notejmp(void *uregs, jmp_buf env, int val)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines are useful for dealing with errors and interrupts
-    encountered in a low-level subroutine of a program. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Setjmp</i> saves its stack environment in <i>env</i> for later use by <i>longjmp</i>.
-    It returns value 0. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Longjmp</i> restores the environment saved by the last call of <i>setjmp</i>.
-    It then causes execution to continue as if the call of <i>setjmp</i>
-    had just returned with value <i>val</i>. The invoker of <i>setjmp</i> must not
-    itself have returned in the interim. All accessible data have
-    values as of the time <i>longjmp</i> was called. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Notejmp</i> is the same as <i>longjmp</i> except that it is to be called
-    from within a note handler (see <a href="../man3/notify.html"><i>notify</i>(3)</a>). The <i>uregs</i> argument
-    should be the first argument passed to the note handler. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Setjmp</i> and <i>longjmp</i> can also be used to switch stacks.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/jmp.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/notify.html"><i>notify</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Notejmp</i> cannot recover from an address trap or bus error (page
-    fault) on the 680x0 architectures. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    To avoid name conflicts with the underlying system, <i>setjmp</i>, <i>longjmp</i>,
-    <i>notejmp</i>, and <i>jmp_buf</i> are preprocessor macros defined as <i>p9setjmp</i>,
-    <i>p9longjmp</i>, <i>p9notejmp</i>, and <i>p9jmp_buf</i>; see <a href="../man3/intro.html"><i>intro</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>P9setjmp</i> is implemented as a preprocessor macro that calls <i>sigsetjmp</i>
-    (see Unix&#8217;s <i>setjmp</i>(3)).<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/sleep.html b/man/man3/sleep.html
deleted file mode 100644
index 6614f33..0000000
--- a/man/man3/sleep.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<head>
-<title>sleep(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>SLEEP(3)</b><td align=right><b>SLEEP(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    sleep, alarm &ndash; delay, ask for delayed note<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int sleep(long millisecs) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long alarm(unsigned long millisecs)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Sleep</i> suspends the current process for the number of milliseconds
-    specified by the argument. The actual suspension time may be a
-    little more or less than the requested time. If <i>millisecs</i> is 0,
-    the process gives up the CPU if another process is waiting to
-    run, returning immediately if not. Sleep returns &ndash;1 if interrupted,
-    0 otherwise. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Alarm</i> causes an <tt><font size=+1>alarm</font></tt> note (see <a href="../man3/notify.html"><i>notify</i>(3)</a>) to be sent to the invoking
-    process after the number of milliseconds given by the argument.
-    Successive calls to <i>alarm</i> reset the alarm clock. A zero argument
-    clears the alarm. The return value is the amount of time previously
-    remaining in the alarm clock.
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/sleep.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/intro.html"><i>intro</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions set <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To avoid name conflicts with the underlying system, <i>sleep</i> and
-    <i>alarm</i> are preprocessor macros defined as <i>p9sleep</i> and <i>p9alarm</i>;
-    see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/stat.html b/man/man3/stat.html
deleted file mode 100644
index fb79a64..0000000
--- a/man/man3/stat.html
+++ /dev/null
@@ -1,244 +0,0 @@
-<head>
-<title>stat(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>STAT(3)</b><td align=right><b>STAT(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    stat, fstat, wstat, fwstat, dirstat, dirfstat, dirwstat, dirfwstat,
-    nulldir &ndash; get and put file status<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int stat(char *name, uchar *edir, int nedir) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int fstat(int fd, uchar *edir, int nedir) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int wstat(char *name, uchar *edir, int nedir) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int fwstat(int fd, uchar *edir, int nedir) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Dir* dirstat(char *name) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Dir* dirfstat(int fd) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int dirwstat(char *name, Dir *dir) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int dirfwstat(int fd, Dir *dir) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void nulldir(Dir *d)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Given a file&#8217;s <i>name</i>, or an open file descriptor <i>fd</i>, these routines
-    retrieve or modify file status information. <i>Stat</i>, <i>fstat</i>, <i>wstat</i>,
-    and <i>fwstat</i> are the system calls; they deal with machine-independent
-    <i>directory entries</i>. Their format is defined by <i>stat</i>(9p). <i>Stat</i> and
-    <i>fstat</i> retrieve information about <i>name</i> or <i>fd</i> into <i>edir</i>, a buffer
-    of length <i>nedir</i>, defined in <tt><font size=+1>&lt;libc.h&gt;</font></tt>. <i>Wstat</i> and <i>fwstat</i> write information
-    back, thus changing file attributes according to the contents
-    of <i>edir</i>. The data returned from the kernel includes its leading
-    16-bit length field as described in <i>intro</i>(9p). For symmetry, this
-    field must also be present when passing data to the
-    kernel in a call to <i>wstat</i> and <i>fwstat</i>, but its value is ignored.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Dirstat</i>, <i>dirfstat</i>, <i>dirwstat</i>, and <i>dirfwstat</i> are similar to their
-    counterparts, except that they operate on <i>Dir</i> structures:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef<br>
-        struct Dir {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            /* system&#8722;modified data */<br>
-            uint &nbsp;&nbsp;&nbsp;type; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* server type */<br>
-            uint &nbsp;&nbsp;&nbsp;dev; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* server subtype */<br>
-            /* file data */<br>
-            Qid &nbsp;&nbsp;&nbsp;&nbsp;qid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* unique id from server */<br>
-            ulong mode; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* permissions */<br>
-            ulong atime; &nbsp;&nbsp;&nbsp;&nbsp;/* last read time */<br>
-            ulong mtime; &nbsp;&nbsp;&nbsp;&nbsp;/* last write time */<br>
-            vlong length; &nbsp;&nbsp;&nbsp;/* file length: see &lt;u.h&gt; */<br>
-            char &nbsp;&nbsp;&nbsp;*name; &nbsp;&nbsp;&nbsp;&nbsp;/* last element of path */<br>
-            char &nbsp;&nbsp;&nbsp;*uid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* owner name */<br>
-            char &nbsp;&nbsp;&nbsp;*gid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* group name */<br>
-            char &nbsp;&nbsp;&nbsp;*muid; &nbsp;&nbsp;&nbsp;&nbsp;/* last modifier name */<br>
-            
-        </table>
-        } Dir;<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    The returned structure is allocated by <a href="../man3/malloc.html"><i>malloc</i>(3)</a>; freeing it also
-    frees the associated strings. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    This structure and the <tt><font size=+1>Qid</font></tt> structure are defined in <tt><font size=+1>&lt;libc.h&gt;</font></tt>. If
-    the file resides on permanent storage and is not a directory,
-    the length returned by <i>stat</i> is the number of bytes in the file.
-    For directories, the length returned is zero. For files that are
-    streams (e.g., pipes and network connections), the length is the
-    number of bytes that can be read without blocking. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Each file is the responsibility of some <i>server</i>: it could be a
-    file server, a kernel device, or a user process. <tt><font size=+1>Type</font></tt> identifies
-    the server type, and <tt><font size=+1>dev</font></tt> says which of a group of servers of the
-    same type is the one responsible for this file. <tt><font size=+1>Qid</font></tt> is a structure
-    containing <tt><font size=+1>path</font></tt> and <tt><font size=+1>vers</font></tt> fields: <tt><font size=+1>path</font></tt> is guaranteed to be
-    unique among all path names currently on the file server, and
-    <tt><font size=+1>vers</font></tt> changes each time the file is modified. The <tt><font size=+1>path</font></tt> is a <tt><font size=+1>long
-    long</font></tt> (64 bits, <tt><font size=+1>vlong</font></tt>) and the <tt><font size=+1>vers</font></tt> is an <tt><font size=+1>unsigned long</font></tt> (32 bits,
-    <tt><font size=+1>ulong</font></tt>). Thus, if two files have the same <tt><font size=+1>type</font></tt>, <tt><font size=+1>dev</font></tt>, and <tt><font size=+1>qid</font></tt> they
-    are the same file. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The bits in <tt><font size=+1>mode</font></tt> are defined by 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>0x80000000 </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;directory<br>
-        <tt><font size=+1>0x40000000 </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;append only<br>
-        <tt><font size=+1>0x20000000 </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;exclusive use (locked)<br>
-         
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <tt><font size=+1>0400 </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;read permission by owner<br>
-             <tt><font size=+1>0200 </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;write permission by owner<br>
-             <tt><font size=+1>0100 </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;execute permission (search on directory) by owner<br>
-             <tt><font size=+1>0070 </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;read, write, execute (search) by group<br>
-             <tt><font size=+1>0007 </font></tt>&nbsp;&nbsp;&nbsp;&nbsp;read, write, execute (search) by others<br>
-            
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-            
-        </table>
-        
-    </table>
-    There are constants defined in <tt><font size=+1>&lt;libc.h&gt;</font></tt> for these bits: <tt><font size=+1>DMDIR</font></tt>, <tt><font size=+1>DMAPPEND</font></tt>,
-    and <tt><font size=+1>DMEXCL</font></tt> for the first three; and <tt><font size=+1>DMREAD</font></tt>, <tt><font size=+1>DMWRITE</font></tt>, and <tt><font size=+1>DMEXEC</font></tt>
-    for the read, write, and execute bits for others. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The two time fields are measured in seconds since the epoch (Jan
-    1 00:00 1970 GMT). <tt><font size=+1>Mtime</font></tt> is the time of the last change of content.
-    Similarly, <tt><font size=+1>atime</font></tt> is set whenever the contents are accessed; also,
-    it is set whenever <tt><font size=+1>mtime</font></tt> is set. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>Uid</font></tt> and <tt><font size=+1>gid</font></tt> are the names of the owner and group of the file;
-    <tt><font size=+1>muid</font></tt> is the name of the user that last modified the file (setting
-    <tt><font size=+1>mtime</font></tt>). Groups are also users, but each server is free to associate
-    a list of users with any user name <i>g</i>, and that list is the set
-    of users in the group <i>g</i>. When an initial attachment is made to
-    a
-    server, the user string in the process group is communicated to
-    the server. Thus, the server knows, for any given file access,
-    whether the accessing process is the owner of, or in the group
-    of, the file. This selects which sets of three bits in <tt><font size=+1>mode</font></tt> is
-    used to check permissions. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Only some of the fields may be changed with the <i>wstat</i> calls. The
-    <tt><font size=+1>name</font></tt> can be changed by anyone with write permission in the parent
-    directory. The <tt><font size=+1>mode</font></tt> and <tt><font size=+1>mtime</font></tt> can be changed by the owner or the
-    group leader of the file&#8217;s current group. The <i>gid</i> can be changed:
-    by the owner if also a member of the new
-    group; or by the group leader of the file&#8217;s current group if also
-    leader of the new group (see <i>intro</i>(9p) for more information about
-    permissions, users, and groups). The <tt><font size=+1>length</font></tt> can be changed by
-    anyone with write permission, provided the operation is implemented
-    by the server. (See <i>intro</i>(9p) for permission, user,
-    and group information). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Special values in the fields of the <tt><font size=+1>Dir</font></tt> passed to <i>wstat</i> indicate
-    that the field is not intended to be changed by the call. The
-    values are the maximum unsigned integer of appropriate size for
-    integral values (usually <tt><font size=+1>~0</font></tt>, but beware of conversions and size
-    mismatches when comparing values) and the empty or nil string
-    for string values. The routine <i>nulldir</i> initializes all the elements
-    of <i>d</i> to these &#8220;don&#8217;t care&#8221; values. Thus one may change the mode,
-    for example, by using <i>nulldir</i> to initialize a <tt><font size=+1>Dir</font></tt>, then setting
-    the mode, and then doing <i>wstat</i>; it is not necessary to use <i>stat</i>
-    to retrieve the initial values first.
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/dirstat.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/intro.html"><i>intro</i>(3)</a>, <a href="../man3/fcall.html"><i>fcall</i>(3)</a>, <a href="../man3/dirread.html"><i>dirread</i>(3)</a>, <i>stat</i>(9p)<br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The <i>dir</i> functions return a pointer to the data for a successful
-    call, or <tt><font size=+1>nil</font></tt> on error. The others return the number of bytes copied
-    on success, or &ndash;1 on error. All set <i>errstr</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If the buffer for <i>stat</i> or <i>fstat</i> is too short for the returned
-    data, the return value will be <tt><font size=+1>BIT16SZ</font></tt> (see <a href="../man3/fcall.html"><i>fcall</i>(3)</a>) and the
-    two bytes returned will contain the initial count field of the
-    returned data; retrying with <tt><font size=+1>nedir</font></tt> equal to that value plus <tt><font size=+1>BIT16SZ</font></tt>
-    (for the count itself) should succeed.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/strcat.html b/man/man3/strcat.html
deleted file mode 100644
index 542ebd2..0000000
--- a/man/man3/strcat.html
+++ /dev/null
@@ -1,203 +0,0 @@
-<head>
-<title>strcat(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>STRCAT(3)</b><td align=right><b>STRCAT(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    strcat, strncat, strcmp, strncmp, cistrcmp, cistrncmp, strcpy,
-    strncpy, strecpy, strlen, strchr, strrchr, strpbrk, strspn, strcspn,
-    strtok, strdup, strstr, cistrstr &ndash; string operations<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* strcat(char *s1, char *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* strncat(char *s1, char *s2, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;strcmp(char *s1, char *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;strncmp(char *s1, char *s2, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;cistrcmp(char *s1, char *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;cistrncmp(char *s1, char *s2, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* strcpy(char *s1, char *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* strecpy(char *s1, char *es1, char *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* strncpy(char *s1, char *s2, long n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;strlen(char *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* strchr(char *s, char c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* strrchr(char *s, char c) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* strpbrk(char *s1, char *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;strspn(char *s1, char *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;strcspn(char *s1, char *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* strtok(char *s1, char *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* strdup(char *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* strstr(char *s1, char *s2) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>char* cistrstr(char *s1, char *s2)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The arguments <i>s1, s2</i> and <i>s</i> point to null-terminated strings. The
-    functions <i>strcat</i>, <i>strncat</i>, <i>strcpy</i>, <i>strecpy</i>, and <i>strncpy</i> all alter
-    <i>s1</i>. <i>Strcat</i> and <i>strcpy</i> do not check for overflow of the array pointed
-    to by <i>s1</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strcat</i> appends a copy of string <i>s2</i> to the end of string <i>s1</i>. <i>Strncat</i>
-    appends at most <i>n</i> bytes. Each returns a pointer to the null-terminated
-    result. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strcmp</i> compares its arguments and returns an integer less than,
-    equal to, or greater than 0, according as <i>s1</i> is lexicographically
-    less than, equal to, or greater than <i>s2</i>. <i>Strncmp</i> makes the same
-    comparison but examines at most <i>n</i> bytes. <i>Cistrcmp</i> and <i>cistrncmp</i>
-    ignore ASCII case distinctions when comparing strings.
-    The comparisons are made with unsigned bytes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strcpy</i> copies string <i>s2</i> to <i>s1</i>, stopping after the null byte has
-    been copied. <i>Strncpy</i> copies exactly <i>n</i> bytes, truncating <i>s2</i> or
-    adding null bytes to <i>s1</i> if necessary. The result will not be null-terminated
-    if the length of <i>s2</i> is <i>n</i> or more. Each function returns <i>s1</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strecpy</i> copies bytes until a null byte has been copied, but writes
-    no bytes beyond <i>es1</i>. If any bytes are copied, <i>s1</i> is terminated
-    by a null byte, and a pointer to that byte is returned. Otherwise,
-    the original <i>s1</i> is returned. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strlen</i> returns the number of bytes in <i>s</i>, not including the terminating
-    null byte. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strchr</i> (<i>strrchr</i>) returns a pointer to the first (last) occurrence
-    of byte <i>c</i> in string <i>s</i>, or <tt><font size=+1>0</font></tt> if <i>c</i> does not occur in the string.
-    The null byte terminating a string is considered to be part of
-    the string. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strpbrk</i> returns a pointer to the first occurrence in string <i>s1</i>
-    of any byte from string <i>s2</i>, <tt><font size=+1>0</font></tt> if no byte from <i>s2</i> exists in <i>s1</i>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strspn</i> (<i>strcspn</i>) returns the length of the initial segment of
-    string <i>s1</i> which consists entirely of bytes from (not from) string
-    <i>s2</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strtok</i> considers the string <i>s1</i> to consist of a sequence of zero
-    or more text tokens separated by spans of one or more bytes from
-    the separator string <i>s2</i>. The first call, with pointer <i>s1</i> specified,
-    returns a pointer to the first byte of the first token, and will
-    have written a null byte into <i>s1</i> immediately following the returned
-    token. The function keeps track of its position in the string
-    between separate calls; subsequent calls, signified by <i>s1</i> being
-    <tt><font size=+1>0</font></tt>, will work through the string <i>s1</i> immediately following that
-    token. The separator string <i>s2</i> may be different from call to call.
-    When no token remains in <i>s1</i>, <tt><font size=+1>0</font></tt> is returned. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strdup</i> returns a pointer to a distinct copy of the null-terminated
-    string <i>s</i> in space obtained from <a href="../man3/malloc.html"><i>malloc</i>(3)</a> or <tt><font size=+1>0</font></tt> if no space can
-    be obtained. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Strstr</i> returns a pointer to the first occurrence of <i>s2</i> as a substring
-    of <i>s1</i>, or 0 if there is none. If <i>s2</i> is the null string, <i>strstr</i>
-    returns <i>s1</i>. <i>Cistrstr</i> operates analogously, but ignores ASCII case
-    differences when comparing strings.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/memory.html"><i>memory</i>(3)</a>, <a href="../man3/rune.html"><i>rune</i>(3)</a>, <a href="../man3/runestrcat.html"><i>runestrcat</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines know nothing about UTF. Use the routines in <a href="../man3/rune.html"><i>rune</i>(3)</a>
-    as appropriate. Note, however, that the definition of UTF guarantees
-    that <i>strcmp</i> compares UTF strings correctly. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The outcome of overlapping moves varies among implementations.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/string.html b/man/man3/string.html
deleted file mode 100644
index 55a1673..0000000
--- a/man/man3/string.html
+++ /dev/null
@@ -1,244 +0,0 @@
-<head>
-<title>string(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>STRING(3)</b><td align=right><b>STRING(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    s_alloc, s_append, s_array, s_copy, s_error, s_free, s_incref,
-    s_memappend, s_nappend, s_new, s_newalloc, s_parse, s_reset, s_restart,
-    s_terminate, s_tolower, s_putc, s_unique, s_grow, s_read, s_read_line,
-    s_getline, s_allocinstack, s_freeinstack, s_rdinstack &ndash; extensible
-    strings<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;String.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>String* &nbsp;&nbsp;&nbsp;&nbsp;s_new(void)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_free(String *s)<br>
-    String* &nbsp;&nbsp;&nbsp;&nbsp;s_newalloc(int n)<br>
-    String* &nbsp;&nbsp;&nbsp;&nbsp;s_array(char *p, int n)<br>
-    String* &nbsp;&nbsp;&nbsp;&nbsp;s_grow(String *s, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_putc(String *s, int c)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_terminate(String *s)<br>
-    String* &nbsp;&nbsp;&nbsp;&nbsp;s_reset(String *s)<br>
-    String* &nbsp;&nbsp;&nbsp;&nbsp;s_restart(String *s)<br>
-    String* &nbsp;&nbsp;&nbsp;&nbsp;s_append(String *s, char *p)<br>
-    String* &nbsp;&nbsp;&nbsp;&nbsp;s_nappend(String *s, char *p, int n)<br>
-    String* &nbsp;&nbsp;&nbsp;&nbsp;s_memappend(String *s, char *p, int n)<br>
-    String* &nbsp;&nbsp;&nbsp;&nbsp;s_copy(char *p)<br>
-    String* &nbsp;&nbsp;&nbsp;&nbsp;s_parse(String *s1, String *s2)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_tolower(String *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>String* &nbsp;&nbsp;&nbsp;&nbsp;s_incref(String *s)<br>
-    String* &nbsp;&nbsp;&nbsp;&nbsp;s_unique(String *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Sinstack* s_allocinstack(char *file)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_freeinstack(Sinstack *stack)<br>
-    char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_rdinstack(Sinstack *stack, String *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;bio.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_read(Biobuf *b, String *s, int n)<br>
-    char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_read_line(Biobuf *b, String *s)<br>
-    char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s_getline(Biobuf *b, String *s)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines manipulate extensible strings. The basic type is
-    <tt><font size=+1>String</font></tt>, which points to an array of characters. The string maintains
-    pointers to the beginning and end of the allocated array. In addition
-    a finger pointer keeps track of where parsing will start (for
-    <i>s_parse</i>) or new characters will be added (for <i>s_putc</i>,
-    <i>s_append</i>, and <i>s_nappend</i>). The structure, and a few useful macros
-    are:<br>
-    <tt><font size=+1>typedef struct String {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Lock;<br>
-            char*base;/* base of String */<br>
-            char*end;/* end of allocated space+1 */<br>
-            char*ptr;/* ptr into String */<br>
-            ...<br>
-            
-        </table>
-        
-    </table>
-    } String;<br>
-    #define s_to_c(s) ((s)&#8722;&gt;base)<br>
-    #define s_len(s) ((s)&#8722;&gt;ptr&#8722;(s)&#8722;&gt;base)<br>
-    #define s_clone(s) s_copy((s)&#8722;&gt;base)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <i>S_to_c</i> is used when code needs a reference to the character array.
-    Using <tt><font size=+1>s&#8722;&gt;base</font></tt> directly is frowned upon since it exposes too much
-    of the implementation.<br>
-    <p><font size=+1><b>Allocation and freeing     </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A string must be allocated before it can be used. One normally
-    does this using <i>s_new</i>, giving the string an initial allocation
-    of 128 bytes. If you know that the string will need to grow much
-    longer, you can use <i>s_newalloc</i> instead, specifying the number
-    of bytes in the initial allocation. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_free</i> causes both the string and its character array to be freed.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_grow</i> grows a string&#8217;s allocation by a fixed amount. It is useful
-    if you are reading directly into a string&#8217;s character array but
-    should be avoided if possible. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_array</i> is used to create a constant array, that is, one whose
-    contents won&#8217;t change. It points directly to the character array
-    given as an argument. Tread lightly when using this call.<br>
-    <p><font size=+1><b>Filling the string     </b></font><br>
-    After its initial allocation, the string points to the beginning
-    of an allocated array of characters starting with NUL. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_putc</i> writes a character into the string at the pointer and advances
-    the pointer to point after it. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_terminate</i> writes a NUL at the pointer but doesn&#8217;t advance it.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_restart</i> resets the pointer to the begining of the string but
-    doesn&#8217;t change the contents. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_reset</i> is equivalent to <i>s_restart</i> followed by <i>s_terminate</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_append</i> and <i>s_nappend</i> copy characters into the string at the
-    pointer and advance the pointer. They also write a NUL at the
-    pointer without advancing the pointer beyond it. Both routines
-    stop copying on encountering a NUL. <i>S_memappend</i> is like <i>s_nappend</i>
-    but doesn&#8217;t stop at a NUL. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If you know the initial character array to be copied into a string,
-    you can allocate a string and copy in the bytes using <i>s_copy</i>.
-    This is the equivalent of a <i>s_new</i> followed by an <i>s_append</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_parse</i> copies the next white space terminated token from <i>s1</i> to
-    the end of <i>s2</i>. White space is defined as space, tab, and newline.
-    Both single and double quoted strings are treated as a single
-    token. The bounding quotes are not copied. There is no escape
-    mechanism. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_tolower</i> converts all ASCII characters in the string to lower
-    case.<br>
-    <p><font size=+1><b>Multithreading     </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_incref</i> is used by multithreaded programs to avoid having the
-    string memory released until the last user of the string performs
-    an <i>s_free</i>. <i>S_unique</i> returns a unique copy of the string: if the
-    reference count it 1 it returns the string, otherwise it returns
-    an <i>s_clone</i> of the string.<br>
-    <p><font size=+1><b>Bio interaction     </b></font><br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_read</i> reads the requested number of characters through a <i>Biobuf</i>
-    into a string. The string is grown as necessary. An eof or error
-    terminates the read. The number of bytes read is returned. The
-    string is null terminated. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_read_line</i> reads up to and including the next newline and returns
-    a pointer to the beginning of the bytes read. An eof or error
-    terminates the read. The string is null terminated. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_getline</i> reads up to the next newline, appends the input to <i>s</i>,
-    and returns a pointer to the beginning of the bytes read. Leading
-    spaces and tabs and the trailing newline are all discarded. <i>S_getline</i>
-    discards blank lines and lines beginning with <tt><font size=+1>#</font></tt>. <i>S_getline</i> ignores
-    newlines escaped by immediately-preceding
-    backslashes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>S_allocinstack</i> allocates an input stack with the single file <i>file</i>
-    open for reading. <i>S_freeinstack</i> frees an input stack. <i>S_rdinstack</i>
-    reads a line from an input stack. It follows the same rules as
-    <i>s_getline</i> except that when it encounters a line of the form <tt><font size=+1>#include</font></tt>
-    <i>newfile</i>, <i>s_getline</i> pushes <i>newfile</i> onto the input stack,
-    postponing further reading of the current file until <i>newfile</i> has
-    been read. The input stack has a maximum depth of 32 nested include
-    files.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libString<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/bio.html"><i>bio</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/stringsize.html b/man/man3/stringsize.html
deleted file mode 100644
index 1e8c4e9..0000000
--- a/man/man3/stringsize.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<head>
-<title>stringsize(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>STRINGSIZE(3)</b><td align=right><b>STRINGSIZE(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    stringsize, stringwidth, stringnwidth, runestringsize, runestringwidth,
-    runestringnwidth &ndash; graphical size of strings<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;draw.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point stringsize(Font *f, char *s)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;stringwidth(Font *f, char *s)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;stringnwidth(Font *f, char *s, int n)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point runestringsize(Font *f, Rune *s)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;runestringwidth(Font *f, Rune *s)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;runestringnwidth(Font *f, Rune *s, int n)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines compute the geometrical extent of character strings
-    when drawn on the display. The most straightforward, <tt><font size=+1>stringsize</font></tt>,
-    returns a <tt><font size=+1>Point</font></tt> representing the vector from upper left to lower
-    right of the NUL-terminated string <i>s</i> drawn in font <i>f</i>. <tt><font size=+1>Stringwidth</font></tt>
-    returns just the <i>x</i> component.
-    <tt><font size=+1>Stringnwidth</font></tt> returns the width of the first <i>n</i> characters of <i>s</i>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The routines beginning with <tt><font size=+1>rune</font></tt> are analogous, but accept an
-    array of runes rather than UTF-encoded bytes.<br>
-    
-</table>
-<p><font size=+1><b>FILES     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/lib/font/bit </font></tt>&nbsp;&nbsp;&nbsp;directory of fonts<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/addpt.html"><i>addpt</i>(3)</a>, <a href="../man3/cachechars.html"><i>cachechars</i>(3)</a>, <a href="../man3/subfont.html"><i>subfont</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man7/image.html"><i>image</i>(7)</a>,
-    <a href="../man7/font.html"><i>font</i>(7)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Because strings are loaded dynamically, these routines may generate
-    I/O to the server and produce calls to the graphics error function.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/subfont.html b/man/man3/subfont.html
deleted file mode 100644
index 16dc216..0000000
--- a/man/man3/subfont.html
+++ /dev/null
@@ -1,260 +0,0 @@
-<head>
-<title>subfont(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>SUBFONT(3)</b><td align=right><b>SUBFONT(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    allocsubfont, freesubfont, installsubfont, lookupsubfont, uninstallsubfont,
-    subfontname, readsubfont, readsubfonti, writesubfont, stringsubfont,
-    strsubfontwidth, mkfont &ndash; subfont manipulation<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;draw.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Subfont* allocsubfont(char *name, int n, int height, int ascent,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Fontchar *info, Image *i) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freesubfont(Subfont *f) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;installsubfont(char *name, Subfont *f) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Subfont* lookupsubfont(Subfont *f) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uninstallsubfont(Subfont *f) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Subfont* readsubfont(Display *d, char *name, int fd, int dolock)
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Subfont* readsubfonti(Display *d, char *name, int fd, Image *im,<br>
-     
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int dolock) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writesubfont(int fd, Subfont *f) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringsubfont(Image *dst, Point p, Image *src,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            Subfont *f, char *str) 
-            <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-            
-        </table>
-        
-    </table>
-    </font></tt>
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            
-            
-        </table>
-        
-    </table>
-    <tt><font size=+1>Point &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strsubfontwidth(Subfont *f, char *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Font* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mkfont(Subfont *f, Rune min)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Subfonts are the components of fonts that hold the character images.
-    A font comprises an array of subfonts; see <a href="../man3/cachechars.html"><i>cachechars</i>(3)</a>. A new
-    <tt><font size=+1>Subfont</font></tt> is allocated and initialized with <i>allocsubfont</i>. See <a href="../man3/cachechars.html"><i>cachechars</i>(3)</a>
-    for the meaning of <i>n</i>, <i>height</i>, <i>ascent</i>, and <i>info</i>, and the arrangement
-    of characters in image <i>i</i>. The <i>name</i> is
-    used to identify the subfont in the subfont cache; see the descriptions
-    <i>lookupsubfont</i> and <i>installsubfont</i> (<i>q.v.</i>). The appropriate fields
-    of the returned <tt><font size=+1>Subfont</font></tt> structure are set to the passed arguments,
-    and the image is registered as a subfont with the graphics device
-    <a href="../man3/draw.html"><i>draw</i>(3)</a>. <i>Allocsubfont</i> returns 0 on failure. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Freesubfont</i> frees a subfont and all its associated structure including
-    the associated image. Since <i>freesbufont</i> calls <i>free</i> on <tt><font size=+1>f&#8722;&gt;info</font></tt>,
-    if <tt><font size=+1>f&#8722;&gt;info</font></tt> was not allocated by <a href="../man3/malloc.html"><i>malloc</i>(3)</a> it should be zeroed before
-    calling <i>subffree</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A number of subfonts are kept in external files. The convention
-    for naming subfont files is:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>/usr/local/plan9/font/</font></tt><i>name</i><tt><font size=+1>/</font></tt><i>class</i><tt><font size=+1>.</font></tt><i>size</i><tt><font size=+1>.</font></tt><i>depth 
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </i>
-        
-    </table>
-    where <i>size</i> is approximately the height in pixels of the lower
-    case letters (without ascenders or descenders). If there is only
-    one version of the subfont, the <tt><font size=+1>.</font></tt><i>depth</i> extension is elided. <i>Class</i>
-    describes the range of runes encoded in the subfont: <tt><font size=+1>ascii</font></tt>, <tt><font size=+1>latin1</font></tt>,
-    <tt><font size=+1>greek</font></tt>, etc. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Subfonts are cached within the program, so a subfont shared between
-    fonts will be loaded only once. <i>Installsubfont</i> stores subfont
-    <i>f</i> under the given <i>name</i>, typically the file name from which it
-    was read. <i>Uninstallsubfont</i> removes the subfont from the cache.
-    Finally, <i>lookupsubfont</i> searches for a subfont with the given
-    <i>name</i> in the cache and returns it, or nil if no such subfont exists.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Subfontname</i> is used to locate subfonts given their names within
-    the fonts. The default version constructs a name given the <i>cfname</i>,
-    its name within the font, <i>fname</i>, the name of the font, and the
-    maximum depth suitable for this subfont. This interface allows
-    a partially specified name within a font to be resolved at
-    run-time to the name of a file holding a suitable subfont. Although
-    it is principally a routine internal to the library, <i>subfontname</i>
-    may be substituted by the application to provide a less file-oriented
-    subfont naming scheme. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The format of a subfont file is described in <a href="../man7/font.html"><i>font</i>(7)</a>. Briefly,
-    it contains a image with all the characters in it, followed by
-    a subfont header, followed by character information. <i>Readsubfont</i>
-    reads a subfont from the file descriptor <i>fd</i>. The <i>name</i> is used
-    to identify the font in the cache. The <i>dolock</i> argument specifies
-    whether
-    the routine should synchronize use of the <i>Display</i> with other processes;
-    for single-threaded applications it may always be zero. <i>Readsubfonti</i>
-    does the same for a subfont whose associated image is already
-    in memory; it is passed as the argument <i>im</i>. In other words, <i>readsubfonti</i>
-    reads only the header and character
-    information from the file descriptor. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Writesubfont</i> writes on <i>fd</i> the part of a subfont file that comes
-    after the image. It should be preceded by a call to <i>writeimage</i>
-    (see <a href="../man3/allocimage.html"><i>allocimage</i>(3)</a>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Stringsubfont</i> is analogous to <tt><font size=+1>string</font></tt> (see <a href="../man3/draw.html"><i>draw</i>(3)</a>) for subfonts.
-    Rather than use the underlying font caching primitives, it calls
-    <tt><font size=+1>draw</font></tt> for each character. It is intended for stand-alone environments
-    such as operating system kernels. <i>Strsubfontwidth</i> returns the
-    width of the string <i>s</i> in as it would appear if drawn with
-    <i>stringsubfont</i> in <tt><font size=+1>Subfont f</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Mkfont</i> takes as argument a <tt><font size=+1>Subfont</font></tt> <i>s</i> and returns a pointer to
-    a <tt><font size=+1>Font</font></tt> that maps the character images in <i>s</i> into the <tt><font size=+1>Runes</font></tt> <i>min</i>
-    to <i>min</i><tt><font size=+1>+</font></tt><i>s</i><tt><font size=+1>&#8722;&gt;n&#8722;1</font></tt>.<br>
-    
-</table>
-<p><font size=+1><b>FILES     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/font</font></tt>&nbsp;&nbsp;&nbsp;bitmap font file tree<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, <a href="../man3/allocimage.html"><i>allocimage</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man3/cachechars.html"><i>cachechars</i>(3)</a>, <a href="../man7/image.html"><i>image</i>(7)</a>,
-    <a href="../man7/font.html"><i>font</i>(7)</a><br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    All of the functions use the graphics error function (see <a href="../man3/graphics.html"><i>graphics</i>(3)</a>).<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/sysfatal.html b/man/man3/sysfatal.html
deleted file mode 100644
index 15ceb0c..0000000
--- a/man/man3/sysfatal.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<head>
-<title>sysfatal(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>SYSFATAL(3)</b><td align=right><b>SYSFATAL(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    sysfatal &ndash; system error messages<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void sysfatal(char *fmt, ...)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Sysfatal</i> prints to standard error the name of the running program,
-    a colon and a space, the message described by the <a href="../man3/print.html"><i>print</i>(3)</a> format
-    string <i>fmt</i> and subsequent arguments, and a newline. It then calls
-    <a href="../man3/exits.html"><i>exits</i>(3)</a> with the formatted message as argument. The program&#8217;s
-    name is the value of <tt><font size=+1>argv0</font></tt>, which will be set if the
-    program uses the <a href="../man3/arg.html"><i>arg</i>(3)</a> interface to process its arguments. If
-    <tt><font size=+1>argv0</font></tt> is null, it is ignored and the following colon and space
-    are suppressed.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/sysfatal.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/intro.html"><i>intro</i>(3)</a>, <a href="../man3/errstr.html"><i>errstr</i>(3)</a>, the <tt><font size=+1>%r</font></tt> format in <a href="../man3/print.html"><i>print</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/thread.html b/man/man3/thread.html
deleted file mode 100644
index b14d97e..0000000
--- a/man/man3/thread.html
+++ /dev/null
@@ -1,383 +0,0 @@
-<head>
-<title>thread(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>THREAD(3)</b><td align=right><b>THREAD(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    alt, chancreate, chanfree, chaninit, chanprint, chansetname, mainstacksize,
-    proccreate, procdata, recv, recvp, recvul, send, sendp, sendul,
-    nbrecv, nbrecvp, nbrecvul, nbsend, nbsendp, nbsendul, threadcreate,
-    threaddata, threadexec, threadexecl, threadexits, threadexitsall,
-    threadgetgrp, threadgetname, threadint,
-    threadintgrp, threadkill, threadkillgrp, threadmain, threadnotify,
-    threadid, threadpid, threadsetgrp, threadsetname, threadsetstate,
-    threadspawn, threadwaitchan, yield &ndash; thread and proc management<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;thread.h&gt;<br>
-    #define &nbsp;&nbsp;&nbsp;CHANEND  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>
-    #define &nbsp;&nbsp;&nbsp;CHANSND  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>
-    #define &nbsp;&nbsp;&nbsp;CHANRCV  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<br>
-    #define &nbsp;&nbsp;&nbsp;CHANNOP  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3<br>
-    #define &nbsp;&nbsp;&nbsp;CHANNOBLK &nbsp;&nbsp;&nbsp;4<br>
-    typedef struct Alt Alt;<br>
-    struct Alt {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Channel *c;<br>
-        void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*v;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;op;<br>
-        Channel **tag;<br>
-        int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entryno;<br>
-        char &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*name;<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadmain(int argc, char *argv[])<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainstacksize<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proccreate(void (*fn)(void*), void *arg, uint stacksize)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadcreate(void (*fn)(void*), void *arg, uint stacksize)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadexits(char *status)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadexitsall(char *status)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yield(void)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadid(void)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadgrp(void)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadsetgrp(int group)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadpid(int id)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadint(int id)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadintgrp(int group)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadkill(int id)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadkillgrp(int group)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadsetname(char *name)<br>
-    char* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadgetname(void)<br>
-    void** &nbsp;&nbsp;&nbsp;&nbsp;threaddata(void)<br>
-    void** &nbsp;&nbsp;&nbsp;&nbsp;procdata(void)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chaninit(Channel *c, int elsize, int nel)<br>
-    Channel* chancreate(int elsize, int nel)<br>
-    void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chanfree(Channel *c)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alt(Alt *alts)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recv(Channel *c, void *v)<br>
-    void* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recvp(Channel *c)<br>
-    ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recvul(Channel *c)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nbrecv(Channel *c, void *v)<br>
-    void* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nbrecvp(Channel *c)<br>
-    ulong &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nbrecvul(Channel *c)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(Channel *c, void *v)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendp(Channel *c, void *v)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendul(Channel *c, ulong v)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nbsend(Channel *c, void *v)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nbsendp(Channel *c, void *v)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nbsendul(Channel *c, ulong v)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chanprint(Channel *c, char *fmt, ...)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadspawn(int fd[3], char *file, char *args[])<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadexecl(Channel *cpid, int fd[3], char *file, ...)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadexec(Channel *cpid, int fd[3], char *file, char *args[])<br>
-    Channel* threadwaitchan(void)<br>
-    int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadnotify(int (*f)(void*, char*), int in)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The thread library provides parallel programming support similar
-    to that of the languages Alef and Newsqueak. Threads and procs
-    occupy a shared address space, communicating and synchronizing
-    through <i>channels</i> and shared variables. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A <i>proc</i> is a Plan 9 process that contains one or more cooperatively
-    scheduled <i>threads</i>. Programs using threads must replace <i>main</i> by
-    <i>threadmain</i>. The thread library provides a <i>main</i> function that sets
-    up a proc with a single thread executing <i>threadmain</i> on a stack
-    of size <i>mainstacksize</i> (default eight kilobytes). To set
-    <i>mainstacksize</i>, declare a global variable initialized to the desired
-    value (<i>e.g.</i>, <tt><font size=+1>int mainstacksize = 1024</font></tt>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Threadcreate</i> creates a new thread in the calling proc, returning
-    a unique integer identifying the thread; the thread executes <i>fn(arg)</i>
-    on a stack of size <i>stacksize</i>. Thread stacks are allocated in shared
-    memory, making it valid to pass pointers to stack variables between
-    threads and procs. <i>Proccreate</i> creates a new proc,
-    and inside that proc creates a single thread as <i>threadcreate</i> would,
-    returning the id of the created thread. Be aware that the calling
-    thread may continue execution before the newly created proc and
-    thread are scheduled. Because of this, <i>arg</i> should not point to
-    data on the stack of a function that could return before the
-    new process is scheduled. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Threadexits</i> terminates the calling thread. If the thread is the
-    last in its proc, <i>threadexits</i> also terminates the proc, using
-    <i>status</i> as the exit status. <i>Threadexitsall</i> terminates all procs
-    in the program, using <i>status</i> as the exit status. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    When the last thread in <i>threadmain</i>&#8217;s proc exits, the program will
-    appear to its parent to have exited. The remaining procs will
-    still run together, but as a background program. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The threads in a proc are coroutines, scheduled nonpreemptively
-    in a round-robin fashion. A thread must explicitly relinquish
-    control of the processor before another thread in the same proc
-    is run. Calls that do this are <i>yield</i>, <i>proccreate</i>, <i>threadexec</i>,
-    <i>threadexecl</i>, <i>threadexits</i>, <i>threadspawn</i>, <i>alt</i>, <i>send</i>, and <i>recv</i> (and
-    the
-    calls related to <i>send</i> and <i>recv</i>--see their descriptions further on).
-    Procs are scheduled by the operating system. Therefore, threads
-    in different procs can preempt one another in arbitrary ways and
-    should synchronize their actions using <tt><font size=+1>qlocks</font></tt> (see <a href="../man3/lock.html"><i>lock</i>(3)</a>) or
-    channel communication. System calls such as <a href="../man3/read.html"><i>read</i>(3)</a>
-    block the entire proc; all threads in a proc block until the system
-    call finishes. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    As mentioned above, each thread has a unique integer thread id.
-    Thread ids are not reused; they are unique across the life of
-    the program. <i>Threadid</i> returns the id for the current thread. Each
-    thread also has a thread group id. The initial thread has a group
-    id of zero. Each new thread inherits the group id of the
-    thread that created it. <i>Threadgrp</i> returns the group id for the
-    current thread; <i>threadsetgrp</i> sets it. <i>Threadpid</i> returns the pid
-    of the Plan 9 process containing the thread identified by <i>id</i>,
-    or &ndash;1 if no such thread is found. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Threadint</i> interrupts a thread that is blocked in a channel operation
-    or system call. <i>Threadintgrp</i> interrupts all threads with the given
-    group id. <i>Threadkill</i> marks a thread to die when it next relinquishes
-    the processor (via one of the calls listed above). If the thread
-    is blocked in a channel operation or system call, it is
-    also interrupted. <i>Threadkillgrp</i> kills all threads with the given
-    group id. Note that <i>threadkill</i> and <i>threadkillgrp</i> will not terminate
-    a thread that never relinquishes the processor. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Primarily for debugging, threads can have string names associated
-    with them. <i>Threadgetname</i> returns the current thread&#8217;s name; <i>threadsetname</i>
-    sets it. The pointer returned by <i>threadgetname</i> is only valid until
-    the next call to <i>threadsetname</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Also for debugging, threads have a string state associated with
-    them. <i>Threadsetstate</i> sets the state string. There is no <i>threadgetstate</i>;
-    since the thread scheduler resets the state to <tt><font size=+1>Running</font></tt> every time
-    it runs the thread, it is only useful for debuggers to inspect
-    the state. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Threaddata</i> returns a pointer to a per-thread pointer that may
-    be modified by threaded programs for per-thread storage. Similarly,
-    <i>procdata</i> returns a pointer to a per-proc pointer. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Threadexecl</i> and <i>threadexec</i> are threaded analogues of <i>exec</i> and
-    <i>execl</i> (see <a href="../man3/exec.html"><i>exec</i>(3)</a>); on success, they replace the calling thread
-    and invoke the external program, never returning. (Unlike on Plan
-    9, the calling thread need not be the only thread in its proc--the
-    other threads will continue executing.) On error, they return
-    &ndash;1. If <i>cpid</i> is not null, the pid of the invoked program will be
-    sent along <i>cpid</i> (using <i>sendul</i>) once the program has been started,
-    or &ndash;1 will be sent if an error occurs. <i>Threadexec</i> and <i>threadexecl</i>
-    will not access their arguments after sending a result along <i>cpid</i>.
-    Thus, programs that malloc the <i>argv</i> passed to <i>threadexec
-    </i>can safely free it once they have received the <i>cpid</i> response.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Threadexecl</i> and <i>threadexec</i> will duplicate (see <a href="../man3/dup.html"><i>dup</i>(3)</a>) the three
-    file descriptors in <i>fd</i> onto standard input, output, and error
-    for the external program and then close them in the calling thread.
-    Beware of code that sets<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>fd[0] = 0;<br>
-        fd[1] = 1;<br>
-        fd[2] = 2;<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    to use the current standard files. The correct code is<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>fd[0] = dup(0, &#8722;1);<br>
-        fd[1] = dup(1, &#8722;1);<br>
-        fd[2] = dup(2, &#8722;1);<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    <i>Threadspawn</i> is like <i>threadexec</i> but does not replace the current
-    thread. It returns the pid of the invoked program on success,
-    or &ndash;1 on error. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Threadwaitchan</i> returns a channel of pointers to <tt><font size=+1>Waitmsg</font></tt> structures
-    (see <a href="../man3/wait.html"><i>wait</i>(3)</a>). When an exec&#8217;ed process exits, a pointer to a <tt><font size=+1>Waitmsg</font></tt>
-    is sent to this channel. These <tt><font size=+1>Waitmsg</font></tt> structures have been allocated
-    with <a href="../man3/malloc.html"><i>malloc</i>(3)</a> and should be freed after use. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    A <tt><font size=+1>Channel</font></tt> is a buffered or unbuffered queue for fixed-size messages.
-    Procs and threads <i>send</i> messages into the channel and <i>recv</i> messages
-    from the channel. If the channel is unbuffered, a <i>send</i> operation
-    blocks until the corresponding <i>recv</i> operation occurs and <i>vice
-    versa</i>. <i>Chaninit</i> initializes a <tt><font size=+1>Channel</font></tt> for
-    messages of size <i>elsize</i> and with a buffer holding <i>nel</i> messages.
-    If <i>nel</i> is zero, the channel is unbuffered. <i>Chancreate</i> allocates
-    a new channel and initializes it. <i>Chanfree</i> frees a channel that
-    is no longer used. <i>Chanfree</i> can be called by either sender or
-    receiver after the last item has been sent or received. Freeing
-    the
-    channel will be delayed if there is a thread blocked on it until
-    that thread unblocks (but <i>chanfree</i> returns immediately). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>name</font></tt> element in the <tt><font size=+1>Channel</font></tt> structure is a description intended
-    for use in debugging. <i>Chansetname</i> sets the name. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Send</i> sends the element pointed at by <i>v</i> to the channel <i>c</i>. If <i>v</i>
-    is null, zeros are sent. <i>Recv</i> receives an element from <i>c</i> and stores
-    it in <i>v</i>. If <i>v</i> is null, the received value is discarded. <i>Send</i> and
-    <i>recv</i> return 1 on success, &ndash;1 if interrupted. <i>Nbsend</i> and <i>nbrecv</i>
-    behave similarly, but return 0 rather than blocking. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Sendp</i>, <i>nbsendp</i>, <i>sendul</i>, and <i>nbsendul</i> send a pointer or an unsigned
-    long; the channel must have been initialized with the appropriate
-    <i>elsize</i>. <i>Recvp</i>, <i>nbrecvp</i>, <i>recvul</i>, and <i>nbrecvul</i> receive a pointer
-    or an unsigned long; they return zero when a zero is received,
-    when interrupted, or (for <i>nbrecvp</i> and <i>nbrecvul</i>) when the
-    operation would have blocked. To distinguish between these three
-    cases, use <i>recv</i> or <i>nbrecv</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Alt</i> can be used to recv from or send to one of a number of channels,
-    as directed by an array of <tt><font size=+1>Alt</font></tt> structures, each of which describes
-    a potential send or receive operation. In an <tt><font size=+1>Alt</font></tt> structure, <tt><font size=+1>c</font></tt>
-    is the channel; <tt><font size=+1>v</font></tt> the value pointer (which may be null); and <tt><font size=+1>op</font></tt>
-    the operation: <tt><font size=+1>CHANSND</font></tt> for a send operation,
-    <tt><font size=+1>CHANRECV</font></tt> for a recv operation; <tt><font size=+1>CHANNOP</font></tt> for no operation (useful
-    when <i>alt</i> is called with a varying set of operations). The array
-    of <tt><font size=+1>Alt</font></tt> structures is terminated by an entry with <i>op</i> <tt><font size=+1>CHANEND</font></tt> or
-    <tt><font size=+1>CHANNOBLK</font></tt>. If at least one <tt><font size=+1>Alt</font></tt> structure can proceed, one of them
-    is chosen at random to be executed. <i>Alt</i> returns the
-    index of the chosen structure. If no operations can proceed and
-    the list is terminated with <tt><font size=+1>CHANNOBLK</font></tt>, <i>alt</i> returns the index of
-    the terminating <tt><font size=+1>CHANNOBLK</font></tt> structure. Otherwise, <i>alt</i> blocks until
-    one of the operations can proceed, eventually returning the index
-    of the structure executes. <i>Alt</i> returns &ndash;1 when
-    interrupted. The <tt><font size=+1>tag</font></tt> and <tt><font size=+1>entryno</font></tt> fields in the <tt><font size=+1>Alt</font></tt> structure are
-    used internally by <i>alt</i> and need not be initialized. They are not
-    used between <i>alt</i> calls. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Chanprint</i> formats its arguments in the manner of <a href="../man3/print.html"><i>print</i>(3)</a> and
-    sends the result to the channel <i>c.</i> The string delivered by <i>chanprint</i>
-    is allocated with <a href="../man3/malloc.html"><i>malloc</i>(3)</a> and should be freed upon receipt.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Thread library functions do not return on failure; if errors occur,
-    the entire program is aborted. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Threaded programs should use <i>threadnotify</i> in place of <i>atnotify</i>
-    (see <a href="../man3/notify.html"><i>notify</i>(3)</a>). 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    It is safe to use <a href="../man3/sysfatal.html"><i>sysfatal</i>(3)</a> in threaded programs. <i>Sysfatal</i> will
-    print the error string and call <i>threadexitsall</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    It is not safe to call <i>rfork</i> in a threaded program, except to
-    call <tt><font size=+1>rfork(RFNOTEG)</font></tt> from the main proc before any other procs
-    have been created. To create new processes, use <i>proccreate</i>.<br>
-    
-</table>
-<p><font size=+1><b>FILES     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/acid/thread</font></tt> contains useful <a href="../man1/acid.html"><i>acid</i>(1)</a> functions
-    for debugging threaded programs. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>/usr/local/plan9/src/libthread/test</font></tt> contains some example programs.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libthread<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/intro.html"><i>intro</i>(3)</a>, <a href="../man3/ioproc.html"><i>ioproc</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To avoid name conflicts, <i>alt</i>, <i>nbrecv</i>, <i>nbrecvp</i>, <i>nbrecvul</i>, <i>nbsend</i>,
-    <i>nbsendp</i>, <i>nbsendul</i>, <i>recv</i>, <i>recvp</i>, <i>recvul</i>, <i>send</i>, <i>sendp</i>, and <i>sendul</i>
-    are defined as macros that expand to <i>chanalt</i>, <i>channbrecv</i>, and
-    so on. <i>Yield</i> is defined as a macro that expands to <i>threadyield</i>.
-    See <a href="../man3/intro.html"><i>intro</i>(3)</a>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The implementation of <i>threadnotify</i> may not be correct.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/time.html b/man/man3/time.html
deleted file mode 100644
index de0de46..0000000
--- a/man/man3/time.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<head>
-<title>time(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>TIME(3)</b><td align=right><b>TIME(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    time, nsec &ndash; time in seconds and nanoseconds since epoch<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long time(long *tp)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>vlong nsec(void)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Both <i>time</i> and <i>nsec</i> return the time since the epoch 00:00:00 GMT,
-    Jan. 1, 1970. The return value of the former is in seconds and
-    the latter in nanoseconds. For <i>time</i>, if <i>tp</i> is not zero then <tt><font size=+1>*</font></tt><i>tp</i>
-    is also set to the answer.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/time.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These functions set <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To avoid name conflicts with the underlying system, <i>time</i> and <i>nsec</i>
-    are preprocessor macros defined as <i>p9time</i> and <i>p9nsec</i>; see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/udpread.html b/man/man3/udpread.html
deleted file mode 100644
index e8f0d37..0000000
--- a/man/man3/udpread.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<head>
-<title>udpread(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>UDPREAD(3)</b><td align=right><b>UDPREAD(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    udpread, udpwrite &ndash; read and write UDP packets<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>#include &lt;ip.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>typedef struct Udphdr Udphdr;<br>
-    </font></tt>struct Udphdr<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        uchar &nbsp;&nbsp;&nbsp;raddr[IPaddrlen];/* remote address and port */<br>
-        uchar &nbsp;&nbsp;&nbsp;laddr[IPaddrlen];/* local address and port */<br>
-        uchar &nbsp;&nbsp;&nbsp;rport[2];<br>
-        uchar &nbsp;&nbsp;&nbsp;lport[2];<br>
-        
-    </table>
-    };<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>long &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;udpread(int fd, Udphdr *hdr, void *data, long n)<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>long udpwrite(int fd, Udphdr *hdr, void *data, long n)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Udpread</i> and <i>udpwrite</i> read and write UDP packets from the UDP network
-    connection established on file descriptor <i>fd</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Udpread</i> reads at most <i>n</i> bytes of packet body into <i>data ,</i> stores
-    the header in <i>hdr</i>, and returns the number of bytes stored in <i>data</i>.
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Udpwrite</i> writes the <i>n</i> bytes stored in <i>data</i> in a UDP packet with
-    header <i>hdr</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Note that the <tt><font size=+1>Udphdr</font></tt> frames the addresses as local and remote
-    instead of source and destination. Thus the <i>hdr</i> filled in for
-    a packet read by <i>udpread</i> can be used unchanged in <i>udpwrite</i> to
-    send a response back to the sender of the original packet.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/udp.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/ip.html"><i>ip</i>(3)</a><br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/wait.html b/man/man3/wait.html
deleted file mode 100644
index 84322bc..0000000
--- a/man/man3/wait.html
+++ /dev/null
@@ -1,170 +0,0 @@
-<head>
-<title>wait(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>WAIT(3)</b><td align=right><b>WAIT(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    await, awaitnohang, awaitfor, wait, waitnohang, waitfor, waitpid
-    &ndash; wait for a process to exit<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Waitmsg* &nbsp;&nbsp;&nbsp;wait(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Waitmsg* &nbsp;&nbsp;&nbsp;waitnohang(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Waitmsg* &nbsp;&nbsp;&nbsp;waitfor(int pid) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;waitpid(void) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;await(char *s, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;awaitnohang(char *s, int n) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;awaitfor(int pid, char *s, int n)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <i>Wait</i> causes a process to wait for any child process (see <a href="../man2/fork.html"><i>fork</i>(2)</a>
-    and <a href="../man3/rfork.html"><i>rfork</i>(3)</a>) to exit. It returns a <tt><font size=+1>Waitmsg</font></tt> holding information
-    about the exited child. A <tt><font size=+1>Waitmsg</font></tt> has this structure:<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        <tt><font size=+1>typedef<br>
-        struct Waitmsg<br>
-        {<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            int pid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* of loved one */<br>
-            ulong time[3]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* of loved one &amp; descendants */<br>
-            char *msg;<br>
-            
-        </table>
-        } Waitmsg;<br>
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-        </font></tt>
-        
-    </table>
-    <tt><font size=+1>Pid</font></tt> is the child&#8217;s process id. The <tt><font size=+1>time</font></tt> array contains the time
-    the child and its descendants spent in user code, the time spent
-    in system calls, and the child&#8217;s elapsed real time, all in units
-    of milliseconds. <tt><font size=+1>Msg</font></tt> contains the message that the child specified
-    in <a href="../man3/exits.html"><i>exits</i>(3)</a>. For a normal exit, <tt><font size=+1>msg[0]</font></tt> is zero, otherwise <tt><font size=+1>msg
-    </font></tt>is the exit string prefixed by the process name, a blank, the
-    process id, and a colon. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    If there are no more children to wait for, <i>wait</i> returns immediately,
-    with return value nil. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The <tt><font size=+1>Waitmsg</font></tt> structure is allocated by <a href="../man3/malloc.html"><i>malloc</i>(3)</a> and should be
-    freed after use. For programs that only need the pid of the exiting
-    program, <i>waitpid</i> returns just the pid and discards the rest of
-    the information. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Waitnohang</i> is like <i>wait</i> but does not block if there are no more
-    children to wait for. Instead it returns immediately and sets
-    <i>errstr</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Waitfor</i> is like <i>wait</i> but waits for a particular <i>pid</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The underlying calls are <i>await</i>, <i>awaitnohang</i>, and <i>awaitfor</i>, which
-    fill in the <i>n</i>-byte buffer <i>s</i> with a textual representation of the
-    pid, times, and exit string. There is no terminal NUL. The return
-    value is the length, in bytes, of the data. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The filled-in buffer may be parsed (after appending a NUL) using
-    <i>tokenize</i> (see <a href="../man3/getfields.html"><i>getfields</i>(3)</a>); the resulting fields are, in order,
-    pid, the three times, and the exit string, which will be <tt><font size=+1>''</font></tt> for
-    normal exit. If the representation is longer than <i>n</i> bytes, it
-    is truncated but, if possible, properly formatted. The information
-    that
-    does not fit in the buffer is discarded, so a subsequent call
-    to <i>await</i> will return the information about the next exiting child,
-    not the remainder of the truncated message. In other words, each
-    call to <i>await</i> returns the information about one child, blocking
-    if necessary if no child has exited. If the calling process has
-    no
-    living children, <i>await</i> returns <tt><font size=+1>&#8722;1</font></tt>.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/lib9/wait.c 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>/usr/local/plan9/src/lib9/await.c<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/rfork.html"><i>rfork</i>(3)</a>, <a href="../man3/exits.html"><i>exits</i>(3)</a>,<br>
-    
-</table>
-<p><font size=+1><b>DIAGNOSTICS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines set <i>errstr</i>.<br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To avoid name conflicts with the underlying system, <i>wait</i>, <i>waitpid</i>,
-    and <i>waitfor</i> are preprocessor macros defined as <i>p9wait</i>, <i>p9waitpid</i>,
-    and <i>p9waitfor</i>; see <a href="../man3/intro.html"><i>intro</i>(3)</a>.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/wctl.html b/man/man3/wctl.html
deleted file mode 100644
index 071217e..0000000
--- a/man/man3/wctl.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<head>
-<title>wctl(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>WCTL(3)</b><td align=right><b>WCTL(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    drawresizewindow, drawsetlabel, drawtopwindow &ndash; window management<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;draw.h&gt; 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void drawresizewindow(Rectangle r) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;drawsetlabel(Display *d, char *name) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void drawtopwindow(void)<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    These routines interact with a window manager to set the properties
-    of the window running the current program. They substitute for
-    interacting directly with the Plan 9 <i>rio</i>&#8217;s <tt><font size=+1>/dev/wctl</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Drawresizewindow</i> requests that the program&#8217;s window be resized
-    to have the width and height of the rectangle <i>r</i>. Only the width
-    and height are important; the offset is ignored. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Drawsetlabel</i> requests that the program&#8217;s window title be set to
-    <i>name</i>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <i>Drawtopwindow</i> requests that the program&#8217;s window be moved above
-    all other windows and given the input focus.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw/x11&#8722;init.c<br>
-    /usr/local/plan9/src/libdraw/x11&#8722;wsys.c<br>
-    </font></tt>
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
diff --git a/man/man3/window.html b/man/man3/window.html
deleted file mode 100644
index 83355bd..0000000
--- a/man/man3/window.html
+++ /dev/null
@@ -1,241 +0,0 @@
-<head>
-<title>window(3) - Plan 9 from User Space</title>
-<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
-</head>
-<body bgcolor=#ffffff>
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=10><td>
-<tr><td width=20><td>
-<tr><td width=20><td><b>WINDOW(3)</b><td align=right><b>WINDOW(3)</b>
-<tr><td width=20><td colspan=2>
-    <br>
-<p><font size=+1><b>NAME     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Screen, allocscreen, publicscreen, freescreen, allocwindow, bottomwindow,
-    bottomnwindows, topwindow, topnwindows, originwindow &ndash; window management<br>
-    
-</table>
-<p><font size=+1><b>SYNOPSIS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>#include &lt;u.h&gt;<br>
-    #include &lt;libc.h&gt;<br>
-    #include &lt;draw.h&gt;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>typedef<br>
-    struct Screen<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        Display &nbsp;&nbsp;&nbsp;&nbsp;*display; /* display holding data */<br>
-        int  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* id of system&#8722;held Screen */<br>
-        Image &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*image; &nbsp;&nbsp;&nbsp;&nbsp;/* unused; for reference only */<br>
-        Image &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*fill; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* color to paint behind windows */<br>
-        
-    </table>
-    } Screen;<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Screen* allocscreen(Image *image, Image *fill, int public) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Screen* publicscreen(Display *d, int id, ulong chan) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freescreen(Screen *s) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>Image* &nbsp;&nbsp;&nbsp;allocwindow(Screen *s, Rectangle r, int ref, int val) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bottomwindow(Image *w) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bottomnwindows(Image **wp, int nw) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;topwindow(Image *w) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>void &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;topnwindows(Image **wp, int nw) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;originwindow(Image *w, Point log, Point scr) 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    </font></tt>
-    <tt><font size=+1>enum<br>
-    {<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            /* refresh methods */<br>
-            Refbackup= 0,<br>
-            Refnone= 1,<br>
-            Refmesg= 2<br>
-            
-        </table>
-        
-    </table>
-    };<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>DESCRIPTION     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    Windows are represented as <tt><font size=+1>Images</font></tt> and may be treated as regular
-    images for all drawing operations. The routines discussed here
-    permit the creation, deletion, and shuffling of windows, facilities
-    that do not apply to regular images. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    To create windows, it is first necessary to allocate a <tt><font size=+1>Screen</font></tt>
-    data structure to gather them together. A <tt><font size=+1>Screen</font></tt> turns an arbitrary
-    image into something that may have windows upon it. It is created
-    by <tt><font size=+1>allocscreen</font></tt>, which takes an <i>image</i> upon which to place the windows
-    (typically <tt><font size=+1>display&#8722;&gt;image</font></tt>), a <i>fill</i> image
-    to paint the background behind all the windows on the image, and
-    a flag specifying whether the result should be publicly visible.
-    If it is public, an arbitrary other program connected to the same
-    display may acquire a pointer to the same screen by calling <tt><font size=+1>publicscreen</font></tt>
-    with the <tt><font size=+1>Display</font></tt> pointer and the <i>id</i> of the
-    published <tt><font size=+1>Screen</font></tt>, as well as the expected channel descriptor,
-    as a safety check. It will usually require some out-of-band coordination
-    for programs to share a screen profitably. <tt><font size=+1>Freescreen</font></tt> releases
-    a <tt><font size=+1>Screen</font></tt>, although it may not actually disappear from view until
-    all the windows upon it have also been
-    deallocated. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Unlike <tt><font size=+1>allocwindow</font></tt>, <tt><font size=+1>allocscreen</font></tt> does <i>not</i> initialize the appearance
-    of the <tt><font size=+1>Screen</font></tt>. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Windows are created by <tt><font size=+1>allocwindow</font></tt>, which takes a pointer to the
-    <tt><font size=+1>Screen</font></tt> upon which to create the window, a rectangle <i>r</i> defining
-    its geometry, an integer pixel value <i>val</i> to color the window initially,
-    and a refresh method <tt><font size=+1>ref</font></tt>. The refresh methods are <tt><font size=+1>Refbackup</font></tt>, which
-    provides backing store and is the
-    method used by <a href="../man1/rio.html"><i>rio</i>(1)</a> for its clients; <tt><font size=+1>Refnone</font></tt>, which provides
-    no refresh and is designed for temporary uses such as sweeping
-    a display rectangle, for windows that are completely covered by
-    other windows, and for windows that are already protected by backing
-    store; and <tt><font size=+1>Refmesg</font></tt>, which causes messages to be
-    delivered to the owner of the window when it needs to be repainted.
-    <tt><font size=+1>Refmesg</font></tt> is not fully implemented. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    The result of <tt><font size=+1>allocwindow</font></tt> is an <tt><font size=+1>Image</font></tt> pointer that may be treated
-    like any other image. In particular, it is freed by calling <tt><font size=+1>freeimage</font></tt>
-    (see <a href="../man3/allocimage.html"><i>allocimage</i>(3)</a>). The following functions, however, apply only
-    to windows, not regular images. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <tt><font size=+1>Bottomwindow</font></tt> pushes window <i>w</i> to the bottom of the stack of windows
-    on its <tt><font size=+1>Screen</font></tt>, perhaps obscuring it. <tt><font size=+1>Topwindow</font></tt> pulls window <i>w</i>
-    to the top, making it fully visible on its <tt><font size=+1>Screen</font></tt>. (This <tt><font size=+1>Screen</font></tt>
-    may itself be within a window that is not fully visible; <tt><font size=+1>topwindow</font></tt>
-    will not affect the stacking of this parent
-    window.) <tt><font size=+1>Bottomnwindows</font></tt> and <tt><font size=+1>Topnwindows</font></tt> are analogous, but push
-    or pull a group of <i>nw</i> windows listed in the array <i>wp</i>. The order
-    within <i>wp</i> is unaffected. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    Each window is created as an <tt><font size=+1>Image</font></tt> whose <tt><font size=+1>Rectangle r</font></tt> corresponds
-    to the rectangle given to <tt><font size=+1>allocwindow</font></tt> when it was created. Thus,
-    a newly created window <i>w</i> resides on its <tt><font size=+1>Screen&#8722;&gt;image</font></tt> at <i>w</i><tt><font size=+1>&#8722;&gt;r</font></tt> and
-    has internal coordinates <i>w</i><tt><font size=+1>&#8722;&gt;r</font></tt><i>.</i> Both these may be changed by a call
-    to <tt><font size=+1>originwindow</font></tt>. The two
-    <tt><font size=+1>Point</font></tt> arguments to <tt><font size=+1>originwindow</font></tt> define the upper left corner of
-    the logical coordinate system (<i>log</i>) and screen position (<i>scr</i>).
-    Their usage is shown in the Examples section. 
-    <table border=0 cellpadding=0 cellspacing=0><tr height=5><td></table>
-    
-    <a href="../man1/Rio.html"><i>Rio</i>(1)</a> creates its client windows with backing store, <tt><font size=+1>Refbackup</font></tt>.
-    The graphics initialization routine, <tt><font size=+1>initdraw</font></tt> (see <a href="../man3/graphics.html"><i>graphics</i>(3)</a>),
-    builds a <tt><font size=+1>Screen</font></tt> upon this, and then allocates upon that another
-    window indented to protect the border. That window is created
-    <tt><font size=+1>Refnone</font></tt>, since the backing store created by <tt><font size=+1>rio
-    </font></tt>protects its contents. That window is the one known in the library
-    by the global name <tt><font size=+1>screen</font></tt> (a historic but confusing choice).<br>
-    
-</table>
-<p><font size=+1><b>EXAMPLES     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    To move a window to the upper left corner of the display,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <tt><font size=+1>originwindow(w, w&#8722;&gt;r.min, Pt(0, 0));<br>
-            </font></tt>
-        </table>
-        
-    </table>
-    To leave a window where it is on the screen but change its internal
-    coordinate system so (0, 0) is the upper left corner of the window,<br>
-    
-    <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-        
-        <table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-            <tt><font size=+1>originwindow(w, Pt(0, 0), w&#8722;&gt;r.min);<br>
-            </font></tt>
-        </table>
-        
-    </table>
-    After this is done, <tt><font size=+1>w&#8722;&gt;r</font></tt> is translated to the origin and there
-    will be no way to discover the actual screen position of the window
-    unless it is recorded separately.<br>
-    
-</table>
-<p><font size=+1><b>SOURCE     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <tt><font size=+1>/usr/local/plan9/src/libdraw<br>
-    </font></tt>
-</table>
-<p><font size=+1><b>SEE ALSO    </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    <a href="../man3/graphics.html"><i>graphics</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a>, <a href="../man3/cachechars.html"><i>cachechars</i>(3)</a>, <a href="../man3/draw.html"><i>draw</i>(3)</a><br>
-    
-</table>
-<p><font size=+1><b>BUGS     </b></font><br>
-
-<table border=0 cellpadding=0 cellspacing=0><tr height=2><td><tr><td width=20><td>
-
-    The refresh method <tt><font size=+1>Refmesg</font></tt> should be finished.<br>
-    
-</table>
-
-<td width=20>
-<tr height=20><td>
-</table>
-<!-- TRAILER -->
-<table border=0 cellpadding=0 cellspacing=0 width=100%>
-<tr height=15><td width=10><td><td width=10>
-<tr><td><td>
-<center>
-<a href="../../"><img src="../../dist/spaceglenda100.png" alt="Space Glenda" border=1></a>
-</center>
-</table>
-<!-- TRAILER -->
-</body></html>
