Add generated HTML man pages.
diff --git a/man/zip_source_function.html b/man/zip_source_function.html
new file mode 100644
index 0000000..7f50206
--- /dev/null
+++ b/man/zip_source_function.html
@@ -0,0 +1,265 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8"/>
+  <style>
+    table.head, table.foot { width: 100%; }
+    td.head-rtitle, td.foot-os { text-align: right; }
+    td.head-vol { text-align: center; }
+    div.Pp { margin: 1ex 0ex; }
+  </style>
+  <link rel="stylesheet" href="../nih-man.css" type="text/css" media="all"/>
+  <title>ZIP_SOURCE_FUNCTION(3)</title>
+</head>
+<body>
+<table class="head">
+  <tr>
+    <td class="head-ltitle">ZIP_SOURCE_FUNCTION(3)</td>
+    <td class="head-vol">Library Functions Manual</td>
+    <td class="head-rtitle">ZIP_SOURCE_FUNCTION(3)</td>
+  </tr>
+</table>
+<div class="manual-text">
+<h1 class="Sh" id="NAME">NAME</h1>
+<b class="Nm">zip_source_function</b>,
+  <b class="Nm">zip_source_function_create</b> &#8212; <span class="Nd">create
+  data source from function</span>
+<h1 class="Sh" id="LIBRARY">LIBRARY</h1>
+libzip (-lzip)
+<h1 class="Sh" id="SYNOPSIS">SYNOPSIS</h1>
+<b class="In">#include &lt;<a class="In">zip.h</a>&gt;</b>
+<div class="Pp"></div>
+<var class="Ft">zip_source_t *</var>
+<br/>
+<b class="Fn">zip_source_function</b>(<var class="Fa" style="white-space: nowrap;">zip_t
+  *archive</var>,
+  <var class="Fa" style="white-space: nowrap;">zip_source_callback fn</var>,
+  <var class="Fa" style="white-space: nowrap;">void *userdata</var>);
+<div class="Pp"></div>
+<var class="Ft">zip_source_t *</var>
+<br/>
+<b class="Fn">zip_source_function_create</b>(<var class="Fa" style="white-space: nowrap;">zip_source_callback
+  fn</var>, <var class="Fa" style="white-space: nowrap;">void *userdata</var>,
+  <var class="Fa" style="white-space: nowrap;">zip_error_t *error</var>);
+<h1 class="Sh" id="DESCRIPTION">DESCRIPTION</h1>
+The functions <b class="Fn">zip_source_function</b>() and
+  <b class="Fn">zip_source_function_create</b>() creates a zip source from the
+  user-provided function <var class="Ar">fn</var>, which must be of the
+  following type:
+<div class="Pp"></div>
+<var class="Ft">typedef zip_int64_t</var>
+  <b class="Fn">(*zip_source_callback)</b>(<var class="Fa">void *userdata</var>,
+  <var class="Fa">void *data</var>, <var class="Fa">zip_uint64_t len</var>,
+  <var class="Fa">zip_source_cmd_t cmd</var>);
+<div class="Pp"></div>
+<var class="Ar">archive</var> or <var class="Ar">error</var> are used for
+  reporting errors and can be <code class="Dv">NULL</code>.
+<div class="Pp"></div>
+When called by the library, the first argument is the
+  <var class="Ar">userdata</var> argument supplied to the function. The next two
+  arguments are a buffer <var class="Ar">data</var> of size
+  <var class="Ar">len</var> when data is passed in or expected to be returned,
+  or else <code class="Dv">NULL</code> and 0. The last argument,
+  <var class="Ar">cmd</var>, specifies which action the function should perform.
+<div class="Pp"></div>
+Depending on the uses, there are three useful sets of commands to be supported
+  by a <b class="Fn">zip_source_callback</b>():
+<dl class="Bl-tag" style="margin-left: 22.00ex;">
+  <dt class="It-tag" style="margin-left: -22.00ex;">&#160;</dt>
+  <dd class="It-tag">&#160;</dd>
+  <dt class="It-tag" style="margin-left: -22.00ex;">read source</dt>
+  <dd class="It-tag">Providing streamed data (for file data added to archives).
+      Must support <code class="Dv">ZIP_SOURCE_OPEN</code>,
+      <code class="Dv">ZIP_SOURCE_READ</code>,
+      <code class="Dv">ZIP_SOURCE_CLOSE</code>,
+      <code class="Dv">ZIP_SOURCE_STAT</code>, and
+      <code class="Dv">ZIP_SOURCE_ERROR</code>.</dd>
+  <dt class="It-tag" style="margin-left: -22.00ex;">&#160;</dt>
+  <dd class="It-tag">&#160;</dd>
+  <dt class="It-tag" style="margin-left: -22.00ex;">seekable read source</dt>
+  <dd class="It-tag">Same as previous, but from a source allowing reading from
+      arbitrary offsets (also for read-only zip archive). Must additionally
+      support <code class="Dv">ZIP_SOURCE_SEEK</code>,
+      <code class="Dv">ZIP_SOURCE_TELL</code>, and
+      <code class="Dv">ZIP_SOURCE_SUPPORTS</code>.</dd>
+  <dt class="It-tag" style="margin-left: -22.00ex;">&#160;</dt>
+  <dd class="It-tag">&#160;</dd>
+  <dt class="It-tag" style="margin-left: -22.00ex;">read/write source</dt>
+  <dd class="It-tag">Same as previous, but additionally allowing writing (also
+      for writable zip archives). Must additionally support
+      <code class="Dv">ZIP_SOURCE_BEGIN_WRITE</code>,
+      <code class="Dv">ZIP_SOURCE_COMMIT_WRITE</code>,
+      <code class="Dv">ZIP_SOURCE_ROLLBACK_WRITE</code>,
+      <code class="Dv">ZIP_SOURCE_SEEK_WRITE</code>,
+      <code class="Dv">ZIP_SOURCE_TELL_WRITE</code>, and
+      <code class="Dv">ZIP_SOURCE_REMOVE</code>.</dd>
+</dl>
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_BEGIN_WRITE</code></h2>
+Prepare the source for writing. Use this to create any temporary file(s).
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_BEGIN_WRITE_CLONING</code></h2>
+Prepare the source for writing, keeping the first <var class="Ar">len</var>
+  bytes of the original file. Only implement this command if it is more
+  efficient than copying the data, and if it does not destructively overwrite
+  the original file (you still have to be able to execute
+  <code class="Dv">ZIP_SOURCE_ROLLBACK_WRITE</code>).
+<div class="Pp"></div>
+The next write should happen at byte <var class="Ar">offset</var>.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_CLOSE</code></h2>
+Reading is done.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_COMMIT_WRITE</code></h2>
+Finish writing to the source. Replace the original data with the newly written
+  data. Clean up temporary files or internal buffers. Subsequently opening and
+  reading from the source should return the newly written data.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_ERROR</code></h2>
+Get error information. <var class="Ar">data</var> points to an array of two
+  ints, which should be filled with the libzip error code and the corresponding
+  system error code for the error that occurred. See
+  <a class="Xr" href="zip_errors.html">zip_errors(3)</a> for details on the
+  error codes. If the source stores error information in a zip_error_t, use
+  <a class="Xr" href="zip_error_to_data.html">zip_error_to_data(3)</a> and
+  return its return value. Otherwise, return 2 * sizeof(int).
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_FREE</code></h2>
+Clean up and free all resources, including <var class="Ar">userdata</var>. The
+  callback function will not be called again.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_OPEN</code></h2>
+Prepare for reading.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_READ</code></h2>
+Read data into the buffer <var class="Ar">data</var> of size
+  <var class="Ar">len</var>. Return the number of bytes placed into
+  <var class="Ar">data</var> on success, and zero for end-of-file.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_REMOVE</code></h2>
+Remove the underlying file. This is called if a zip archive is empty when
+  closed.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_ROLLBACK_WRITE</code></h2>
+Abort writing to the source. Discard written data. Clean up temporary files or
+  internal buffers. Subsequently opening and reading from the source should
+  return the original data.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_SEEK</code></h2>
+Specify position to read next byte from, like
+  <a class="Xr" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/fseek.html">fseek(3)</a>. Use
+  <a class="Xr" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/ZIP_SOURCE_GET_ARGS.html">ZIP_SOURCE_GET_ARGS(3)</a> to
+  decode the arguments into the following struct:
+<div class="Pp"></div>
+<div class="Bd" style="margin-left: 0.00ex;">
+<pre class="Li">
+struct zip_source_args_seek { 
+    zip_int64_t offset; 
+    int whence; 
+};
+</pre>
+</div>
+<div class="Pp"></div>
+If the size of the source's data is known, use
+  <a class="Xr" href="zip_source_seek_compute_offset.html">zip_source_seek_compute_offset(3)</a>
+  to validate the arguments and compute the new offset.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_SEEK_WRITE</code></h2>
+Specify position to write next byte to, like
+  <a class="Xr" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/fseek.html">fseek(3)</a>. See
+  <code class="Dv">ZIP_SOURCE_SEEK</code> for details.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_STAT</code></h2>
+Get meta information for the input data. <var class="Ar">data</var> points to an
+  allocated <var class="Vt">struct zip_stat</var>, which should be initialized
+  using <a class="Xr" href="zip_stat_init.html">zip_stat_init(3)</a> and then
+  filled in.
+<div class="Pp"></div>
+For uncompressed, unencrypted data, all information is optional. However, fill
+  in as much information as is readily available.
+<div class="Pp"></div>
+If the data is compressed, <code class="Dv">ZIP_STAT_COMP_METHOD</code>,
+  <code class="Dv">ZIP_STAT_SIZE</code>, and
+  <code class="Dv">ZIP_STAT_CRC</code> must be filled in.
+<div class="Pp"></div>
+If the data is encrypted, <code class="Dv">ZIP_STAT_ENCRYPTION_METHOD</code>,
+  <code class="Dv">ZIP_STAT_COMP_METHOD</code>,
+  <code class="Dv">ZIP_STAT_SIZE</code>, and
+  <code class="Dv">ZIP_STAT_CRC</code> must be filled in.
+<div class="Pp"></div>
+Information only available after the source has been read (e.g., size) can be
+  omitted in an earlier call. <i class="Em">NOTE</i>:
+  <b class="Fn">zip_source_function</b>() may be called with this argument even
+  after being called with <code class="Dv">ZIP_SOURCE_CLOSE</code>.
+<div class="Pp"></div>
+Return sizeof(struct zip_stat) on success.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_SUPPORTS</code></h2>
+Return bitmap specifying which commands are supported. Use
+  <a class="Xr" href="zip_source_make_command_bitmap.html">zip_source_make_command_bitmap(3)</a>.
+  If this command is not implemented, the source is assumed to be a read source
+  without seek support.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_TELL</code></h2>
+Return the current read offset in the source, like
+  <a class="Xr" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/ftell.html">ftell(3)</a>.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_TELL_WRITE</code></h2>
+Return the current write offset in the source, like
+  <a class="Xr" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/ftell.html">ftell(3)</a>.
+<h2 class="Ss"><code class="Dv">ZIP_SOURCE_WRITE</code></h2>
+Write data to the source. Return number of bytes written.
+<h2 class="Ss" id="Return_Values">Return Values</h2>
+Commands should return -1 on error. <code class="Dv">ZIP_SOURCE_ERROR</code>
+  will be called to retrieve the error code. On success, commands return 0,
+  unless specified otherwise in the description above.
+<h2 class="Ss" id="Calling_Conventions">Calling Conventions</h2>
+The library will always issue <code class="Dv">ZIP_SOURCE_OPEN</code> before
+  issuing <code class="Dv">ZIP_SOURCE_READ</code>,
+  <code class="Dv">ZIP_SOURCE_SEEK</code>, or
+  <code class="Dv">ZIP_SOURCE_TELL</code>. When it no longer wishes to read from
+  this source, it will issue <code class="Dv">ZIP_SOURCE_CLOSE</code>. If the
+  library wishes to read the data again, it will issue
+  <code class="Dv">ZIP_SOURCE_OPEN</code> a second time. If the function is
+  unable to provide the data again, it should return -1.
+<div class="Pp"></div>
+<code class="Dv">ZIP_SOURCE_BEGIN_WRITE</code> or
+  <code class="Dv">ZIP_SOURCE_BEGIN_WRITE_CLONING</code> will be called before
+  <code class="Dv">ZIP_SOURCE_WRITE</code>,
+  <code class="Dv">ZIP_SOURCE_SEEK_WRITE</code>, or
+  <code class="Dv">ZIP_SOURCE_TELL_WRITE</code>. When writing is complete,
+  either <code class="Dv">ZIP_SOURCE_COMMIT_WRITE</code> or
+  <code class="Dv">ZIP_SOURCE_ROLLBACK_WRITE</code> will be called.
+<div class="Pp"></div>
+<code class="Dv">ZIP_SOURCE_STAT</code> can be issued at any time.
+<div class="Pp"></div>
+<code class="Dv">ZIP_SOURCE_ERROR</code> will only be issued in response to the
+  function returning -1.
+<div class="Pp"></div>
+<code class="Dv">ZIP_SOURCE_FREE</code> will be the last command issued; if
+  <code class="Dv">ZIP_SOURCE_OPEN</code> was called and succeeded,
+  <code class="Dv">ZIP_SOURCE_CLOSE</code> will be called before
+  <code class="Dv">ZIP_SOURCE_FREE</code>, and similarly for
+  <code class="Dv">ZIP_SOURCE_BEGIN_WRITE</code> or
+  <code class="Dv">ZIP_SOURCE_BEGIN_WRITE_CLONING</code> and
+  <code class="Dv">ZIP_SOURCE_COMMIT_WRITE</code> or
+  <code class="Dv">ZIP_SOURCE_ROLLBACK_WRITE</code>.
+<h1 class="Sh" id="RETURN_VALUES">RETURN VALUES</h1>
+Upon successful completion, the created source is returned. Otherwise,
+  <code class="Dv">NULL</code> is returned and the error code in
+  <var class="Ar">archive</var> or <var class="Ar">error</var> is set to
+  indicate the error (unless it is <code class="Dv">NULL</code>).
+<h1 class="Sh" id="ERRORS">ERRORS</h1>
+<b class="Fn">zip_source_function</b>() fails if:
+<dl class="Bl-tag" style="margin-left: 17.00ex;">
+  <dt class="It-tag" style="margin-left: -17.00ex;">&#160;</dt>
+  <dd class="It-tag">&#160;</dd>
+  <dt class="It-tag" style="margin-left: -17.00ex;">[<code class="Er">ZIP_ER_MEMORY</code>]</dt>
+  <dd class="It-tag">Required memory could not be allocated.</dd>
+</dl>
+<h1 class="Sh" id="SEE_ALSO">SEE ALSO</h1>
+<a class="Xr" href="libzip.html">libzip(3)</a>,
+  <a class="Xr" href="zip_add.html">zip_add(3)</a>,
+  <a class="Xr" href="zip_replace.html">zip_replace(3)</a>,
+  <a class="Xr" href="zip_source.html">zip_source(3)</a>,
+  <a class="Xr" href="zip_stat_init.html">zip_stat_init(3)</a>
+<h1 class="Sh" id="HISTORY">HISTORY</h1>
+<b class="Fn">zip_source_function</b>() and
+  <b class="Fn">zip_source_function_create</b>() were added in libzip 1.0.
+<h1 class="Sh" id="AUTHORS">AUTHORS</h1>
+<span class="An">Dieter Baron</span>
+  &lt;<a class="Mt" href="mailto:dillo@nih.at">dillo@nih.at</a>&gt; and
+  <span class="An">Thomas Klausner</span>
+  &lt;<a class="Mt" href="mailto:tk@giga.or.at">tk@giga.or.at</a>&gt;</div>
+<table class="foot">
+  <tr>
+    <td class="foot-date">December 18, 2017</td>
+    <td class="foot-os">NetBSD 8.99.14</td>
+  </tr>
+</table>
+</body>
+</html>