diff --git a/alloc.html b/alloc.html
index 8ae3bc4db0276f74e434d994bc257cb073965cbd..8ff13cff7774b89bdc280f2f1527becc8ce45ccc 100644
--- a/alloc.html
+++ b/alloc.html
@@ -59,4 +59,4 @@ be immediately overwritten, and/or reused by subsequent calls to
 <p><a name="note-realloc">*</a> <b>Compatibility note:</b> oop_realloc
 is only available in version 0.7 or newer.</p>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/how.html b/how.html
index f67edad07d7f9ececa94fc93ce0709d63ec8639c..a70f30476cf300f9a3eb44e56fe455417a8e5981 100644
--- a/how.html
+++ b/how.html
@@ -75,6 +75,6 @@ structure as their first argument; sources are expected to include their
 own data (in whatever format) with the core function pointers.  Callbacks
 are also C function pointers, with "void *" arguments to pass data.
 <p>
-For more about the liboop interface, see the <a href="ref">reference</a>.
+For more about the liboop interface, see the <a href="ref.html">reference</a>.
 
-<hr><a href="">liboop home</a></body></html>
+<hr><a href="index.html">liboop home</a></body></html>
diff --git a/index.html b/index.html
index 274fcffceedce66d511a61dcc6cf4e7b9c9f077e..ab4b0d2938640348f12acfae6e3abfa974b0630f 100644
--- a/index.html
+++ b/index.html
@@ -43,16 +43,22 @@ You may also browse the Git repository for
 <h3>Documentation.</h3>
 
 <dl>
-<dt><a href="why">Extended rationale</a>
+<dt><a href="why.html">Extended rationale</a>
 <dd>Why everyone should be using liboop.
-<dt><a href="how">Introduction and overview</a>
+<dt><a href="how.html">Introduction and overview</a>
 <dd>How liboop works; basic principles of operation.
-<dt><a href="ref">Reference</a>
+<dt><a href="ref.html">Reference</a>
 <dd>Specific functions and data structures.
 </dl>
 
 <h3>News.</h3>
 <dl>
+<dt>20 December 2016
+<dd>Version 1.0.1 released, including a few accumulated bug fixes and
+a new function oop_signal_new_flags(), with an additional flags
+argument to support use of the SA_RESTART option when signal handlers
+are registered.
+
 <dt>7 July 2010
 <dd>Dan Egnor transfers maintainership of liboop to Niels M�ller and
 Per Cederqvist.  The repository is converted to Git.  The web pages
@@ -72,26 +78,26 @@ system event source was fixed, the robustness of signal handling is improved,
 and some minor portability problems were fixed.<p>
 
 <dt>18 September 2001
-<dd>Version 0.8 released, including a <a href="oop_tcl">source adapter</a>
+<dd>Version 0.8 released, including a <a href="oop_tcl.html">source adapter</a>
 for <a href="http://www.purl.org/tcl/home/">Tcl/Tk</a>.  (0.7 was never
 announced.)<p>
 
 <dt>7 October 2000
-<dd>Version 0.6 released, including a <a href="oop_rl">sink adapter</a>
+<dd>Version 0.6 released, including a <a href="oop_rl.html">sink adapter</a>
 for the <a href="http://cnswww.cns.cwru.edu/~chet/readline/rltop.html">GNU
 Readline Library</a>.<p>
 
 <dt>5 September 1999
 <dd>Version 0.4 released.  Besides the usual bug fixes, the
-<a href="on_fd">file descriptor deregistration interface</a> changed, and we 
-now have a <a href="oop_glib">source adapter</a> for 
-<a href="http://gtk.org/">GLib</a>, and a <a href="oop_www">sink adapter</a>
+<a href="on_fd.html">file descriptor deregistration interface</a> changed, and we 
+now have a <a href="oop_glib.html">source adapter</a> for 
+<a href="http://gtk.org/">GLib</a>, and a <a href="oop_www.html">sink adapter</a>
 for the <a href="http://www.w3.org/Library/">W3C Protocol Library 
 (libwww)</a>!  The test/sample program (test-oop) is also quite improved.<p>
 
 <dt>15 August 1999
 <dd>Version 0.3 released.  This version includes an 
-<a href="oop_adns">adapter</a> for
+<a href="oop_adns.html">adapter</a> for
 <a href="http://www.chiark.greenend.org.uk/~ian/adns/">Ian Jackson's
 asynchronous DNS resolver library</a>.<p>
 
@@ -106,8 +112,8 @@ support distribution under the terms of the full GPL.</em><p>
 <a href="http://www.gnu.org/software/automake/automake.html">automake</a> and
 <a href="http://www.gnu.org/software/libtool/libtool.html">libtool</a>,
 and includes an interface for using
-<a href="alloc">alternate memory allocation functions</a>.
-<a href="">Gale</a> now uses liboop!<p>
+<a href="alloc.html">alternate memory allocation functions</a>.
+<a href="index.html">Gale</a> now uses liboop!<p>
 
 <dt>5 July 1999
 <dd>Version 0.1 released.  This is a very, very simple initial release that
diff --git a/on_fd.html b/on_fd.html
index 05717efe29078cff09efdfec7269a922ca8fa0bc..e5d7b91c4a3736c2b9fe74099cfca82783629e25 100644
--- a/on_fd.html
+++ b/on_fd.html
@@ -81,4 +81,4 @@ other value (including OOP_HALT) will cause termination of the event loop.
 <p><a name="note-exception">*</a> <b>Compatibility note:</b> OOP_EXCEPTION 
 is only available in version 0.7 or newer.</p>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/on_signal.html b/on_signal.html
index 3b8095605045d81d10000d20cb2be948b1ef4c04..ba381a26373517b476d91d8c7e18047af194441f 100644
--- a/on_signal.html
+++ b/on_signal.html
@@ -64,4 +64,4 @@ Should return OOP_CONTINUE if the event loop should continue operating; any
 other value (including OOP_HALT) will cause termination of the event loop.
 </dl>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/on_time.html b/on_time.html
index 7af54778fc9ca9b902441b2e79da3f911098b605..9d6db4a1b4908c3b0a3beaec87f10e03c98ce8e8 100644
--- a/on_time.html
+++ b/on_time.html
@@ -67,4 +67,4 @@ Should return OOP_CONTINUE if the event loop should continue operating; any
 other value (including OOP_HALT) will cause termination of the event loop.
 </dl>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/oop_adns.html b/oop_adns.html
index b6eb69b861d2bda228d1f325bb1cb96a662ed037..a823c8da7242b7d7fddb367703c827be4a66dd16 100644
--- a/oop_adns.html
+++ b/oop_adns.html
@@ -32,7 +32,7 @@ details.<p>
 
 <dt><b>oop_adapter_adns *adapter</b>
 <dd>An adns adapter to delete, with no outstanding 
-<a href="oop_adns_query">queries</a>.<p>
+<a href="oop_adns_query.html">queries</a>.<p>
 </dl>
 
 <h3>Description.</h3>
@@ -55,4 +55,4 @@ callbacks registered with the event source are cancelled.  The adapter can have
 no active queries when it is deleted.<p>
 </dl>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/oop_adns_query.html b/oop_adns_query.html
index 2785356354e7c2a6dce70844e75693b772bc2fea..28ebb3d7033455883618cdce531097bb69bcd356 100644
--- a/oop_adns_query.html
+++ b/oop_adns_query.html
@@ -28,7 +28,7 @@ void oop_adns_cancel(oop_adns_query *query);
 
 <dl>
 <dt><b>oop_adapter_adns *adns</b>
-<dd>The <a href="oop_adns">adns adapter</a> to use for the query.<p>
+<dd>The <a href="oop_adns.html">adns adapter</a> to use for the query.<p>
 
 <dt><b>adns_answer *answer</b>
 <dd>The answer to the query (status and RR data).  Refer to the adns 
@@ -91,4 +91,4 @@ Should return OOP_CONTINUE if the event loop should continue operating;
 any other value (including OOP_HALT) will cause termination of the event loop.
 </dl>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/oop_glib.html b/oop_glib.html
index 482bf49bf6413ee6b3594bf129693be90eb87224..ecf3a9f004b715aec094cc99fa023666f7529236 100644
--- a/oop_glib.html
+++ b/oop_glib.html
@@ -45,4 +45,4 @@ This function isn't commonly used.  <b>Furthermore, GLib event loop termination
 does not currently work.</b>  In other words, ignore this for now.
 </dl>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/oop_rl.html b/oop_rl.html
index 2eb3b8a454d633a41039b92c274a98ff4fceea31..56a26f68c0cefd824254354297951c35ae06dd62 100644
--- a/oop_rl.html
+++ b/oop_rl.html
@@ -44,4 +44,4 @@ liboop.<p>
 rl_readback_read_char() will no longer be invoked automatically.<p>
 </dl>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/oop_sys.html b/oop_sys.html
index d17bebe57961398abe7a74858a5af2d0f96a981a..f0f3b22fc4aabc74cde49877d1b3907a3ccdffac 100644
--- a/oop_sys.html
+++ b/oop_sys.html
@@ -27,10 +27,10 @@ void oop_sys_delete(oop_source_sys *sys);
 <dt><b>oop_sys_new</b>
 <dd>Create a new system event source.  The system event source implements the
 event source interface and manages a select() loop.  Once the system event
-source is created, use <a href="oop_sys_source">oop_sys_source()</a> to
+source is created, use <a href="oop_sys_source.html">oop_sys_source()</a> to
 access the event source interface (which lets you register event sinks), and 
-<a href="oop_sys_run">oop_sys_run()</a> or
-<a href="oop_sys_run">oop_sys_run_once()</a> to actually process events.
+<a href="oop_sys_run.html">oop_sys_run()</a> or
+<a href="oop_sys_run.html">oop_sys_run_once()</a> to actually process events.
 More than one system event source can exist, though it is rarely useful to do
 so (since only one may be active at a time).<p>
 
@@ -43,4 +43,4 @@ associated with the event source.  The source cannot have any active callbacks
 (event sinks) associated with it.<p>
 </dl>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/oop_sys_run.html b/oop_sys_run.html
index b7c1311f7c1d7640b457311cebb0ad400e907eed..6908e161679433d2b702855300a7feee16bd04e2 100644
--- a/oop_sys_run.html
+++ b/oop_sys_run.html
@@ -42,4 +42,4 @@ immediately after processing any pending results.  The return values are the
 same as oop_sys_run(), except that a return of OOP_CONTINUE does not 
 necessarily mean that no event sinks are registered.<p>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/oop_sys_source.html b/oop_sys_source.html
index 2fb3e467102696f4ce60ee032c7e7f35b4b61e23..c228c6d7f73360ed46b9b51c7375e4266bc7d07c 100644
--- a/oop_sys_source.html
+++ b/oop_sys_source.html
@@ -27,4 +27,4 @@ function pointers for registering and unregistering callbacks with the event
 source; you can pass it to modules which simply want an event source, without 
 needing to know that you use the system event source in particular.<p>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/oop_tcl.html b/oop_tcl.html
index e2598f3d2d8e22dac9d56512212baaa50bb486d7..82415b864ac9a971f5eb08a16a6b668afd68aa24 100644
--- a/oop_tcl.html
+++ b/oop_tcl.html
@@ -35,4 +35,4 @@ count of users; when oop_tcl_delete has been called as many times as
 oop_tcl_new, the event source is removed.<p>
 </dl>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/oop_www.html b/oop_www.html
index e36f49cfb9b9363ee5c33bd0434eafe0cc72ab0e..eff32fa78d23c3362ce688e7b718e1fe60337f35 100644
--- a/oop_www.html
+++ b/oop_www.html
@@ -48,11 +48,11 @@ connections to Web servers, which may cause events to be registered even if
 there are no open requests.)<p>
 
 <dt><b>oop_www_memory</b>
-<dd>Set <a href="alloc">oop_malloc, oop_realloc, and oop_free</a> to
+<dd>Set <a href="alloc.html">oop_malloc, oop_realloc, and oop_free</a> to
 <a href="http://www.w3.org/Library/src/HTMemory.html">HTMemory_malloc
 and HTMemory_free</a>, respectively.  You do not need to do this, but it 
 may help to keep your memory allocations consistent with the libwww 
 framework.  If you do this, do so before calling any other liboop functions.
 </dl>
 
-<hr><a href="ref">liboop reference</a></body></html>
+<hr><a href="ref.html">liboop reference</a></body></html>
diff --git a/ref.html b/ref.html
index c9bb42b45f9021cc48aac11de89761dddcc24a5e..bc5719957c40c5755f2da26c300a398d2ba1f2a1 100644
--- a/ref.html
+++ b/ref.html
@@ -12,23 +12,23 @@
 #include &lt;oop.h&gt;
 
 /* <em>Applications can set these; liboop libraries will use them.</em> */
-extern void *(*<a href="alloc">oop_malloc</a>)(size_t); /* <em>returns NULL on failure</em> */
-extern void *(*<a href="alloc">oop_realloc</a>)(void *,size_t); /* <em>returns NULL on failure</em> */
-extern void (*<a href="alloc">oop_free</a>)(void *);
+extern void *(*<a href="alloc.html">oop_malloc</a>)(size_t); /* <em>returns NULL on failure</em> */
+extern void *(*<a href="alloc.html">oop_realloc</a>)(void *,size_t); /* <em>returns NULL on failure</em> */
+extern void (*<a href="alloc.html">oop_free</a>)(void *);
 
 typedef struct oop_source oop_source;
 struct oop_source {
     /* <em>File descriptor activity events.</em> */
-    void (*<a href="on_fd">on_fd</a>)(oop_source *,int fd,oop_event,oop_call_fd *,void *);
-    void (*<a href="on_fd">cancel_fd</a>)(oop_source *,int fd,oop_event);
+    void (*<a href="on_fd.html">on_fd</a>)(oop_source *,int fd,oop_event,oop_call_fd *,void *);
+    void (*<a href="on_fd.html">cancel_fd</a>)(oop_source *,int fd,oop_event);
 
     /* <em>Timer events.</em> */
-    void (*<a href="on_time">on_time</a>)(oop_source *,struct timeval,oop_call_time *,void *);
-    void (*<a href="on_time">cancel_time</a>)(oop_source *,struct timeval,oop_call_time *,void *);
+    void (*<a href="on_time.html">on_time</a>)(oop_source *,struct timeval,oop_call_time *,void *);
+    void (*<a href="on_time.html">cancel_time</a>)(oop_source *,struct timeval,oop_call_time *,void *);
 
     /* <em>UNIX signal events.</em> */
-    void (*<a href="on_signal">on_signal</a>)(oop_source *,int sig,oop_call_signal *,void *);
-    void (*<a href="on_signal">cancel_signal</a>)(oop_source *,int sig,oop_call_signal *,void *);
+    void (*<a href="on_signal.html">on_signal</a>)(oop_source *,int sig,oop_call_signal *,void *);
+    void (*<a href="on_signal.html">cancel_signal</a>)(oop_source *,int sig,oop_call_signal *,void *);
 };
 </pre>
 
@@ -38,15 +38,15 @@ struct oop_source {
 typedef struct oop_source_sys oop_source_sys;
 
 /* <em>Create and destroy a system event source.</em> */
-oop_source_sys *<a href="oop_sys">oop_sys_new</a>(void); /* <em>returns NULL on failure</em> */
-void <a href="oop_sys">oop_sys_delete</a>(oop_source_sys *);
+oop_source_sys *<a href="oop_sys.html">oop_sys_new</a>(void); /* <em>returns NULL on failure</em> */
+void <a href="oop_sys.html">oop_sys_delete</a>(oop_source_sys *);
 
 /* <em>Run the system event loop.</em> */
-void *<a href="oop_sys_run">oop_sys_run</a>(oop_source_sys *);
-void *<a href="oop_sys_run">oop_sys_run_once</a>(oop_source_sys *);
+void *<a href="oop_sys_run.html">oop_sys_run</a>(oop_source_sys *);
+void *<a href="oop_sys_run.html">oop_sys_run_once</a>(oop_source_sys *);
 
 /* <em>Get the standard source interface for a system event source.</em> */
-oop_source *<a href="oop_sys_source">oop_sys_source</a>(oop_source_sys *);
+oop_source *<a href="oop_sys_source.html">oop_sys_source</a>(oop_source_sys *);
 </pre>
 
 <hr>
@@ -65,17 +65,17 @@ typedef struct oop_adapter_adns oop_adapter_adns;
 typedef struct oop_adns_query oop_adns_query;
 
 /* <em>Create and destroy a liboop adns adapter, including an instance of adns.</em> */
-oop_adapter_adns *<a href="oop_adns">oop_adns_new</a>(oop_source *,adns_initflags,FILE *diag); /* <em>returns NULL on failure</em> */
-void <a href="oop_adns">oop_adns_delete</a>(oop_adapter_adns *);
+oop_adapter_adns *<a href="oop_adns.html">oop_adns_new</a>(oop_source *,adns_initflags,FILE *diag); /* <em>returns NULL on failure</em> */
+void <a href="oop_adns.html">oop_adns_delete</a>(oop_adapter_adns *);
 
 /* <em>Submit an asynchronous DNS query.</em> */
-oop_adns_query *<a href="oop_adns_query">oop_adns_submit</a>( /* <em>returns NULL on failure</em> */
+oop_adns_query *<a href="oop_adns_query.html">oop_adns_submit</a>( /* <em>returns NULL on failure</em> */
         oop_adapter_adns *,
         const char *owner,adns_rrtype type,adns_queryflags flags,
         oop_adns_call *,void *);
 
 /* <em>Cancel a running query.</em> */
-void <a href="oop_adns_query">oop_adns_cancel</a>(oop_adns_query *);
+void <a href="oop_adns_query.html">oop_adns_cancel</a>(oop_adns_query *);
 </pre>
 
 <hr>
@@ -90,11 +90,11 @@ and licensed under the terms of the
 #include &lt;oop-glib.h&gt;
 
 /* <em>Create and destroy a liboop GLib adapter.</em> */
-oop_source *<a href="oop_glib">oop_glib_new</a>();
-void <a href="oop_glib">oop_glib_delete</a>();
+oop_source *<a href="oop_glib.html">oop_glib_new</a>();
+void <a href="oop_glib.html">oop_glib_delete</a>();
 
 /* <em>Get the value used to terminate the event loop (e.g. OOP_HALT)</em>. */
-void *<a href="oop_glib">oop_glib_return</a>();
+void *<a href="oop_glib.html">oop_glib_return</a>();
 </pre>
 
 <hr>
@@ -108,8 +108,8 @@ Sun Microsystems, Inc., and other parties.</em></p>
 #include &lt;oop-tcl.h&gt;
 
 /* <em>Create and destroy a liboop Tcl adapter.</em> */
-oop_source *<a href="oop_tcl">oop_tcl_new</a>();
-void <a href="oop_tcl">oop_tcl_delete</a>();
+oop_source *<a href="oop_tcl.html">oop_tcl_new</a>();
+void <a href="oop_tcl.html">oop_tcl_delete</a>();
 </pre>
 
 <hr>
@@ -126,15 +126,15 @@ Software License</a>.</em></p>
 #include &lt;oop-www.h&gt;
 
 /* <em>Register a liboop event source as a libwww "event manager".</em> */
-void <a href="oop_www">oop_www_register</a>(oop_source *);
+void <a href="oop_www.html">oop_www_register</a>(oop_source *);
 
 /* <em>Unregister the event source, leaving libwww with no event manager.
    This function cannot be executed with outstanding event requests.</em> */
-void <a href="oop_www">oop_www_cancel</a>();
+void <a href="oop_www.html">oop_www_cancel</a>();
 
 /* <em>Use libwww for liboop's oop_malloc, oop_realloc, and oop_free.
    <b>If you use this, you must call it before any other liboop function!</b></em> */
-void <a href="oop_www">oop_www_memory</a>();
+void <a href="oop_www.html">oop_www_memory</a>();
 </pre>
 
 <hr>
@@ -151,10 +151,10 @@ Lesser GPL, Readline is covered by the
 /* <em>Use a liboop event source to call rl_callback_read_char().
    It is up to you to call rl_callback_handler_install().
    Note well that Readline uses malloc(), not oop_malloc().</em> */
-void <a href="oop_rl">oop_readline_register</a>(oop_source *);
+void <a href="oop_rl.html">oop_readline_register</a>(oop_source *);
 
 /* <em>Stop notifying readline of input characters.</em> */
-void <a href="oop_rl">oop_readline_cancel</a>(oop_source *);
+void <a href="oop_rl.html">oop_readline_cancel</a>(oop_source *);
 </pre>
 
-<hr><a href="">liboop home</a></body></html>
+<hr><a href="index.html">liboop home</a></body></html>
diff --git a/why.html b/why.html
index 038d70ceecd9f025d91eb9711b9bb8df6d5d864f..1b8ab3a465c07ab3bd7fe8bc943e0d53788b86ec 100644
--- a/why.html
+++ b/why.html
@@ -88,7 +88,7 @@ model of an application or library into liboop's model.  This does require
 knowledge of the code's I/O structure, but can at least keep the modules in
 an application independent of each other.
 <p>
-For more about liboop, see the <a href="how">documentation</a>.
+For more about liboop, see the <a href="how.html">documentation</a>.
 
 <h4>Q&amp;A</h4>
 
@@ -114,7 +114,7 @@ of asynchronous signals is very difficult to do properly and safely in most
 existing systems (without kludges like polling).
 
 <p>In any case, we do have a
-<a href="oop_glib">GLib source adapter</a> so you can use the GLib event loop
+<a href="oop_glib.html">GLib source adapter</a> so you can use the GLib event loop
 with the liboop interface.</p>
 
 <dt><em>How does liboop compare to Niels Provos' <a 
@@ -133,4 +133,4 @@ If anyone is interested in such an adapter, please contact me.</p>
 
 </dl>
 
-<hr><a href="">liboop home</a></body></html>
+<hr><a href="index.html">liboop home</a></body></html>