about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--libnetpbm_dir.html5
-rw-r--r--libpbm.html63
-rw-r--r--libpgm.html59
-rw-r--r--libpm.html52
-rw-r--r--libpnm.html98
-rw-r--r--libppm.html95
-rw-r--r--pam.html13
-rw-r--r--pbmtoppa.html17
-rw-r--r--pnmgamma.html2
9 files changed, 203 insertions, 201 deletions
diff --git a/libnetpbm_dir.html b/libnetpbm_dir.html
index 46f952d9..17bd5dae 100644
--- a/libnetpbm_dir.html
+++ b/libnetpbm_dir.html
@@ -42,6 +42,7 @@ services.
 
 <h2>Miscellaneous</h2>
 <ul>
+  <li><a href="libpm.html#initialization">pm_proginit()</a>
   <li><a href="libpm.html#initialization">pm_init()</a>
   <li><a href="libsystem.html">pm_system()</a>
   <li><a href="libtmpfile.html">pm_tmpfile()</a>
@@ -101,11 +102,11 @@ services.
   <li><a href="libpbm.html">pbm_freerow()</a>
   <li><a href="libpbm.html">pbm_readpbminit()</a>
   <li><a href="libpbm.html">pbm_readpbmrow()</a>
-  <li><a href="libpbm.html">pbm_readpbmrowpacked()</a>
+  <li><a href="libpbm.html">pbm_readpbmrow_packed()</a>
   <li><a href="libpbm.html">pbm_readpbm()</a>
   <li><a href="libpbm.html">pbm_writepbminit()</a>
   <li><a href="libpbm.html">pbm_writepbmrow()</a>
-  <li><a href="libpbm.html">pbm_writepbmrowpacked()</a>
+  <li><a href="libpbm.html">pbm_writepbmrow_packed()</a>
   <li><a href="libpbm.html">pbm_writepbm()</a>
   <li><a href="libpbm.html">pbm_nextimage()</a>
   <li><a href="libpbm.html">pbm_check()</a>
diff --git a/libpbm.html b/libpbm.html
index 23005f31..9a7019fd 100644
--- a/libpbm.html
+++ b/libpbm.html
@@ -7,15 +7,13 @@
 <BODY>
 
 <H1>pbm Functions</H1>
-Updated: 22 July 2004
+Updated: 8 September 2007
 <BR>
 <A HREF="#index">Table Of Contents</A>
-<A NAME="lbAB">&nbsp;</A>
 <H2>NAME</H2>
 libpbm - libnetpbm functions to read and write PBM image files
 
-<A NAME="lbAC">&nbsp;</A>
-<H2>SYNOPSIS</H2>
+<H2 id="synopsis">SYNOPSIS</H2>
 
 <B>#include &lt;pbm.h&gt;</B>
 
@@ -113,13 +111,11 @@ int </B><I>forceplain</I><B>);</B>
 <B>enum pm_check_code * const </B><I>retval</I><B>);</B>
 
 
-<A NAME="lbAK">&nbsp;</A>
-<H2>DESCRIPTION - PBM-SPECIFIC ROUTINES</H2>
+<H2 id="description">DESCRIPTION</H2>
 
 <p>These library functions are part of <a href="index.html">Netpbm</a>.
 
-<A NAME="lbAL">&nbsp;</A>
-<H3>TYPES AND CONSTANTS</H3>
+<H3 id="types">TYPES AND CONSTANTS</H3>
 
 <B>typedef ... bit;</B>
 
@@ -143,13 +139,13 @@ or <B>PBM_BLACK</B>.
 
 <P>These are for distinguishing different file formats and types.
 
-<A NAME="lbAM">&nbsp;</A>
-<H3>INITIALIZATION</H3>
+<H3 id="initialization">INITIALIZATION</H3>
 
-<p><b>pbm_init()</b> is identical to <b>pm_init()</b>.
+<P><b>pbm_init()</b> is identical to <b>pm_proginit</b>.
 
-<A NAME="lbAN">&nbsp;</A>
-<H3>MEMORY MANAGEMENT</H3>
+<p><b>pbm_init()</b> is obsolete.  Use <b>pm_proginit()</b> instead.
+
+<H3 id="memorymanagement">MEMORY MANAGEMENT</H3>
 
 <B>pbm_allocarray()</B> allocates an array of bits.
 <B>pbm_allocrow()</B> allocates a row of the given number of bits.
@@ -158,8 +154,7 @@ or <B>PBM_BLACK</B>.
 <B>pbm_freerow()</B> frees a row of bits.
 
 
-<A NAME="lbAO">&nbsp;</A>
-<H3>READING PBM IMAGE FILES</H3>
+<H3 id="reading">READING PBM IMAGE FILES</H3>
 
 <P><B>pbm_readpbminit()</B> reads the header from a PBM image in a PBM
 file, filling in the rows, cols and format variables.
@@ -194,8 +189,7 @@ valid, including if it contains a number too large to be processed using
 the system's normal data structures (to wit, a number that won't fit in
 a C 'int').
 
-<A NAME="lbAP">&nbsp;</A>
-<H3>WRITING PBM IMAGE FILES</H3>
+<H3 id="writing">WRITING PBM IMAGE FILES</H3>
 
 <B>pbm_writepbminit()</B> writes the header for a PBM image in a PBM
 file.  <I>forceplain</I> is a boolean value specifying that a plain
@@ -211,8 +205,7 @@ The format of <I>packed_bits </I> is the same as that returned by
 image to a PBM file.  This function combines <B>pbm_writepbminit()</B>
 and <B>pbm_writepbmrow()</B>.
 
-<A NAME="lbAQ">&nbsp;</A>
-<H3>MISCELLANEOUS</H3>
+<H3 id="miscellaneous">MISCELLANEOUS</H3>
 
 <P><B>pbm_nextimage()</B> positions a PBM input file to the next image
 in it (so that a subsequent <B>pbm_readpbminit()</B> reads its
@@ -274,36 +267,34 @@ Otherwise, the effect of <B>pbm_check()</B> is unpredictable.  This
 argument exists for future backward compatible expansion of the
 function of <B>pbm_check()</B>.
 
-<A NAME="lbAR">&nbsp;</A>
-<H2>SEE ALSO</H2>
+<H2 id="seealso">SEE ALSO</H2>
 
 <B><A HREF="libpgm.html">libpgm</A></B>,
 <B><A HREF="libppm.html">libppm</A></B>,
 <B><A HREF="libpnm.html">libpnm</A></B>,
 <B><A HREF="pbm.html">pbm</A></B>
 
-<A NAME="lbAS">&nbsp;</A>
-<H2>AUTHOR</H2>
+<H2 id="author">AUTHOR</H2>
 
 Copyright (C) 1989, 1991 by Tony Hansen and Jef Poskanzer.
 
 
 <HR>
-<A NAME="index">&nbsp;</A>
-<H2>Table Of Contents</H2>
+<H2 id="index">Table Of Contents</H2>
 
 <UL>
-<LI><A HREF="#lbAK">DESCRIPTION - PBM-SPECIFIC ROUTINES</A>
-<UL>
-<LI><A HREF="#lbAL">TYPES AND CONSTANTS</A>
-<LI><A HREF="#lbAM">INITIALIZATION</A>
-<LI><A HREF="#lbAN">MEMORY MANAGEMENT</A>
-<LI><A HREF="#lbAO">READING PBM IMAGE FILES</A>
-<LI><A HREF="#lbAP">WRITING PBM IMAGE FILES</A>
-<LI><A HREF="#lbAQ">MISCELLANEOUS</A>
-</UL>
-<LI><A HREF="#lbAR">SEE ALSO</A>
-<LI><A HREF="#lbAS">AUTHOR</A>
+<LI><A HREF="#synopsis">SYNOPSIS</A>
+<LI><A HREF="#description">DESCRIPTION</A>
+  <UL>
+  <LI><A HREF="#types">TYPES AND CONSTANTS</A>
+  <LI><A HREF="#initialization">INITIALIZATION</A>
+  <LI><A HREF="#memorymanagement">MEMORY MANAGEMENT</A>
+  <LI><A HREF="#reading">READING PBM IMAGE FILES</A>
+  <LI><A HREF="#writing">WRITING PBM IMAGE FILES</A>
+  <LI><A HREF="#miscellaneous">MISCELLANEOUS</A>
+  </UL>
+<LI><A HREF="#seealso">SEE ALSO</A>
+<LI><A HREF="#author">AUTHOR</A>
 </UL>
 </BODY>
 </HTML>
diff --git a/libpgm.html b/libpgm.html
index 9c89da8b..564df519 100644
--- a/libpgm.html
+++ b/libpgm.html
@@ -6,15 +6,13 @@
 </HEAD>
 <BODY>
 <H1>pgm Functions</H1>
-Updated: 22 July 2004
+Updated: 8 September 2007
 <BR>
 <A HREF="#index">Table Of Contents</A>
-<A NAME="lbAB">&nbsp;</A>
 <H2>NAME</H2>
 libpgm - libnetpbm functions to read and write PGM image files
 
-<A NAME="lbAC">&nbsp;</A>
-<H2>SYNOPSIS</H2>
+<H2 id="synopsis">SYNOPSIS</H2>
 
 <B>#include &lt;pgm.h&gt;</B>
 
@@ -141,13 +139,11 @@ libpgm - libnetpbm functions to read and write PGM image files
 <B>PGM_FORMAT_TYPE(</B><I>format</I><B>)</B>
 <B>...</B>
 
-<A NAME="lbAD">&nbsp;</A>
-<H2>DESCRIPTION</H2>
+<H2 id="description">DESCRIPTION</H2>
 
 <p>These library functions are part of <a href="index.html">Netpbm</a>.
 
-<A NAME="lbAE">&nbsp;</A>
-<H3>TYPES AND CONSTANTS</H3>
+<H3 id="types">TYPES AND CONSTANTS</H3>
 
 <P>Each <B>gray</B> should contain only the values between <B>0</B>
 and <B>PGM_OVERALLMAXVAL</B>.  <B>pgm_pbmmaxval</B> is the maxval used
@@ -169,13 +165,13 @@ formats.  <B>PGM_FORMAT_TYPE</B> is a macro that generates code to
 compute the format type code of a PBM or PGM format from the format
 code which is its argument.
 
-<A NAME="lbAF">&nbsp;</A>
-<H3>INITIALIZATION</H3>
+<H3 id="initialization">INITIALIZATION</H3>
 
-<P><b>pgm_init</b> is identical to <b>pm_init()</b>.
+<P><b>pgm_init()</b> is identical to <b>pm_proginit</b>.
 
-<A NAME="lbAG">&nbsp;</A>
-<H3>MEMORY MANAGEMENT</H3>
+<p><b>pgm_init()</b> is obsolete.  Use <b>pm_proginit()</b> instead.
+
+<H3 id="memorymanagement">MEMORY MANAGEMENT</H3>
 
 <B>pgm_allocarray()</B> allocates an array of grays.
 
@@ -187,8 +183,7 @@ code which is its argument.
 <P><B>pgm_freerow()</B> frees a row of grays allocated with
 <B>pgm_allocrow()</B>.
 
-<A NAME="lbAH">&nbsp;</A>
-<H3>READING FILES</H3>
+<H3 id="reading">READING FILES</H3>
 
 <P>If a function in this section is called on a PBM format file, it
 translates the PBM file into a PGM file on the fly and functions as if
@@ -217,8 +212,7 @@ the system's normal data structures (to wit, a number that won't fit in
 a C 'int').
 
 
-<A NAME="lbAI">&nbsp;</A>
-<H3>WRITING FILES</H3>
+<H3 id="writing">WRITING FILES</H3>
 
 <B>pgm_writepgminit()</B> writes the header for a PGM file and leaves
 it positioned just after the header.
@@ -236,8 +230,7 @@ file.  For meaningful results, <I>cols</I>, <I>maxval</I>, and
 image.  This function combines <B>pgm_writepgminit()</B> and
 <B>pgm_writepgmrow()</B>.
 
-<A NAME="lbAJ">&nbsp;</A>
-<H3>MISCELLANEOUS</H3>
+<H3 id="miscellaneous">MISCELLANEOUS</H3>
 
 <P><B>pgm_nextimage()</B> positions a PGM input file to the next image
 in it (so that a subsequent <B>pgm_readpgminit()</B> reads its
@@ -252,28 +245,26 @@ where the file is the wrong size to contain all the image data.
 <P><B>pgm_check() </B> is analogous to <B>pbm_check()</B>, but works
 on PGM and PBM files.
 
-<A NAME="lbAK">&nbsp;</A>
-<H2>SEE ALSO</H2>
+<H2 id="seealso">SEE ALSO</H2>
 
 <B><A HREF="libpbm.html">libpbm</A></B>,
 <B><A HREF="libppm.html">libppm</A></B>,
 <B><A HREF="libpnm.html">libpnm</A></B>
 
 <HR>
-<A NAME="index">&nbsp;</A><H2>Table Of Contents</H2>
-<UL>
-<LI><A HREF="#lbAB">NAME</A>
-<LI><A HREF="#lbAC">SYNOPSIS</A>
-<LI><A HREF="#lbAD">DESCRIPTION</A>
+<H2 id="index">Table Of Contents</H2>
 <UL>
-<LI><A HREF="#lbAE">TYPES AND CONSTANTS</A>
-<LI><A HREF="#lbAF">INITIALIZATION</A>
-<LI><A HREF="#lbAG">MEMORY MANAGEMENT</A>
-<LI><A HREF="#lbAH">READING FILES</A>
-<LI><A HREF="#lbAI">WRITING FILES</A>
-<LI><A HREF="#lbAJ">MISCELLANEOUS</A>
-</UL>
-<LI><A HREF="#lbAK">SEE ALSO</A>
+<LI><A HREF="#synopsis">SYNOPSIS</A>
+<LI><A HREF="#description">DESCRIPTION</A>
+  <UL>
+  <LI><A HREF="#types">TYPES AND CONSTANTS</A>
+  <LI><A HREF="#initialization">INITIALIZATION</A>
+  <LI><A HREF="#memorymanagement">MEMORY MANAGEMENT</A>
+  <LI><A HREF="#reading">READING FILES</A>
+  <LI><A HREF="#writing">WRITING FILES</A>
+  <LI><A HREF="#miscellaneous">MISCELLANEOUS</A>
+  </UL>
+<LI><A HREF="#seealso">SEE ALSO</A>
 </UL>
 </BODY>
 </HTML>
diff --git a/libpm.html b/libpm.html
index 474b70d4..cb05679b 100644
--- a/libpm.html
+++ b/libpm.html
@@ -32,19 +32,61 @@ Manual</a>
 
 <p>
 <B>void pm_init(</B>
-<B>int *</B><I>argcP</I><B>,</B>
-<B>char *</B><I>argv</I><B>[]</B>
+<B>const char * </B><I>progname</I><B>,</B>
+<B>unsigned int </B><I>flags</I><B>[]</B>
+<B>);</B>
+
+<p>
+<B>void pm_proginit(</B>
+<B>int * </B><I>argcP</I><B>,</B>
+<B>char * </B><I>argv</I><B>[]</B>
 <B>);</B>
 
 <h4>Description</h4>
 
-<p>All Netpbm programs must call <b>pm_init()</b> just after
-startup, before they process their arguments.  <b>pm_init()</b>,
+<p>All Netpbm programs must call <b>pm_proginit()</b> just after
+startup, before they process their arguments.  <b>pm_proginit()</b>,
 among other things, processes Netpbm universal arguments and removes
 them from the argument list.
 
 <p>A program that isn't a Netpbm program, but just uses <b>libnetpbm</b>
-services, need not invoke <b>pm_init</b>.
+services, need not invoke <b>pm_proginit</b>.  But such a program
+must invoke <b>pm_init()</b>.
+
+<P>By &quot;Netpbm program,&quot; we mean a program that is part of
+the Netpbm package or is intended to act like one.  <b>pm_proginit()</b>
+does things that all Netpbm programs do by convention.  For example,
+it scans the argument list for <a href="index.html#commonoptions">
+common options</a>, handles them, and removes them from the argument
+list.  Ergo, if you want your program to have the same common options
+as those in the Netpbm package, you might use <b>pm_proginit()</b>,
+and if you don't, you must not.
+
+<p><b>pm_proginit()</b> is primarily intended for Netpbm developers,
+so you should not expect it to have stable function across releases,
+and you must go to the comments in the source code to see exactly what
+it does.
+
+<p>Any program that uses <b>libnetpbm</b> but does not call
+<b>pm_proginit</b> (i.e. is not a Netpbm program) must call
+<b>pm_init()</b>.  The conventional place to do this is at the very
+beginning of the program.  This sets up some program-global variables
+for use by the <b>libnetpbm</b> functions.
+
+<p>The <i>progname</i> argument is the program name for
+<b>libnetpbm</b> functions to use in messages they issue.  Normally,
+you would use argv[0] for this.
+
+<p><i>flags</i> is meaningless, but for forward compatibility, you
+must set it to zero.
+
+<p><b>pm_init()</b> and <b>pm_proginit()</b> have been around at least
+since Netpbm 9.25 (March 2002).  Another function named
+<b>pm_init()</b> exists in older Netpbm, but was for internal use.
+Netpbm programs of that era use <b>pbm_init()</b>, etc to do what
+<b>pm_proginit()</b> does today.  Today, <b>pbm_init()</b>, etc. exist
+for backward compatibility and are identical the <b>pm_proginit()</b>.
+
 
 <h3 id="file">File Or Image Stream Access</h3>
 
diff --git a/libpnm.html b/libpnm.html
index 00482a43..da3c2efe 100644
--- a/libpnm.html
+++ b/libpnm.html
@@ -6,15 +6,13 @@
 </HEAD>
 <BODY>
 <H1>pnm Functions</H1>
-Updated: 22 July 2004
+Updated: 8 September 2007
 <BR>
 <A HREF="#index">Table Of Contents</A>
-<A NAME="lbAB">&nbsp;</A>
 <H2>NAME</H2>
 libpnm - libnetpbm functions to read and write PNM image files
 
-<A NAME="lbAD">&nbsp;</A>
-<H2>SYNOPSIS</H2>
+<H2 id="synopsis">SYNOPSIS</H2>
 
 <B>#include &lt;pnm.h&gt;</B>
 
@@ -181,14 +179,12 @@ libpnm - libnetpbm functions to read and write PNM image files
 <B>PNM_FORMAT_TYPE(</B><I>format</I><B>)</B>
 <B>...</B>
 
-<A NAME="lbAE">&nbsp;</A>
-<H2>DESCRIPTION</H2>
+<H2 id="description">DESCRIPTION</H2>
 
 <p>These library functions are part of <a href="index.html">Netpbm</a>.
 
 
-<A NAME="lbAI">&nbsp;</A>
-<H3>PNM TYPES AND CONSTANTS</H3>
+<H3 id="types">TYPES AND CONSTANTS</H3>
 
 <P>Each <B>xel</B> contains three <B>xelval</B>s, each of which should
 contain only the values between <B>0</B> and <B>PNM_MAXMAXVAL</B>,
@@ -196,13 +192,10 @@ inclusive.  <B>pnm_pbmmaxval</B> is the maxval used when a PNM program
 reads a PBM file.  Normally it is 1; however, for some programs, a
 larger value gives better results.
 
-<A NAME="lbAJ">&nbsp;</A>
-<H3>PNM XEL MANIPULATIONS</H3>
-
-<A NAME="lbAK">&nbsp;</A>
+<H3 id="xel">XEL MANIPULATIONS</H3>
 
 <p>The <B>PNM_GET1</B> macro extracts a single value from an xel, when
-you know it's from a PBM or PGM file.  When it's from a PPM file, use
+ou know it's from a PBM or PGM file.  When it's from a PPM file, use
 <B>PPM_GETR()</B>, <B>PPM_GETG()</B>, and <B>PPM_GETB()</B>.
 
 <P>The <B>PNM_ASSIGN1</B> macro assigns a single value to an xel, when
@@ -217,13 +210,19 @@ formats: a plain one and a raw one.  So there are four format types,
 but seven formats.  <B>PNM_FORMAT_TYPE</B> does not work on the PAM
 format code.
 
-<A NAME="lbAL">&nbsp;</A>
-<H3>INITIALIZATION</H3>
+<B>pnm_whitexel()</B> and <B>pnm_blackxel()</B> return a white or
+black xel, respectively, for the given <I>maxval</I> and
+<I>format</I>.
+
+<P><B>pnm_invertxel()</B> inverts an xel.
+
+<H3 id="initialization">INITIALIZATION</H3>
+
+<P><b>pnm_init()</b> is identical to <b>pm_proginit</b>.
 
-<p><b>pnm_init</b> is identical to <b>pm_init()</b>.
+<p><b>pnm_init()</b> is obsolete.  Use <b>pm_proginit()</b> instead.
 
-<A NAME="lbAM">&nbsp;</A>
-<H3>MEMORY MANAGEMENT</H3>
+<H3 id="memorymanagement">MEMORY MANAGEMENT</H3>
 
 <P><B>pnm_allocarray()</B> allocates space for an array of xels.
 <B>pnm_freearray()</B> frees an array space allocated by
@@ -233,8 +232,7 @@ format code.
 <B>pnm_freerow()</B> frees it.
 
 
-<A NAME="lbAN">&nbsp;</A>
-<H3>READING PNM FILES</H3>
+<H3 id="reading">READING PNM FILES</H3>
 
 <P><B>pnm_readpnminit()</B> is similar to <B>pnm_readpaminit()</B>,
 but reads only PNM images and has a different parameter list.
@@ -249,8 +247,7 @@ returns an array of rows such that <B>pnm_readpnmrow()</B> would
 return rather than such that <B>pnm_readpamrow()</B> would return.
 
 
-<A NAME="lbAO">&nbsp;</A>
-<H3>WRITING FILES</H3>
+<H3 id="writing">WRITING FILES</H3>
 
 <P><B>pnm_writepnminit()</B> is similar to <B>pnm_writepaminit()</B>
 except that it can write only a PNM header and has a different
@@ -272,16 +269,7 @@ takes an array of rows of xels instead of an array of rows of tuples.
 See the description of <I>forceplain</I> above.
 
 
-<A NAME="lbAP">&nbsp;</A>
-<H3>MISCELLANEOUS</H3>
-
-<P> <B>pnm_check()</B> is similar to <B>pnm_checkpam()</B> except it
-works only on PNM images.
-
-<P><B>pnm_check()</B> is identical to <B>ppm_check()</B>.
-
-<A NAME="lbAQ">&nbsp;</A>
-<H3>PNM FORMAT PROMOTION</H3>
+<H3 id="promotion">FORMAT PROMOTION</H3>
 
 <B>pnm_promoteformatrow()</B> promotes a row of xels from one maxval
 and format to a new set.  Use this when you are combining multiple
@@ -290,15 +278,12 @@ the maximum of the formats, and promote them all to that.
 
 <P><B>pnm_promoteformat()</B> promotes an entire anymap.
 
+<H3 id="miscellaneous">MISCELLANEOUS</H3>
 
-<A NAME="lbAR">&nbsp;</A>
-<H3>PNM XEL MANIPULATION</H3>
-
-<B>pnm_whitexel()</B> and <B>pnm_blackxel()</B> return a white or
-black xel, respectively, for the given <I>maxval</I> and
-<I>format</I>.
+<P> <B>pnm_check()</B> is similar to <B>pnm_checkpam()</B> except it
+works only on PNM images.
 
-<P><B>pnm_invertxel()</B> inverts an xel.
+<P><B>pnm_check()</B> is identical to <B>ppm_check()</B>.
 
 <P><B>pnm_backgroundxelrow()</B> figures out an appropriate background
 xel based on the row of xels <I>xelrow</I>, which is <I>cols</I> xels
@@ -313,8 +298,7 @@ the image.
 of just one row.  This tends to do a slightly better job than
 <B>pnmbackgroundxelrow()</B>.
 
-<A NAME="lbAS">&nbsp;</A>
-<H2>SEE ALSO</H2>
+<H2 id="seealso">SEE ALSO</H2>
 
 <B><A HREF="libnetpbm.html">Libnetpbm</A></B>,
 <B><A HREF="libnetpbm_ug.html">Libnetpbm User's Guide</A></B>,
@@ -327,31 +311,27 @@ of just one row.  This tends to do a slightly better job than
 <B><A HREF="libpgm.html">libpgm</A></B>,
 <B><A HREF="libppm.html">libppm</A></B>
 
-<A NAME="lbAT">&nbsp;</A>
-<H2>AUTHOR</H2>
+<H2 id="author">AUTHOR</H2>
 
 Copyright (C) 1989, 1991 by Tony Hansen and Jef Poskanzer.
 
 <HR>
-<A NAME="index">&nbsp;</A><H2>Table Of Contents</H2>
+<H2 id="index">Table Of Contents</H2>
 <UL>
-  <LI><A HREF="#lbAB">NAME</A>
-  <LI><A HREF="#lbAD">SYNOPSIS</A>
-  <LI><A HREF="#lbAE">DESCRIPTION</A>
+  <LI><A HREF="#synopsis">SYNOPSIS</A>
+  <LI><A HREF="#description">DESCRIPTION</A>
   <UL>
-    <LI><A HREF="#lbAI">PNM TYPES AND CONSTANTS</A>
-    <LI><A HREF="#lbAJ">PNM XEL MANIPULATIONS</A>
-    <LI><A HREF="#lbAK">The </A>
-    <LI><A HREF="#lbAL">INITIALIZATION</A>
-    <LI><A HREF="#lbAM">MEMORY MANAGEMENT</A>
-    <LI><A HREF="#lbAN">READING PNM FILES</A>
-    <LI><A HREF="#lbAO">WRITING FILES</A>
-    <LI><A HREF="#lbAP">MISCELLANEOUS</A>
-    <LI><A HREF="#lbAQ">PNM FORMAT PROMOTION</A>
-    <LI><A HREF="#lbAR">PNM XEL MANIPULATION</A>
+    <LI><A HREF="#types">TYPES AND CONSTANTS</A>
+    <LI><A HREF="#xel">XEL MANIPULATIONS</A>
+    <LI><A HREF="#initialization">INITIALIZATION</A>
+    <LI><A HREF="#memorymanagement">MEMORY MANAGEMENT</A>
+    <LI><A HREF="#reading">READING PNM FILES</A>
+    <LI><A HREF="#writing">WRITING FILES</A>
+    <LI><A HREF="#promotion">FORMAT PROMOTION</A>
+    <LI><A HREF="#miscellaneous">MISCELLANEOUS</A>
     </UL>
-  <LI><A HREF="#lbAS">SEE ALSO</A>
-  <LI><A HREF="#lbAT">AUTHOR</A>
+  <LI><A HREF="#seealso">SEE ALSO</A>
+  <LI><A HREF="#author">AUTHOR</A>
   </UL>
 </BODY>
 </HTML>
diff --git a/libppm.html b/libppm.html
index 3d83709d..e70d169a 100644
--- a/libppm.html
+++ b/libppm.html
@@ -6,16 +6,14 @@
 </HEAD>
 <BODY>
 <H1>libppm</H1>
-Updated: 22 July 2004
+Updated: 8 September 2007
 <BR>
 <A HREF="#index">Table Of Contents</A>
-<A NAME="lbAB">&nbsp;</A>
 <H2>NAME</H2>
 
 libppm - functions for PPM programs
 
-<A NAME="lbAC">&nbsp;</A>
-<H2>SYNOPSIS</H2>
+<H2 id="synopsis">SYNOPSIS</H2>
 
 <B>#include &lt;<A HREF="file:/usr/include/ppm.h">ppm.h</A>&gt;</B>
 
@@ -177,13 +175,11 @@ libppm - functions for PPM programs
   <b>)</b>
 
 
-<A NAME="lbAD">&nbsp;</A>
-<H2>DESCRIPTION</H2>
+<H2 id="description">DESCRIPTION</H2>
 
 <p>These library functions are part of <a href="index.html">Netpbm</a>.
 
-<A NAME="lbAE">&nbsp;</A>
-<H3>TYPES AND CONSTANTS</H3>
+<H3 id="types">TYPES AND CONSTANTS</H3>
 
 Each <B>pixel</B> contains three <B>pixval</B>s, each of which should
 contain only the values between <B>0</B> and <B>PPM_MAXMAXVAL</B>.
@@ -223,13 +219,13 @@ significantly faster to do it with multiplication tables instead.
 Compute all the possible products once up front, then for each pixel,
 just look up the products in the tables.
 
-<A NAME="lbAG">&nbsp;</A>
-<H3>INITIALIZATION</H3>
+<H3 id="initialization">INITIALIZATION</H3>
 
-<P><b>ppm_init()</b> is identical to <b>pm_init</b>.
+<P><b>ppm_init()</b> is identical to <b>pm_proginit</b>.
 
-<A NAME="lbAH">&nbsp;</A>
-<H3>MEMORY MANAGEMENT</H3>
+<p><b>ppm_init()</b> is obsolete.  Use <b>pm_proginit()</b> instead.
+
+<H3 id="memorymanagement">MEMORY MANAGEMENT</H3>
 
 <B>ppm_allocarray()</B> allocates an array of pixels.
 
@@ -242,8 +238,7 @@ pixels.
 <P><B>ppm_freerow()</B> frees a row of pixelss allocated with
 <B>ppm_allocrow()</B>.
 
-<A NAME="lbAI">&nbsp;</A>
-<H3>READING FILES</H3>
+<H3 id="readingfiles">READING FILES</H3>
 
 <P>If a function in this section is called on a PBM or PGM format
 file, it translates the PBM or PGM file into a PPM file on the fly and
@@ -267,8 +262,7 @@ information from the header as <I>rows</I>, <I>cols</I>, and
 <B>ppm_allocarray()</B>, and <B>ppm_readppmrow()</B>.
 
 
-<A NAME="lbAJ">&nbsp;</A>
-<H3>WRITING FILES</H3>
+<H3 id="writingfiles">WRITING FILES</H3>
 
 <B>ppm_writeppminit()</B> writes the header for a PPM file and leaves
 it positioned just after the header.
@@ -304,7 +298,7 @@ on PPM, PGM, and PBM files.
 
 <h3 id="color">COLOR</h3>
 
-<H4>Luminance, Chrominance (YcbCr)</H4>
+<H4 id="luminance">Luminance, Chrominance (YcbCr)</H4>
 
 <pre>
 <code>
@@ -468,8 +462,7 @@ represents it.
 
 <H3 id="colorname">COLOR NAMES</H3>
 
-<A NAME="rgb.txt">&nbsp;</a>
-<h4>System Color Dictionary</h4>
+<h4 id="dictionary">System Color Dictionary</h4>
 
 <P>Netpbm uses the system's X11 color dictionary (usually in
 <b>/usr/lib/X11/rgb.txt</b>).  This is the same file the X Window
@@ -587,8 +580,7 @@ colors or names.
 <p><b>ppm_readcolornamefile()</b> was new in Netpbm 10.15 (April 2003).
 
 
-<A NAME="colorindex">&nbsp;</A>
-<H3>COLOR INDEXING</H3>
+<H3 id="colorindex">COLOR INDEXING</H3>
 
 <P>Sometimes in processing images, you want to associate a value with
 a particular color.  Most often, that's because you're generating a
@@ -699,8 +691,7 @@ message.
 <P>The return value is a new <B>colorhash_table</B> which you must
 eventually free with <B>ppm_freecolorhash()</B>.
 
-<A NAME="lbAN">&nbsp;</A>
-<H3>COLOR HISTOGRAMS</H3>
+<H3 id="histogram">COLOR HISTOGRAMS</H3>
 
 <P>The Netpbm libraries give you functions to examine a Netpbm image
 and determine what colors are in it and how many pixels of each color
@@ -784,40 +775,46 @@ open file stream and it reads the image from the file.  The file must
 be positioned after the header, at the raster.  Upon return, the file
 is still open, but its position is undefined.
 
-<A NAME="lbAO">&nbsp;</A>
-<H2>SEE ALSO</H2>
+<H2 id="seealso">SEE ALSO</H2>
 
 <B><A HREF="pbm.html">pbm</A></B>,
 <B><A HREF="pgm.html">pgm</A></B>,
 <B><A HREF="libpbm.html">libpbm</A></B>
 
-<A NAME="lbAP">&nbsp;</A>
-<H2>AUTHOR</H2>
+<H2 id="author">AUTHOR</H2>
 
 Copyright (C) 1989, 1991 by Tony Hansen and Jef Poskanzer.
 
 <HR>
-<A NAME="index">&nbsp;</A>
-<H2>Table Of Contents</H2>
-<UL>
-<LI><A HREF="#lbAB">NAME</A>
-<LI><A HREF="#lbAC">SYNOPSIS</A>
-<LI><A HREF="#lbAD">DESCRIPTION</A>
+<H2 id="index">Table Of Contents</H2>
 <UL>
-<LI><A HREF="#lbAE">TYPES AND CONSTANTS</A>
-<LI><A HREF="#manipulating_pixels">MANIPULATING PIXELS</A>
-<LI><A HREF="#lbAG">INITIALIZATION</A>
-<LI><A HREF="#lbAH">MEMORY MANAGEMENT</A>
-<LI><A HREF="#lbAI">READING FILES</A>
-<LI><A HREF="#lbAJ">WRITING FILES</A>
-<LI><A HREF="#miscellaneous">MISCELLANEOUS</A>
-<LI><A HREF="#color">COLOR</A>
-<LI><A HREF="#colorname">COLOR NAMES</A>
-<LI><A HREF="#colorindex">COLOR INDEXING</A>
-<LI><A HREF="#lbAN">COLOR HISTOGRAMS</A>
-</UL>
-<LI><A HREF="#lbAO">SEE ALSO</A>
-<LI><A HREF="#lbAP">AUTHOR</A>
-</UL>
+<LI><A HREF="#synopsis">SYNOPSIS</A>
+<LI><A HREF="#description">DESCRIPTION</A>
+  <UL>
+  <LI><A HREF="#types">TYPES AND CONSTANTS</A>
+  <LI><A HREF="#manipulating_pixels">MANIPULATING PIXELS</A>
+  <LI><A HREF="#initialization">INITIALIZATION</A>
+  <LI><A HREF="#memorymanagement">MEMORY MANAGEMENT</A>
+  <LI><A HREF="#readingfiles">READING FILES</A>
+  <LI><A HREF="#writingfiles">WRITING FILES</A>
+  <LI><A HREF="#miscellaneous">MISCELLANEOUS</A>
+  <LI><A HREF="#color">COLOR</A>
+    <ul>
+    <li><a href="#luminance">Luminance, Chrominance (YcbCr)</a>
+    <li><a href="#berlinkay">Berlin-Kay Color</a>
+    </ul>
+  <LI><A HREF="#colorname">COLOR NAMES</A>
+    <ul>
+    <li><a href="#dictionary">System Color Dictionary</a>
+    <li><a href="#ppm_parsecolor">ppm_parsecolor</a>
+    <li><a href="#ppm_colorname">ppm_colorname</a>
+    <li><a href="#ppm_readcolornamefile">ppm_readcolornamefile</a>
+    </ul>
+  <LI><A HREF="#colorindex">COLOR INDEXING</A>
+  <LI><A HREF="#histogram">COLOR HISTOGRAMS</A>
+  </UL>
+  <LI><A HREF="#seealso">SEE ALSO</A>
+  <LI><A HREF="#author">AUTHOR</A>
+  </UL>
 </BODY>
 </HTML>
diff --git a/pam.html b/pam.html
index 27a48d26..082563ba 100644
--- a/pam.html
+++ b/pam.html
@@ -175,11 +175,14 @@ The header must contain exactly one of these header lines.
 zero.  The rest of the line is part of the tuple type.  The rest of
 the line is not tokenized, but the tuple type does not include any
 white space immediately following <B>TUPLTYPE </B> or at the very end
-of the line.  It does not include a newline.  If there are multiple
-<B>TUPLTYPE</B> header lines, the tuple type is the concatenation of
-the values from each of them, separated by a single blank, in the
-order in which they appear in the header.  If there are no
-<B>TUPLTYPE</B> header lines the tuple type is the null string.  
+of the line.  It does not include a newline.  There must be something
+other than white space after the <b>TUPLETYPE</b> token.
+
+<p>If there are multiple <B>TUPLTYPE</B> header lines, the tuple type
+is the concatenation of the values from each of them, separated by a
+single blank, in the order in which they appear in the header.  If
+there are no <B>TUPLTYPE</B> header lines the tuple type is the null
+string.
 
 </DL>
 
diff --git a/pbmtoppa.html b/pbmtoppa.html
index ab605b29..7e82c95a 100644
--- a/pbmtoppa.html
+++ b/pbmtoppa.html
@@ -73,7 +73,7 @@ computing resources already present in the computer that requests the
 printing.  CPU power, ROM, and RAM requirements inside the printer are all
 reduced compared to a conventional printer.
 
-<p>PPA was new in 1997.  It was predated by Hewlett Packard's PCL
+<p>PPA was new in 1997.  It was preceded by Hewlett Packard's PCL
 (Printer Control Language) language.  HP manufactured PPA printers for only
 a few years, and no one else ever did.
 
@@ -276,21 +276,18 @@ printtool.
 <B><A HREF="pstopnm.html">pstopnm</A></B>,
 <B><A HREF="pbm.html">pbm</A></B>
 
-<P><B>pnm2ppa</B> is not part of Netpbm, but does the same things as
-<B>pbmtoppa</B> except it also works with color and has lots more
-features.  See &lt;<A
-HREF="http://sourceforge.net/projects/pnm2ppa">http://sourceforge.net/projects/pnm2ppa</A>&gt;.
+<P>This program was derived from <B>pbm2ppa</B>.  <B>pbm2ppa</B> is obsolete 
+and has been replaced by <B>pnm2ppa</B>, which does the same things as 
+<B>pbmtoppa</B> except it also works with color and has lots more features.  See 
+<A HREF="http://pnm2ppa.sourceforge.net">http://pnm2ppa.sourceforge.net</A> 
+for more information about the PPA protocol and the separately distributed 
+<B>pnm2ppa</B> program.
 
 <P>The file INSTALL-MORE in the pbmtoppa directory of the Netpbm
 source code contains detailed instructions on setting up a system to
 use pbmtoppa to allow convenient printing on HP PPA printers.  It was
 written by Michael Buehlmann.
 
-<P>For information about the PPA protocol and the separately
-distributed pbm2ppa program from which <B>pbmtoppa</B> was derived,
-see &lt;<A
-HREF="http://www.httptech.com/ppa">http://www.httptech.com/ppa</A>&gt;.
-
 <A NAME="lbAJ">&nbsp;</A>
 <H2>AUTHOR</H2>
 
diff --git a/pnmgamma.html b/pnmgamma.html
index 30d46a6f..fde2208f 100644
--- a/pnmgamma.html
+++ b/pnmgamma.html
@@ -251,7 +251,7 @@ maxval at least 3 times the input maxval.
 
 <p>This option was new in Netpbm 10.32 (February 2006).  Before that,
 you can achieve the same result by increasing the maxval of the input
-or decreasing the maxval of the output using <b>pnmdepth</b>.
+or decreasing the maxval of the output using <b>pamdepth</b>.
 
 </DL>