Use GNU/Linux when referring to the OS instead of the kernel
[privoxy.git] / doc / source / user-manual.sgml
index e0ec372..8008218 100644 (file)
@@ -13,7 +13,7 @@
 <!entity p-authors SYSTEM "p-authors.sgml">
 <!entity config SYSTEM "p-config.sgml">
 <!entity changelog SYSTEM "changelog.sgml">
-<!entity p-version "3.0.25">
+<!entity p-version "3.0.27">
 <!entity p-status "UNRELEASED">
 <!entity % p-authors-formal "INCLUDE"> <!-- include additional text, etc  -->
 <!entity % p-not-stable "INCLUDE">
 <!entity  my-app "<application>Privoxy</application>">
 ]>
 <!--
- File        :  $Source: /cvsroot/ijbswa/current/doc/source/user-manual.sgml,v $
+ File        :  doc/source/user-manual.sgml
 
  Purpose     :  user manual
-                This file belongs into
-                ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/
 
- $Id: user-manual.sgml,v 2.205 2016/03/17 10:42:54 fabiankeil Exp $
-
- Copyright (C) 2001-2014 Privoxy Developers http://www.privoxy.org/
+ Copyright (C) 2001-2018 Privoxy Developers https://www.privoxy.org/
  See LICENSE.
 
  ========================================================================
  <subscript>
 <!-- Completely the wrong markup, but very little is allowed  -->
 <!-- in this part of an article. FIXME -->
- <link linkend="copyright">Copyright</link> &my-copy; 2001-2014 by
- <ulink url="http://www.privoxy.org/">Privoxy Developers</ulink>
+ <link linkend="copyright">Copyright</link> &my-copy; 2001-2018 by
+ <ulink url="https://www.privoxy.org/">Privoxy Developers</ulink>
  </subscript>
 </pubdate>
 
-<pubdate>$Id: user-manual.sgml,v 2.205 2016/03/17 10:42:54 fabiankeil Exp $</pubdate>
-
 <!--
 
 Note: the following should generate a separate page, and a live link to it,
@@ -92,7 +86,7 @@ Hal.
  <para>
   The <citetitle>Privoxy User Manual</citetitle> gives users information on how to
   install, configure and use <ulink
-  url="http://www.privoxy.org/">Privoxy</ulink>.
+  url="https://www.privoxy.org/">Privoxy</ulink>.
  </para>
 
 <!-- Include privoxy.sgml boilerplate: -->
@@ -101,14 +95,11 @@ Hal.
 
  <para>
   You can find the latest version of the <citetitle>Privoxy User Manual</citetitle> at  <ulink
-  url="http://www.privoxy.org/user-manual/">http://www.privoxy.org/user-manual/</ulink>.
+  url="https://www.privoxy.org/user-manual/">https://www.privoxy.org/user-manual/</ulink>.
   Please see the <link linkend="contact">Contact section</link> on how to
   contact the developers.
  </para>
 
-<!--   <para> -->
-<!--    Feel free to send a note to the developers at <email>ijbswa-developers@lists.sourceforge.net</email>. -->
-<!--   </para> -->
 </abstract>
 
 </artheader>
@@ -162,7 +153,7 @@ Hal.
  <application>Privoxy</application> is available both in convenient pre-compiled
  packages for a wide range of operating systems, and as raw source code.
  For most users, we recommend using the packages, which can be downloaded from our
- <ulink url="http://sourceforge.net/projects/ijbswa/">Privoxy Project
+ <ulink url="https://sourceforge.net/projects/ijbswa/">Privoxy Project
  Page</ulink>.
 </para>
 
@@ -244,7 +235,6 @@ How to install the binary packages depends on your operating system:
  system. Check that no <application>Junkbuster</application>
  or <application>Privoxy</application> objects are in
  your startup folder.
-
 </para>
 
 <para>
@@ -349,38 +339,163 @@ How to install the binary packages depends on your operating system:
 <sect2 id="installation-source"><title>Building from Source</title>
 
 <para>
- The most convenient way to obtain the <application>Privoxy</application> sources
- is to download the source tarball from our
- <ulink url="http://sourceforge.net/project/showfiles.php?group_id=11118&amp;package_id=10571">project download
- page</ulink>.
-</para>
-
-<para>
- If you like to live on the bleeding edge and are not afraid of using
- possibly unstable development versions, you can check out the up-to-the-minute
- version directly from <ulink url="http://sourceforge.net/cvs/?group_id=11118">the
- CVS repository</ulink>.
-<!--
- deprecated...out of business.
- or simply download <ulink
- url="http://cvs.sourceforge.net/cvstarballs/ijbswa-cvsroot.tar.bz2">the nightly CVS
- tarball.</ulink>
--->
+ The most convenient way to obtain the <application>Privoxy</application> source
+ code is to download the source tarball from our
+ <ulink url="https://sourceforge.net/projects/ijbswa/files/Sources/">
+    project download page</ulink>,
+ or you can get the up-to-the-minute, possibly unstable, development version from
+ <ulink url="https://www.privoxy.org/">https://www.privoxy.org/</ulink>.
 </para>
 
 <!-- include buildsource.sgml boilerplate: -->
 &buildsource;
 <!-- end boilerplate -->
 
+
+    <sect3 id="WINBUILD-CYGWIN"><title>Windows</title>
+
+    <sect4 id="WINBUILD-SETUP"><title>Setup</title>
+      <para>
+        Install the Cygwin utilities needed to build <application>Privoxy</application>.
+        If you have a 64 bit CPU (which most people do by now), get the
+        Cygwin setup-x86_64.exe program <ulink url="https://cygwin.com/setup-x86_64.exe">here</ulink>
+        (the .sig file is <ulink url="https://cygwin.com/setup-x86_64.exe.sig">here</ulink>).
+      </para>
+      <para>
+        Run the setup program and from View / Category select:
+      </para>
+      <screen>
+  Devel
+    autoconf 2.5
+    automake 1.15
+    binutils
+    cmake
+    gcc-core
+    gcc-g++
+    git
+    make
+    mingw64-i686-gcc-core
+    mingw64-i686-zlib
+  Editors
+    vim
+  Libs
+    libxslt: GNOME XSLT library (runtime)
+  Net
+    curl
+    openssh
+  Text
+    docbook-dssl
+    docbook-sgml31
+    docbook-utils
+    openjade
+  Utils
+    gnupg
+  Web
+    w3m
+</screen>
+
+      <para>
+        If you haven't already downloaded the Privoxy source code, get it now:
+      </para>
+      <screen>
+  mkdir &lt;root-dir>
+  cd &lt;root-dir>
+  git clone https://www.privoxy.org/git/privoxy.git
+</screen>
+
+      <para>
+        Get the source code (.zip or .tar.gz) for tidy from
+        <ulink url="https://github.com/htacg/tidy-html5/releases">
+                    https://github.com/htacg/tidy-html5/releases</ulink>,
+        unzip into &lt;root-dir> and build the software:
+      </para>
+      <screen>
+  cd &lt;root-dir>
+  cd tidy-html5-x.y.z/build/cmake
+  cmake ../.. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIB:BOOL=OFF -DCMAKE_INSTALL_PREFIX=/usr/local
+  make && make install
+</screen>
+
+      <para>
+        If you want to be able to make a Windows release package, get the NSIS .zip file from
+            <!-- FIXME:  which version(s) are known to work? -->
+        <ulink url="https://sourceforge.net/projects/nsis/files/NSIS%203/">
+                    https://sourceforge.net/projects/nsis/files/NSIS%203/</ulink>
+        and extract the NSIS directory to <literal>privoxy/windows</literal>.
+        Then edit the windows/GNUmakefile to set the location of the NSIS executable - eg:
+      </para>
+      <screen>
+# Path to NSIS
+MAKENSIS = ./nsis/makensis.exe
+</screen>
+
+      </sect4>
+
+      <sect4 id="WINBUILD-BUILD"><title>Build</title>
+
+      <para>
+        To build just the Privoxy executable and not the whole installation package, do:
+      </para>
+      <programlisting>
+  cd &lt;root-dir>/privoxy
+  ./windows/MYconfigure && make
+</programlisting>
+
+      <para>
+        Privoxy uses the <ulink url="https://en.wikipedia.org/wiki/GNU_build_system">GNU Autotools</ulink>
+        for building software, so the process is:
+      </para>
+      <programlisting>
+  $ autoheader              # creates config.h.in
+  $ autoconf                # uses config.h.in to create the configure shell script
+  $ ./configure [options]   # creates GNUmakefile
+  $ make        [options]   # builds the program
+</programlisting>
+
+      <para>
+        The usual <literal>configure</literal> options for building a native Windows application under cygwin are
+      </para>
+
+      <literallayout class="Monospaced">
+  --host=i686-w64-mingw32
+  --enable-mingw32
+  --enable-zlib
+  --enable-static-linking
+  --disable-pthread
+  --disable-dynamic-pcre
+</literallayout>
+
+      <para>
+        You can set the <literal>CFLAGS</literal> and <literal>LDFLAGS</literal> envars before
+        running <literal>configure</literal> to set compiler and linker flags.  For example:
+      </para>
+
+      <programlisting>
+  $ export CFLAGS="-O2"              # set gcc optimization level
+  $ export LDFLAGS="-Wl,--nxcompat"  # Enable DEP
+  $ ./configure --host=i686-w64-mingw32 --enable-mingw32  --enable-zlib \
+  >             --enable-static-linking --disable-pthread --disable-dynamic-pcre
+  $ make                             # build Privoxy
+</programlisting>
+
+      <para>
+        See the <ulink url="../developer-manual/newrelease.html#NEWRELEASE-WINDOWS">Developer's Manual</ulink>
+        for building a Windows release package.
+      </para>
+
+    </sect4>
+    </sect3>
 </sect2>
+
+
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect2 id="installation-keepupdated"><title>Keeping your Installation Up-to-Date</title>
 
 <para>
  If you wish to receive an email notification whenever we release updates of
  <application>Privoxy</application> or the actions file, <ulink
- url="http://lists.sourceforge.net/lists/listinfo/ijbswa-announce/">subscribe
- to our announce  mailing list</ulink>, ijbswa-announce@lists.sourceforge.net.
+ url="https://lists.privoxy.org/mailman/listinfo/privoxy-announce">subscribe
+ to our announce mailing list</ulink>, privoxy-announce@lists.privoxy.org.
 </para>
 
 <para>
@@ -415,7 +530,6 @@ How to install the binary packages depends on your operating system:
  versions of <application>Privoxy</application>:
 </para>
 
-<para>
  <itemizedlist>
 
  <listitem>
@@ -500,11 +614,9 @@ How to install the binary packages depends on your operating system:
     that filtering does not work on compressed pages, so if you use, or want to
     use, filtering, you will need to force compression off. Example:
    </para>
-   <para>
  <screen>
   { +<link linkend="filter">filter</link>{google}  +<link linkend="prevent-compression">prevent-compression</link> }
    .google.</screen>
-   </para>
    <para>
     Or if you use a number of filters, or filter many sites, you may just want
     to turn off compression for all sites in
@@ -532,14 +644,13 @@ How to install the binary packages depends on your operating system:
 -->
 
  </itemizedlist>
-</para>
 
 </sect2>
 </sect1>
 
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect1 id="quickstart"><title>Quickstart to Using Privoxy</title>
-<para>
+
  <itemizedlist>
 
  <listitem>
@@ -639,7 +750,6 @@ How to install the binary packages depends on your operating system:
  </listitem>
 
  </itemizedlist>
-</para>
 
 
 <!--   ~~~~~       New section      ~~~~~     -->
@@ -716,7 +826,6 @@ How to install the binary packages depends on your operating system:
  <literal><link linkend="set-image-blocker">set-image-blocker</link></literal>:
 </para>
 
-<para>
  <itemizedlist>
 
  <listitem>
@@ -791,7 +900,6 @@ How to install the binary packages depends on your operating system:
   </listitem>
 
 </itemizedlist>
-</para>
 
 <para>
  Advanced users will eventually want to explore &my-app;
@@ -837,7 +945,6 @@ How to install the binary packages depends on your operating system:
  A quick and simple step by step example:
 </para>
 
-<para>
  <itemizedlist>
 
   <listitem>
@@ -861,7 +968,6 @@ How to install the binary packages depends on your operating system:
    </para>
 
  <!-- image of editor and actions files selections -->
- <para>
   <figure pgwide="0" float="0"><title>Actions Files in Use</title>
    <mediaobject>
      <imageobject>
@@ -872,7 +978,6 @@ How to install the binary packages depends on your operating system:
       </textobject>
    </mediaobject>
   </figure>
- </para>
  </listitem>
 
  <listitem>
@@ -907,7 +1012,6 @@ How to install the binary packages depends on your operating system:
  </listitem>
 
  </itemizedlist>
-</para>
 
 <para>
  This is a very crude and simple example. There might be good reasons to use a
@@ -955,7 +1059,6 @@ How to install the binary packages depends on your operating system:
 </para>
 
  <!-- image of Mozilla Proxy configuration -->
- <para>
   <figure pgwide="0" float="0"><title>Proxy Configuration Showing
   Mozilla/Netscape HTTP and HTTPS (SSL) Settings</title>
    <mediaobject>
@@ -967,7 +1070,6 @@ How to install the binary packages depends on your operating system:
       </textobject>
    </mediaobject>
   </figure>
- </para>
 
 
 <para>
@@ -976,7 +1078,6 @@ How to install the binary packages depends on your operating system:
 
 <literallayout>
  <guibutton>Tools</guibutton> -> <guibutton>Options</guibutton> ->  <guibutton>Advanced</guibutton> -> <guibutton>Network</guibutton> -><guibutton>Connection</guibutton> -> <guibutton>Settings</guibutton>
-
 </literallayout>
 
 <para>
@@ -985,7 +1086,6 @@ How to install the binary packages depends on your operating system:
 
 <literallayout>
  <guibutton>Edit</guibutton> -> <guibutton>Preferences</guibutton> -> <guibutton>General</guibutton> -> <guibutton>Connection Settings</guibutton> -> <guibutton>Manual Proxy Configuration</guibutton>
-
 </literallayout>
 
 
@@ -999,7 +1099,6 @@ How to install the binary packages depends on your operating system:
 <!-- Mix ascii and gui art, something for everybody -->
 <!-- spacing on this is tricky -->
  <guibutton>Edit</guibutton> -> <guibutton>Preferences</guibutton> -> <guibutton>Advanced</guibutton> -> <guibutton>Proxies</guibutton> -> <guibutton>HTTP Proxy</guibutton>
-
 </literallayout>
 
 <para>
@@ -1019,7 +1118,6 @@ How to install the binary packages depends on your operating system:
 </para>
 
  <!-- image of IE Proxy configuration -->
- <para>
   <figure pgwide="0" float="0"><title>Proxy Configuration Showing
   Internet Explorer HTTP and HTTPS (Secure) Settings</title>
    <mediaobject>
@@ -1031,7 +1129,6 @@ How to install the binary packages depends on your operating system:
       </textobject>
    </mediaobject>
   </figure>
- </para>
 
 
 <para>
@@ -1059,11 +1156,9 @@ How to install the binary packages depends on your operating system:
  <filename>/etc/privoxy/config</filename> as its main configuration
  file.
 </para>
-<para>
  <screen>
  # /etc/init.d/privoxy start
 </screen>
-</para>
 </sect2>
 
 <sect2 id="start-freebsd">
@@ -1082,11 +1177,9 @@ How to install the binary packages depends on your operating system:
 <para>
  To start <application>Privoxy</application> manually, run:
 </para>
-<para>
  <screen>
  # service privoxy onestart
 </screen>
-</para>
 </sect2>
 
 <sect2 id="start-windows">
@@ -1112,11 +1205,9 @@ Click on the &my-app; Icon to start <application>Privoxy</application>. If no co
 <para>
 Example Unix startup command:
 </para>
-<para>
  <screen>
  # /usr/sbin/privoxy --user privoxy /etc/privoxy/config
 </screen>
-</para>
 <para>
  Note that if you installed <application>Privoxy</application> through
  a package manager, the package will probably contain a platform-specific
@@ -1263,7 +1354,6 @@ must find a better place for this paragraph
  command-line options:
 </para>
 
-<para>
  <itemizedlist>
 
  <listitem>
@@ -1379,7 +1469,6 @@ must find a better place for this paragraph
  </listitem>
 
  </itemizedlist>
-</para>
 
 <para>
  On <application>MS Windows</application> only there are two additional
@@ -1416,14 +1505,12 @@ for details.
  (shortcut: <ulink url="http://p.p/">http://p.p/</ulink>),
  which is a built-in page and works without Internet access.
  You will see the following section:
-
 </para>
 
 <!-- Needs to be put in a table and colorized  -->
-<screen>
+<screen><!-- want the background color that goes with screen -->
  <msgtext>
  <bridgehead renderas="sect2">&nbsp;&nbsp;&nbsp;&nbsp;Privoxy Menu</bridgehead>
-
  <simplelist>
  <member>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink url="http://config.privoxy.org/show-status">View & change the current configuration</ulink>
@@ -1442,7 +1529,7 @@ for details.
  </member>
  <member>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&squf;&nbsp;&nbsp;<ulink
-  url="http://www.privoxy.org/&p-version;/user-manual/">Documentation</ulink>
+  url="https://www.privoxy.org/&p-version;/user-manual/">Documentation</ulink>
  </member>
  </simplelist>
  </msgtext>
@@ -1487,9 +1574,9 @@ for details.
 <sect2 id="confoverview">
 <title>Configuration Files Overview</title>
 <para>
- For Unix, *BSD and Linux, all configuration files are located in
- <filename>/etc/privoxy/</filename> by default. For MS Windows, OS/2, and
AmigaOS these are all in the same directory as the
+ For Unix, *BSD and GNU/Linux, all configuration files are located in
+ <filename>/etc/privoxy/</filename> by default. For MS Windows and OS/2
+ these are all in the same directory as the
  <application>Privoxy</application> executable. <![%p-not-stable;[ The name
  and number of configuration files has changed from previous versions, and is
  subject to change as development progresses.]]>
@@ -1501,13 +1588,12 @@ for details.
  principle configuration files are:
 </para>
 
-<para>
  <itemizedlist>
 
   <listitem>
    <para>
      The <link linkend="config">main configuration file</link> is named <filename>config</filename>
-     on Linux, Unix, BSD, OS/2, and AmigaOS and <filename>config.txt</filename>
+     on GNU/Linux, Unix, BSD, and OS/2, and <filename>config.txt</filename>
      on Windows. This is a required file.
    </para>
   </listitem>
@@ -1559,7 +1645,6 @@ for details.
   </listitem>
 
  </itemizedlist>
-</para>
 
 <para>
  The syntax of the configuration and filter files may change between different
@@ -1645,7 +1730,6 @@ for details.
  are three action files included with <application>Privoxy</application> with
  differing purposes:
 </para>
-<para>
  <itemizedlist>
   <listitem>
    <para>
@@ -1708,7 +1792,6 @@ for details.
     The default profiles, and their associated actions, as pre-defined in
     <filename>default.action</filename> are:
    </para>
-   <para>
     <table frame=all><title>Default Configurations</title>
     <tgroup cols=4 align=left colsep=1 rowsep=1>
     <colspec colname=c1>
@@ -1826,11 +1909,9 @@ for details.
     </tbody>
     </tgroup>
     </table>
-    </para>
 
   </listitem>
  </itemizedlist>
-</para>
 
 <para>
  The list of actions files to be used are defined in the main configuration
@@ -1954,14 +2035,12 @@ for details.
  might look like:
 </para>
 
- <para>
  <screen>
   { +<literal>handle-as-image</literal>  +<literal>block{Banner ads.}</literal> }
   # Block these as if they were images. Send no block page.
    banners.example.com
    media.example.com/.*banners
    .example.com/images/ads/</screen>
- </para>
 
 <para>
  You can trace this process for URL patterns and any given URL by visiting <ulink
@@ -2281,7 +2360,7 @@ for details.
     This regular expression is conditional so it will match any page
     named <quote>index.html</quote> regardless of path which in this case can
     have one or more <quote>/'s</quote>. And this one must contain exactly
-    <quote>.html</quote> (but does not have to end with that!).
+    <quote>.html</quote> (and end with that!).
    </para>
   </listitem>
  </varlistentry>
@@ -2293,6 +2372,7 @@ for details.
     that contains any of the words <quote>ads</quote>, <quote>banner</quote>,
     <quote>banners</quote> (because of the <quote>?</quote>) or <quote>junk</quote>.
     The path does not have to end in these words, just contain them.
+    The path has to contain at least two slashes (including the one at the beginning).
    </para>
   </listitem>
  </varlistentry>
@@ -2393,6 +2473,7 @@ for details.
  are checked after all server headers are scanned. In both cases all the created
  tags are considered.
 </para>
+</sect3>
 
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect3 id="client-tag-pattern"><title>The Client Tag Pattern</title>
@@ -2429,14 +2510,13 @@ for details.
 </para>
 <para>
  Clients can request tags to be set by using the CGI interface <ulink
-  url="http://config.privoxy.org/show-client-tags">http://config.privoxy.org/show-client-tags</ulink>.
+  url="http://config.privoxy.org/client-tags">http://config.privoxy.org/client-tags</ulink>.
 </para>
 
 <para>
  Example:
 </para>
 
-<para>
  <screen>
 # If the admin defined the client-specific-tag circumvent-blocks,
 # and the request comes from a client that previously requested
@@ -2449,7 +2529,8 @@ CLIENT-TAG:^circumvent-blocks$
 # the previous one.
 {+block{Nobody is supposed to request this.}}
 example.org/blocked-example-page</screen>
-</para>
+
+</sect3>
 
 </sect2>
 
@@ -2469,7 +2550,6 @@ example.org/blocked-example-page</screen>
  following patterns</quote>, and <literal>-block</literal> means <quote>don't
  block URLs that match the following patterns, even if <literal>+block</literal>
  previously applied.</quote>
-
 </para>
 
 <para>
@@ -2485,18 +2565,15 @@ example.org/blocked-example-page</screen>
  Actions fall into three categories:
 </para>
 
-<para>
  <itemizedlist>
  <listitem>
   <para>
    Boolean, i.e the action can only be <quote>enabled</quote> or
    <quote>disabled</quote>. Syntax:
   </para>
-  <para>
    <screen>
   +<replaceable class="function">name</replaceable>        # enable action <replaceable class="parameter">name</replaceable>
   -<replaceable class="function">name</replaceable>        # disable action <replaceable class="parameter">name</replaceable></screen>
-  </para>
   <para>
    Example: <literal>+handle-as-image</literal>
   </para>
@@ -2508,12 +2585,10 @@ example.org/blocked-example-page</screen>
    Parameterized, where some value is required in order to enable this type of action.
    Syntax:
   </para>
-  <para>
    <screen>
   +<replaceable class="function">name</replaceable>{<replaceable class="parameter">param</replaceable>}  # enable action and set parameter to <replaceable class="parameter">param</replaceable>,
                # overwriting parameter from previous match if necessary
   -<replaceable class="function">name</replaceable>         # disable action. The parameter can be omitted</screen>
-  </para>
   <para>
    Note that if the URL matches multiple positive forms of a parameterized action,
    the last match wins, i.e. the params from earlier matches are simply ignored.
@@ -2532,13 +2607,11 @@ example.org/blocked-example-page</screen>
    that can be executed for the same request repeatedly, like adding multiple
    headers, or filtering through multiple filters. Syntax:
   </para>
-  <para>
    <screen>
   +<replaceable class="function">name</replaceable>{<replaceable class="parameter">param</replaceable>}   # enable action and add <replaceable class="parameter">param</replaceable> to the list of parameters
   -<replaceable class="function">name</replaceable>{<replaceable class="parameter">param</replaceable>}   # remove the parameter <replaceable class="parameter">param</replaceable> from the list of parameters
                 # If it was the last one left, disable the action.
   <replaceable class="parameter">-name</replaceable>          # disable this action completely and remove all parameters from the list</screen>
-  </para>
   <para>
    Examples: <literal>+add-header{X-Fun-Header: Some text}</literal> and
    <literal>+filter{html-annoyances}</literal>
@@ -2546,7 +2619,6 @@ example.org/blocked-example-page</screen>
  </listitem>
 
  </itemizedlist>
-</para>
 
 <para>
  If nothing is specified in any actions file, no <quote>actions</quote> are
@@ -2641,9 +2713,16 @@ example.org/blocked-example-page</screen>
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-    <para>
-     <screen>+add-header{X-User-Tracking: sucks}</screen>
-   </para>
+     <screen># Add a DNT ("Do not track") header to all requests,
+# event to those that already have one.
+#
+# This is just an example, not a recommendation.
+#
+# There is no reason to believe that user-tracking websites care
+# about the DNT header and depending on the User-Agent, adding the
+# header may make user-tracking easier.
+{+add-header{DNT: 1}}
+/</screen>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -2732,7 +2811,6 @@ example.org/blocked-example-page</screen>
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
-    <para>
      <screen>{+block{No nasty stuff for you.}}
 # Block and replace with "blocked" page
  .nasty-stuff.example.com
@@ -2745,7 +2823,6 @@ example.org/blocked-example-page</screen>
 {+block{Layered ads.} +handle-as-empty-document}
 # Block and then ignore
  adserver.example.net/.*\.js$</screen>
-    </para>
   </listitem>
  </varlistentry>
 
@@ -2816,9 +2893,7 @@ example.org/blocked-example-page</screen>
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-    <para>
      <screen>+change-x-forwarded-for{block}</screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -2896,13 +2971,11 @@ example.org/blocked-example-page</screen>
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
-    <para>
      <screen>
 # Hide Tor exit notation in Host and Referer Headers
 {+client-header-filter{hide-tor-exit-notation}}
 /
-    </screen>
-   </para>
+</screen>
   </listitem>
  </varlistentry>
 
@@ -2971,7 +3044,6 @@ example.org/blocked-example-page</screen>
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
-    <para>
      <screen>
 # Tag every request with the User-Agent header
 {+client-header-tagger{user-agent}}
@@ -2995,9 +3067,8 @@ TAG:^User-Agent: RPM APT-HTTP/
 TAG:^User-Agent: fetch libfetch/
 TAG:^User-Agent: Ubuntu APT-HTTP/
 TAG:^User-Agent: MPlayer/
-    </screen>
-   </para>
-   <para>
+</screen>
+
      <screen>
 # Tag all requests with the Range header set
 {+client-header-tagger{range-requests}}
@@ -3011,8 +3082,21 @@ TAG:^User-Agent: MPlayer/
 # parts of multimedia files.
 {-filter -deanimate-gifs}
 TAG:^RANGE-REQUEST$
-    </screen>
-    </para>
+</screen>
+
+     <screen>
+# Tag all requests with the client IP address
+#
+# (Technically the client IP address isn't included in the
+# client headers but client-header taggers can set it anyway.
+# For details see the tagger in default.filter)
+{+client-header-tagger{client-ip-address}}
+/
+
+# Change forwarding settings for requests coming from address 10.0.0.1
+{+forward-override{forward-socks5 127.0.1.2:2222 .}}
+TAG:^IP-ADDRESS: 10\.0\.0\.1$
+</screen>
   </listitem>
  </varlistentry>
 
@@ -3112,7 +3196,6 @@ TAG:^RANGE-REQUEST$
  <varlistentry>
   <term>Example usage (sections):</term>
   <listitem>
-    <para>
      <screen># Check if www.example.net/ really uses valid XHTML
 { +content-type-overwrite{application/xml} }
 www.example.net/
@@ -3122,7 +3205,6 @@ www.example.net/
 www.example.net/.*\.css$
 www.example.net/.*style
 </screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -3201,12 +3283,10 @@ new action
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
-    <para>
      <screen># Block the non-existent "Privacy-Violation:" client header
 { +crunch-client-header{Privacy-Violation:} }
 /
-    </screen>
-   </para>
+</screen>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -3283,14 +3363,13 @@ new action
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
-    <para>
      <screen># Let the browser revalidate cached documents but don't
 # allow the server to use the revalidation headers for user tracking.
 {+hide-if-modified-since{-60} \
  +overwrite-last-modified{randomize} \
  +crunch-if-none-match}
-/   </screen>
-   </para>
+/
+</screen>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -3358,9 +3437,7 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-   <para>
     <screen>+crunch-incoming-cookies</screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -3437,11 +3514,10 @@ new action
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
-    <para>
      <screen># Crunch server headers that try to prevent caching
 { +crunch-server-header{no-cache} }
-/   </screen>
-   </para>
+/
+</screen>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -3508,9 +3584,7 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-   <para>
     <screen>+crunch-outgoing-cookies</screen>
-   </para>
   </listitem>
  </varlistentry>
 
@@ -3578,9 +3652,7 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-    <para>
       <screen>+deanimate-gifs{last}</screen>
-    </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -3650,10 +3722,8 @@ new action
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
-    <para>
      <screen>{+downgrade-http-version}
 problem-host.example.com</screen>
-    </para>
   </listitem>
  </varlistentry>
 
@@ -3740,9 +3810,7 @@ problem-host.example.com</screen>
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-   <para>
     <screen>+external-filter{fancy-filter}</screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -3857,14 +3925,12 @@ problem-host.example.com</screen>
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-    <para>
      <screen>
  { +fast-redirects{simple-check} }
    one.example.com
 
  { +fast-redirects{check-decoded-url} }
    another.example.com/testing</screen>
-    </para>
   </listitem>
  </varlistentry>
 
@@ -4006,112 +4072,112 @@ problem-host.example.com</screen>
   <listitem>
    <para>
     <anchor id="filter-js-annoyances">
-    <screen>+filter{js-annoyances}       # Get rid of particularly annoying JavaScript abuse.</screen>
    </para>
+    <screen>+filter{js-annoyances}       # Get rid of particularly annoying JavaScript abuse.</screen>
    <para>
     <anchor id="filter-js-events">
-    <screen>+filter{js-events}           # Kill JavaScript event bindings and timers (Radically destructive! Only for extra nasty sites).</screen>
    </para>
+    <screen>+filter{js-events}           # Kill JavaScript event bindings and timers (Radically destructive! Only for extra nasty sites).</screen>
    <para>
     <anchor id="filter-html-annoyances">
-    <screen>+filter{html-annoyances}     # Get rid of particularly annoying HTML abuse.</screen>
    </para>
+    <screen>+filter{html-annoyances}     # Get rid of particularly annoying HTML abuse.</screen>
    <para>
     <anchor id="filter-content-cookies">
-    <screen>+filter{content-cookies}     # Kill cookies that come in the HTML or JS content.</screen>
    </para>
+    <screen>+filter{content-cookies}     # Kill cookies that come in the HTML or JS content.</screen>
    <para>
     <anchor id="filter-refresh-tags">
-    <screen>+filter{refresh-tags}        # Kill automatic refresh tags if refresh time is larger than 9 seconds.</screen>
    </para>
+    <screen>+filter{refresh-tags}        # Kill automatic refresh tags if refresh time is larger than 9 seconds.</screen>
    <para>
     <anchor id="filter-unsolicited-popups">
-    <screen>+filter{unsolicited-popups}  # Disable only unsolicited pop-up windows.</screen>
    </para>
+    <screen>+filter{unsolicited-popups}  # Disable only unsolicited pop-up windows.</screen>
    <para>
     <anchor id="filter-all-popups">
-    <screen>+filter{all-popups}          # Kill all popups in JavaScript and HTML.</screen>
    </para>
+    <screen>+filter{all-popups}          # Kill all popups in JavaScript and HTML.</screen>
    <para>
     <anchor id="filter-img-reorder">
-    <screen>+filter{img-reorder}         # Reorder attributes in &lt;img&gt; tags to make the banners-by-* filters more effective.</screen>
    </para>
+    <screen>+filter{img-reorder}         # Reorder attributes in &lt;img&gt; tags to make the banners-by-* filters more effective.</screen>
    <para>
     <anchor id="filter-banners-by-size">
-    <screen>+filter{banners-by-size}     # Kill banners by size.</screen>
    </para>
+    <screen>+filter{banners-by-size}     # Kill banners by size.</screen>
    <para>
     <anchor id="filter-banners-by-link">
-    <screen>+filter{banners-by-link}     # Kill banners by their links to known clicktrackers.</screen>
    </para>
+    <screen>+filter{banners-by-link}     # Kill banners by their links to known clicktrackers.</screen>
    <para>
     <anchor id="filter-webbugs">
-    <screen>+filter{webbugs}             # Squish WebBugs (1x1 invisible GIFs used for user tracking).</screen>
    </para>
+    <screen>+filter{webbugs}             # Squish WebBugs (1x1 invisible GIFs used for user tracking).</screen>
    <para>
     <anchor id="filter-tiny-textforms">
-    <screen>+filter{tiny-textforms}      # Extend those tiny textareas up to 40x80 and kill the hard wrap.</screen>
    </para>
+    <screen>+filter{tiny-textforms}      # Extend those tiny textareas up to 40x80 and kill the hard wrap.</screen>
    <para>
     <anchor id="filter-jumping-windows">
-    <screen>+filter{jumping-windows}     # Prevent windows from resizing and moving themselves.</screen>
    </para>
+    <screen>+filter{jumping-windows}     # Prevent windows from resizing and moving themselves.</screen>
    <para>
     <anchor id="filter-frameset-borders">
-    <screen>+filter{frameset-borders}    # Give frames a border and make them resizable.</screen>
    </para>
+    <screen>+filter{frameset-borders}    # Give frames a border and make them resizable.</screen>
    <para>
     <anchor id="filter-iframes">
-    <screen>+filter{iframes}             # Removes all detected iframes. Should only be enabled for individual sites.</screen>
    </para>
+    <screen>+filter{iframes}             # Removes all detected iframes. Should only be enabled for individual sites.</screen>
    <para>
     <anchor id="filter-demoronizer">
-    <screen>+filter{demoronizer}         # Fix MS's non-standard use of standard charsets.</screen>
    </para>
+    <screen>+filter{demoronizer}         # Fix MS's non-standard use of standard charsets.</screen>
    <para>
     <anchor id="filter-shockwave-flash">
-    <screen>+filter{shockwave-flash}     # Kill embedded Shockwave Flash objects.</screen>
    </para>
+    <screen>+filter{shockwave-flash}     # Kill embedded Shockwave Flash objects.</screen>
    <para>
     <anchor id="filter-quicktime-kioskmode">
-    <screen>+filter{quicktime-kioskmode} # Make Quicktime movies saveable.</screen>
    </para>
+    <screen>+filter{quicktime-kioskmode} # Make Quicktime movies saveable.</screen>
    <para>
     <anchor id="filter-fun">
-    <screen>+filter{fun}                 # Text replacements for subversive browsing fun!</screen>
    </para>
+    <screen>+filter{fun}                 # Text replacements for subversive browsing fun!</screen>
    <para>
     <anchor id="filter-crude-parental">
-    <screen>+filter{crude-parental}      # Crude parental filtering. Note that this filter doesn't work reliably.</screen>
    </para>
+    <screen>+filter{crude-parental}      # Crude parental filtering. Note that this filter doesn't work reliably.</screen>
    <para>
     <anchor id="filter-ie-exploits">
-    <screen>+filter{ie-exploits}         # Disable some known Internet Explorer bug exploits.</screen>
    </para>
+    <screen>+filter{ie-exploits}         # Disable some known Internet Explorer bug exploits.</screen>
    <para>
     <anchor id="filter-site-specifics">
-    <screen>+filter{site-specifics}      # Cure for site-specific problems. Don't apply generally!</screen>
    </para>
+    <screen>+filter{site-specifics}      # Cure for site-specific problems. Don't apply generally!</screen>
    <para>
     <anchor id="filter-no-ping">
-    <screen>+filter{no-ping}             # Removes non-standard ping attributes in &lt;a&gt; and &lt;area&gt; tags.</screen>
    </para>
+    <screen>+filter{no-ping}             # Removes non-standard ping attributes in &lt;a&gt; and &lt;area&gt; tags.</screen>
    <para>
     <anchor id="filter-google">
-    <screen>+filter{google}              # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement.</screen>
    </para>
+    <screen>+filter{google}              # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement.</screen>
    <para>
     <anchor id="filter-yahoo">
-    <screen>+filter{yahoo}               # CSS-based block for Yahoo text ads. Also removes a width limitation.</screen>
    </para>
+    <screen>+filter{yahoo}               # CSS-based block for Yahoo text ads. Also removes a width limitation.</screen>
    <para>
     <anchor id="filter-msn">
-    <screen>+filter{msn}                 # CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation.</screen>
    </para>
+    <screen>+filter{msn}                 # CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation.</screen>
    <para>
     <anchor id="filter-blogspot">
-    <screen>+filter{blogspot}            # Cleans up some Blogspot blogs. Read the fine print before using this.</screen>
    </para>
+    <screen>+filter{blogspot}            # Cleans up some Blogspot blogs. Read the fine print before using this.</screen>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -4181,11 +4247,9 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-   <para>
      <screen>
 +force-text-mode
-     </screen>
-   </para>
+</screen>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -4314,7 +4378,6 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-   <para>
      <screen>
 # Use an ssh tunnel for requests previously tagged as
 # <quote>User-Agent: fetch libfetch/2.0</quote> and make sure
@@ -4331,8 +4394,7 @@ new action
  -overwrite-last-modified     \
 }
 TAG:^User-Agent: fetch libfetch/2\.0$
-     </screen>
-   </para>
+</screen>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -4404,13 +4466,11 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-   <para>
      <screen># Block all documents on example.org that end with ".js",
 # but send an empty document instead of the usual HTML message.
 {+block{Blocked JavaScript} +handle-as-empty-document}
 example.org/.*\.js$
-     </screen>
-   </para>
+</screen>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -4485,7 +4545,6 @@ example.org/.*\.js$
  <varlistentry>
   <term>Example usage (sections):</term>
   <listitem>
-   <para>
      <screen># Generic image extensions:
 #
 {+handle-as-image}
@@ -4497,7 +4556,6 @@ example.org/.*\.js$
 {+block{Nasty banners.} +handle-as-image}
 nasty-banner-server.example.com/junk.cgi\?output=trash
 </screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -4577,13 +4635,12 @@ new action
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
-    <para>
      <screen># Pretend to use Canadian language settings.
 {+hide-accept-language{en-ca} \
 +hide-user-agent{Mozilla/5.0 (X11; U; OpenBSD i386; en-CA; rv:1.8.0.4) Gecko/20060628 Firefox/1.5.0.4} \
 }
-/   </screen>
-   </para>
+/
+</screen>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -4667,13 +4724,11 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-    <para>
      <screen># Disarm the download link in Sourceforge's patch tracker
 { -filter \
  +content-type-overwrite{text/plain}\
  +hide-content-disposition{block} }
  .sourceforge.net/tracker/download\.php</screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -4756,13 +4811,11 @@ new action
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
-    <para>
      <screen># Let the browser revalidate but make tracking based on the time less likely.
 {+hide-if-modified-since{-60} \
  +overwrite-last-modified{randomize} \
  +crunch-if-none-match}
 /</screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -4831,10 +4884,9 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-   <para>
-    <screen>+hide-from-header{block}</screen> or
+    <screen>+hide-from-header{block}</screen>
+    <para>or</para>
     <screen>+hide-from-header{spam-me-senseless@sittingduck.example.com}</screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -4935,10 +4987,9 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-   <para>
-     <screen>+hide-referrer{forge}</screen> or
+     <screen>+hide-referrer{forge}</screen>
+     <para>or</para>
      <screen>+hide-referrer{http://www.yahoo.com/}</screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -5017,9 +5068,7 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-   <para>
      <screen>+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}</screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -5095,13 +5144,11 @@ new action
    <!-- I had trouble getting the spacing to look right in my browser -->
    <!-- I probably have the wrong font setup, bollocks. -->
    <!-- Apparently the emphasis tag uses a proportional font no matter what -->
-    <para>
      <screen>+limit-connect{443}                   # Port 443 is OK.
 +limit-connect{80,443}                # Ports 80 and 443 are OK.
 +limit-connect{-3, 7, 20-100, 500-}   # Ports less than 3, 7, 20 to 100 and above 500 are OK.
 +limit-connect{-}                     # All ports are OK
 +limit-connect{,}                     # No HTTPS/SSL traffic is allowed</screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -5186,10 +5233,7 @@ new action
  <varlistentry>
   <term>Example usages:</term>
   <listitem>
-    <para>
-     <screen>+limit-cookie-lifetime{60}
-       </screen>
-   </para>
+     <screen>+limit-cookie-lifetime{60}</screen>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -5275,7 +5319,6 @@ new action
  <varlistentry>
   <term>Example usage (sections):</term>
   <listitem>
-   <para>
     <screen>
 # Selectively turn off compression, and enable a filter
 #
@@ -5294,7 +5337,6 @@ new action
 #
 { -prevent-compression }
 .compusa.com/</screen>
-   </para>
   </listitem>
  </varlistentry>
 
@@ -5386,13 +5428,11 @@ new action
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-    <para>
      <screen># Let the browser revalidate without being tracked across sessions
 { +hide-if-modified-since{-60} \
  +overwrite-last-modified{randomize} \
  +crunch-if-none-match}
 /</screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -5483,14 +5523,13 @@ new action
  <varlistentry>
   <term>Example usages:</term>
   <listitem>
-   <para>
     <screen># Replace example.com's style sheet with another one
 { +redirect{http://localhost/css-replacements/example.com.css} }
  example.com/stylesheet\.css
 
 # Create a short, easy to remember nickname for a favorite site
 # (relies on the browser to accept and forward invalid URLs to &my-app;)
-{ +redirect{http://www.privoxy.org/user-manual/actions-file.html} }
+{ +redirect{https://www.privoxy.org/user-manual/actions-file.html} }
  a
 
 # Always use the expanded view for Undeadly.org articles
@@ -5524,7 +5563,6 @@ i[0-9][0-9][0-9][0-9]*/
 # to the local version delivered by Privoxy
 {+redirect{s@^http://www@http://config@}}
 www.privoxy.org/user-manual/</screen>
-   </para>
   </listitem>
  </varlistentry>
 
@@ -5598,15 +5636,13 @@ www.privoxy.org/user-manual/</screen>
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
-    <para>
      <screen>
 {+server-header-filter{html-to-xml}}
 example.org/xml-instance-that-is-delivered-as-html
 
 {+server-header-filter{xml-to-html}}
 example.org/instance-that-is-delivered-as-xml-but-is-not
-    </screen>
-    </para>
+</screen>
   </listitem>
  </varlistentry>
 
@@ -5683,7 +5719,6 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
  <varlistentry>
   <term>Example usage (section):</term>
   <listitem>
-    <para>
      <screen>
 # Tag every request with the content type declared by the server
 {+server-header-tagger{content-type}}
@@ -5696,8 +5731,7 @@ example.org/instance-that-is-delivered-as-xml-but-is-not
 # <literal><link linkend="external-filter-syntax">silly example</link></literal>.
 {+external-filter{rotate-image} +force-text-mode}
 TAG:^image/
-    </screen>
-    </para>
+</screen>
   </listitem>
  </varlistentry>
 
@@ -5790,9 +5824,7 @@ TAG:^image/
  <varlistentry>
   <term>Example usage:</term>
   <listitem>
-   <para>
      <screen>+session-cookies-only</screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -5892,21 +5924,15 @@ TAG:^image/
    <para>
     Built-in pattern:
    </para>
-   <para>
     <screen>+set-image-blocker{pattern}</screen>
-   </para>
    <para>
     Redirect to the BSD daemon:
    </para>
-   <para>
     <screen>+set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif}</screen>
-   </para>
    <para>
     Redirect to the built-in pattern for better caching:
    </para>
-   <para>
     <screen>+set-image-blocker{http://config.privoxy.org/send-banner?type=pattern}</screen>
-   </para>
   </listitem>
  </varlistentry>
 </variablelist>
@@ -5973,7 +5999,6 @@ TAG:^image/
  Now let's define some aliases...
 </para>
 
-<para>
  <screen>
  # Useful custom aliases we can use later.
  #
@@ -6001,7 +6026,6 @@ TAG:^image/
  #
  c0 = +crunch-all-cookies
  c1 = -crunch-all-cookies</screen>
-</para>
 
 <para>
  ...and put them to use. These sections would appear in the lower part of an
@@ -6009,7 +6033,6 @@ TAG:^image/
  up for the <quote>/</quote> pattern):
 </para>
 
-<para>
  <screen>
  # These sites are either very complex or very keen on
  # user data and require minimal interference to work:
@@ -6033,7 +6056,6 @@ TAG:^image/
  {-filter{all-popups} -filter{unsolicited-popups}}
   .dabs.com
   .overclockers.co.uk</screen>
-</para>
 
 <para>
  Aliases like <quote>shop</quote> and <quote>fragile</quote> are typically used for
@@ -6084,7 +6106,6 @@ hal stop here
  multiple lines with line continuation.
 </para>
 
-<para>
  <screen>
 { \
  +<link linkend="CHANGE-X-FORWARDED-FOR">change-x-forwarded-for{block}</link> \
@@ -6092,8 +6113,7 @@ hal stop here
  +<link linkend="SET-IMAGE-BLOCKER">set-image-blocker{pattern}</link> \
 }
 / # Match all URLs
- </screen>
-</para>
+</screen>
 
 <para>
  The default behavior is now set.
@@ -6120,14 +6140,12 @@ hal stop here
  that prevents older &my-app; versions from reading the file:
 </para>
 
-<para>
  <screen>
 ##########################################################################
 # Settings -- Don't change! For internal Privoxy use ONLY.
 ##########################################################################
 {{settings}}
 for-privoxy-version=3.0.11</screen>
-</para>
 
 <para>
  After that comes the (optional) alias section. We'll use the example
@@ -6135,7 +6153,6 @@ for-privoxy-version=3.0.11</screen>
  that also explains why and how aliases are used:
 </para>
 
-<para>
  <screen>
 ##########################################################################
 # Aliases
@@ -6155,18 +6172,16 @@ for-privoxy-version=3.0.11</screen>
  #
  fragile     = -<link linkend="BLOCK">block</link> -<link linkend="FILTER">filter</link> -crunch-all-cookies -<link linkend="FAST-REDIRECTS">fast-redirects</link> -<link linkend="HIDE-REFERER">hide-referrer</link>
  shop        = -crunch-all-cookies -<link linkend="FILTER-ALL-POPUPS">filter{all-popups}</link></screen>
-</para>
 
 <para>
  The first of our specialized sections is concerned with <quote>fragile</quote>
  sites, i.e. sites that require minimum interference, because they are either
  very complex or very keen on tracking you (and have mechanisms in place that
- make them unusable for people who avoid being tracked). We will simply use
+ make them unusable for people who avoid being tracked). We will use
  our pre-defined <literal>fragile</literal> alias instead of stating the list
  of actions explicitly:
 </para>
 
-<para>
  <screen>
 ##########################################################################
 # Exceptions for sites that'll break under the default action set:
@@ -6178,7 +6193,6 @@ for-privoxy-version=3.0.11</screen>
 .office.microsoft.com           # surprise, surprise!
 .windowsupdate.microsoft.com
 mail.google.com</screen>
-</para>
 
 <para>
  Shopping sites are not as fragile, but they typically
@@ -6186,7 +6200,6 @@ mail.google.com</screen>
  carts or item details. Again, we'll use a pre-defined alias:
 </para>
 
-<para>
  <screen>
 # Shopping sites:
 #
@@ -6195,7 +6208,6 @@ mail.google.com</screen>
 .worldpay.com   # for quietpc.com
 .jungle.com
 .scan.co.uk</screen>
-</para>
 
 <para>
  The <literal><link linkend="FAST-REDIRECTS">fast-redirects</link></literal>
@@ -6203,7 +6215,6 @@ mail.google.com</screen>
  breaks some sites. So disable it for popular sites where we know it misbehaves:
 </para>
 
-<para>
  <screen>
 { -<link linkend="FAST-REDIRECTS">fast-redirects</link> }
 login.yahoo.com
@@ -6212,7 +6223,6 @@ edit.*.yahoo.com
 .altavista.com/.*(like|url|link):http
 .altavista.com/trans.*urltext=http
 .nytimes.com</screen>
-</para>
 
 <para>
  It is important that <application>Privoxy</application> knows which
@@ -6227,7 +6237,6 @@ edit.*.yahoo.com
  good start:
 </para>
 
-<para>
  <screen>
 ##########################################################################
 # Images:
@@ -6238,7 +6247,6 @@ edit.*.yahoo.com
 #
 { +<link linkend="HANDLE-AS-IMAGE">handle-as-image</link> }
 /.*\.(gif|jpe?g|png|bmp|ico)$</screen>
-</para>
 
 <para>
  And then there are known banner sources. They often use scripts to
@@ -6255,7 +6263,6 @@ edit.*.yahoo.com
  action before, it still applies and needn't be repeated:
 </para>
 
-<para>
  <screen>
 # Known ad generators:
 #
@@ -6267,7 +6274,6 @@ ar.atwola.com
 .a[0-9].yimg.com/(?:(?!/i/).)*$
 bs*.gsanet.com
 .qkimg.net</screen>
-</para>
 
 <para>
  One of the most important jobs of <application>Privoxy</application>
@@ -6287,7 +6293,6 @@ bs*.gsanet.com
  to keep the example short:
 </para>
 
-<para>
  <screen>
 ##########################################################################
 # Block these fine banners:
@@ -6306,12 +6311,11 @@ count*.
 # Site-specific patterns (abbreviated):
 #
 .hitbox.com</screen>
-</para>
 
 <para>
  It's quite remarkable how many advertisers actually call their banner
  servers ads.<replaceable>company</replaceable>.com, or call the directory
- in which the banners are stored simply <quote>banners</quote>. So the above
+ in which the banners are stored literally <quote>banners</quote>. So the above
  generic patterns are surprisingly effective.
 </para>
 <para>
@@ -6336,7 +6340,6 @@ count*.
  with no <literal><link linkend="BLOCK">block</link></literal> action applying.
 </para>
 
-<para>
  <screen>
 ##########################################################################
 # Save some innocent victims of the above generic block patterns:
@@ -6360,7 +6363,6 @@ ad[ud]*.   # (adult.* and add.*)
 #
 www.globalintersec.com/adv # (adv = advanced)
 www.ugu.com/sui/ugu/adv</screen>
-</para>
 
 <para>
  Filtering source code can have nasty side effects,
@@ -6370,7 +6372,6 @@ www.ugu.com/sui/ugu/adv</screen>
  disables <emphasis>all</emphasis> filters in one fell swoop!
 </para>
 
-<para>
  <screen>
 # Don't filter code!
 #
@@ -6380,7 +6381,6 @@ bugzilla.
 developer.
 wiki.
 .sourceforge.net</screen>
-</para>
 
 <para>
  The actual <filename>default.action</filename> is of course much more
@@ -6414,10 +6414,8 @@ wiki.
 
 <!-- brief sample user.action here -->
 
-<para>
  <screen>
 # My user.action file. &lt;fred@example.com&gt;</screen>
-</para>
 
 <para>
  As <link linkend="aliases">aliases</link> are local to the actions
@@ -6425,7 +6423,6 @@ wiki.
  <filename>default.action</filename>, unless you repeat them here:
 </para>
 
-<para>
  <screen>
 # Aliases are local to the file they are defined in.
 # (Re-)define aliases for this file:
@@ -6456,8 +6453,6 @@ allow-ads   = -block -filter{banners-by-size} -filter{banners-by-link}
 # MIME types. We want the browser to force these to be text documents.
 handle-as-text = -<link linkend="FILTER">filter</link> +-<link linkend="content-type-overwrite">content-type-overwrite{text/plain}</link> +-<link linkend="FORCE-TEXT-MODE">force-text-mode</link> -<link linkend="HIDE-CONTENT-DISPOSITION">hide-content-disposition</link></screen>
 
-</para>
-
 <para>
  Say you have accounts on some sites that you visit regularly, and
  you don't want to have to log in manually each time. So you'd like
@@ -6467,30 +6462,25 @@ handle-as-text = -<link linkend="FILTER">filter</link> +-<link linkend="content-
  processing of cookies to make them only temporary.
 </para>
 
-<para>
  <screen>
 { allow-all-cookies }
  sourceforge.net
  .yahoo.com
  .msdn.microsoft.com
  .redhat.com</screen>
-</para>
 
 <para>
  Your bank is allergic to some filter, but you don't know which, so you disable them all:
 </para>
 
-<para>
  <screen>
 { -<link linkend="FILTER">filter</link> }
  .your-home-banking-site.com</screen>
-</para>
 
 <para>
  Some file types you may not want to filter for various reasons:
 </para>
 
-<para>
  <screen>
 # Technical documentation is likely to contain strings that might
 # erroneously get altered by the JavaScript-oriented filters:
@@ -6502,7 +6492,6 @@ handle-as-text = -<link linkend="FILTER">filter</link> +-<link linkend="content-
 # so that Privoxy thinks it is getting HTML and starts filtering:
 #
 stupid-server.example.com/</screen>
-</para>
 
 <para>
  Example of a simple <link linkend="BLOCK">block</link> action. Say you've
@@ -6515,12 +6504,10 @@ stupid-server.example.com/</screen>
  in default.action anyway:
 </para>
 
-<para>
  <screen>
 { +<link linkend="BLOCK">block</link>{Nasty ads.} }
  www.example.com/nasty-ads/sponsor\.gif
  another.example.net/more/junk/here/</screen>
-</para>
 
 <para>
  The URLs of dynamically generated banners, especially from large banner
@@ -6534,14 +6521,12 @@ stupid-server.example.com/</screen>
  browser. Use cautiously.
 </para>
 
-<para>
  <screen>
 { +block-as-image }
  .doubleclick.net
  .fastclick.net
  /Realmedia/ads/
  ar.atwola.com/</screen>
-</para>
 
 <para>
  Now you noticed that the default configuration breaks Forbes Magazine,
@@ -6555,13 +6540,11 @@ stupid-server.example.com/</screen>
  that misbehave, and add those to our personalized list of troublemakers:
 </para>
 
-<para>
 <screen>
 { fragile }
  .forbes.com
  webmail.example.com
  .mybank.com</screen>
-</para>
 
 <para>
  You like the <quote>fun</quote> text replacements in <filename>default.filter</filename>,
@@ -6570,11 +6553,9 @@ stupid-server.example.com/</screen>
  update-safe config, once and for all:
 </para>
 
-<para>
 <screen>
 { +<link linkend="filter-fun">filter{fun}</link> }
  / # For ALL sites!</screen>
-</para>
 
 <para>
  Note that the above is not really a good idea: There are exceptions
@@ -6591,13 +6572,11 @@ stupid-server.example.com/</screen>
  sites that you feel provide value to you:
 </para>
 
-<para>
 <screen>
 { allow-ads }
  .sourceforge.net
  .slashdot.org
  .osdn.net</screen>
-</para>
 
 <para>
  Note that <literal>allow-ads</literal> has been aliased to
@@ -6613,11 +6592,9 @@ stupid-server.example.com/</screen>
  it should I choose to.
 </para>
 
-<para>
 <screen>
 { handle-as-text }
  /.*\.sh$</screen>
-</para>
 
 <para>
  <filename>user.action</filename> is generally the best place to define
@@ -6629,11 +6606,9 @@ stupid-server.example.com/</screen>
  paths and patterns:
 </para>
 
-<para>
 <screen>
 { +<link linkend="set-image-blocker">set-image-blocker{blank}</link> }
 / # ALL sites</screen>
-</para>
 
 </sect3>
 </sect2>
@@ -6745,9 +6720,7 @@ stupid-server.example.com/</screen>
  like this:
 </para>
 
-<para>
  <screen>FILTER: foo Replace all "foo" with "bar"</screen>
-</para>
 
 <para>
  Below that line, and up to the next header line, come the jobs that
@@ -6767,8 +6740,10 @@ stupid-server.example.com/</screen>
 <para>
  The non-standard option letter <literal>D</literal> (dynamic) allows
  to use the variables $host, $origin (the IP address the request came from),
- $path and $url. They will be replaced with the value they refer to before
- the filter is executed.
+ $path, $url and $listen-address (the address on which Privoxy accepted the
+ client request. Example: 127.0.0.1:8118).
+ They will be replaced with the value they refer to before the filter
+ is executed.
 </para>
 
 <para>
@@ -6811,9 +6786,7 @@ stupid-server.example.com/</screen>
  needed:
 </para>
 
-<para>
  <screen>s/foo/bar/</screen>
-</para>
 
 <para>
  But wait! Didn't the comment say that <emphasis>all</emphasis> occurrences
@@ -6822,17 +6795,14 @@ stupid-server.example.com/</screen>
  we'll need to add the <literal>g</literal> option:
 </para>
 
-<para>
  <screen>s/foo/bar/g</screen>
-</para>
 
 <para>
  Our complete filter now looks like this:
 </para>
-<para>
+
  <screen>FILTER: foo Replace all "foo" with "bar"
 s/foo/bar/g</screen>
-</para>
 
 <para>
  Let's look at some real filters for more interesting examples. Here you see
@@ -6841,14 +6811,12 @@ s/foo/bar/g</screen>
 </para>
 
 
-<para>
  <screen>
 FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse
 
 # Get rid of JavaScript referrer tracking. Test page: http://www.randomoddness.com/untitled.htm
 #
 s|(&lt;script.*)document\.referrer(.*&lt;/script&gt;)|$1"Not Your Business!"$2|Usg</screen>
-</para>
 
 <para>
  Following the header line and a comment, you see the job. Note that it uses
@@ -6930,12 +6898,10 @@ s|(&lt;script.*)document\.referrer(.*&lt;/script&gt;)|$1"Not Your Business!"$2|U
  this time only point out the constructs of special interest:
 </para>
 
-<para>
  <screen>
 # The status bar is for displaying link targets, not pointless blahblah
 #
 s/window\.status\s*=\s*(['"]).*?\1/dUmMy=1/ig</screen>
-</para>
 
 <para>
  <literal>\s</literal> stands for whitespace characters (space, tab, newline,
@@ -6958,12 +6924,10 @@ s/window\.status\s*=\s*(['"]).*?\1/dUmMy=1/ig</screen>
  you move your mouse over links.
 </para>
 
-<para>
  <screen>
 # Kill OnUnload popups. Yummy. Test: http://www.zdnet.com/zdsubs/yahoo/tree/yfs.html
 #
 s/(&lt;body [^&gt;]*)onunload(.*&gt;)/$1never$2/iU</screen>
-</para>
 
 <para>
  Including the
@@ -6984,14 +6948,12 @@ s/(&lt;body [^&gt;]*)onunload(.*&gt;)/$1never$2/iU</screen>
  The last example is from the fun department:
 </para>
 
-<para>
  <screen>
 FILTER: fun Fun text replacements
 
 # Spice the daily news:
 #
 s/microsoft(?!\.com)/MicroSuck/ig</screen>
-</para>
 
 <para>
  Note the <literal>(?!\.com)</literal> part (a so-called negative lookahead)
@@ -7001,7 +6963,6 @@ s/microsoft(?!\.com)/MicroSuck/ig</screen>
  still replacing the word everywhere else.
 </para>
 
-<para>
  <screen>
 # Buzzword Bingo (example for extended regex syntax)
 #
@@ -7017,7 +6978,6 @@ s* industry[ -]leading \
 |  unrivalled \
 *&lt;font color="red"&gt;&lt;b&gt;BINGO!&lt;/b&gt;&lt;/font&gt; \
 *igx</screen>
-</para>
 
 <para>
  The <literal>x</literal> option in this job turns on extended syntax, and allows for
@@ -7052,6 +7012,7 @@ pre-defined filters for your convenience:
    <para>
     The purpose of this filter is to get rid of particularly annoying JavaScript abuse.
     To that end, it
+   </para>
    <itemizedlist>
     <listitem>
      <para>
@@ -7075,7 +7036,6 @@ pre-defined filters for your convenience:
      </para>
     </listitem>
    </itemizedlist>
-   </para>
    <para>
     Use with caution. This is an aggressive filter, and can break sites that
     rely heavily on JavaScript.
@@ -7525,15 +7485,16 @@ pre-defined filters for your convenience:
 </para>
 <para>
  External filters read the content from STDIN and write the rewritten
- content to STDOUT. The environment variables PRIVOXY_URL, PRIVOXY_PATH,
- PRIVOXY_HOST, PRIVOXY_ORIGIN can be used to get some details about the
- client request.
+ content to STDOUT.
+ The environment variables PRIVOXY_URL, PRIVOXY_PATH, PRIVOXY_HOST,
+ PRIVOXY_ORIGIN, PRIVOXY_LISTEN_ADDRESS can be used to get some details
+ about the client request.
 </para>
 <para>
  &my-app; will temporary store the content to filter in the
  <literal><link linkend="temporary-directory">temporary-directory</link></literal>.
 </para>
-<para>
+
  <screen>
 EXTERNAL-FILTER: cat Pointless example filter that doesn't actually modify the content
 /bin/cat
@@ -7559,7 +7520,6 @@ EXTERNAL-FILTER: rotate-image Rotate an image by 180 degree. Test filter with li
 EXTERNAL-FILTER: citation-needed Adds a "[citation needed]" tag to an image. The coordinates may need adjustment.
 /usr/local/bin/convert - -pointsize 16 -fill white  -annotate +17+418 "[citation needed]" -
 </screen>
-</para>
 
 <warning>
  <para>
@@ -7632,14 +7592,12 @@ EXTERNAL-FILTER: citation-needed Adds a "[citation needed]" tag to an image. The
  is in an alpha or beta development stage:
 </para>
 
-<para>
  <screen>
 &lt;!-- @if-unstable-start --&gt;
 
   ... beta warning HTML code goes here ...
 
 &lt;!-- if-unstable-end@ --&gt;</screen>
-</para>
 
 <para>
  If the "unstable" symbol is set, everything in between and including
@@ -7647,9 +7605,7 @@ EXTERNAL-FILTER: citation-needed Adds a "[citation needed]" tag to an image. The
  will disappear, leaving nothing but an empty comment:
 </para>
 
-<para>
  <screen>&lt;!--  --&gt;</screen>
-</para>
 
 <para>
  There's also an if-then-else construct and an <literal>#include</literal>
@@ -7702,9 +7658,8 @@ Requests</title>
 
 <!--   ~~~~~       New section      ~~~~~     -->
 <sect2 id="license"><title>License</title>
-<para>
+
  <screen><![ RCDATA [ &GPLv2; ]]></screen>
-</para>
 
 </sect2>
 <!--  ~  End section  ~  -->
@@ -7793,35 +7748,35 @@ Requests</title>
  and then some examples:
 </para>
 
-<para><simplelist>
+<simplelist>
  <member>
   <emphasis>.</emphasis> - Matches any single character, e.g. <quote>a</quote>,
   <quote>A</quote>, <quote>4</quote>, <quote>:</quote>, or <quote>@</quote>.
  </member>
-</simplelist></para>
+</simplelist>
 
-<para><simplelist>
+<simplelist>
  <member>
   <emphasis>?</emphasis> - The preceding character or expression is matched ZERO or ONE
   times. Either/or.
  </member>
-</simplelist></para>
+</simplelist>
 
-<para><simplelist>
+<simplelist>
  <member>
   <emphasis>+</emphasis> - The preceding character or expression is matched ONE or MORE
   times.
  </member>
-</simplelist></para>
+</simplelist>
 
-<para><simplelist>
+<simplelist>
  <member>
   <emphasis>*</emphasis> - The preceding character or expression is matched ZERO or MORE
   times.
  </member>
-</simplelist></para>
+</simplelist>
 
-<para><simplelist>
+<simplelist>
  <member>
   <emphasis>\</emphasis> - The <quote>escape</quote> character denotes that
   the following character should be taken literally. This is used where one of the
@@ -7830,25 +7785,25 @@ Requests</title>
   sure the period is recognized only as a period (and not expanded to its
   meta-character meaning of any single character).
  </member>
-</simplelist></para>
+</simplelist>
 
-<para><simplelist>
+<simplelist>
  <member>
   <emphasis>[ ]</emphasis> - Characters enclosed in brackets will be matched if
   any of the enclosed characters are encountered. For instance, <quote>[0-9]</quote>
   matches any numeric digit (zero through nine). As an example, we can combine
   this with <quote>+</quote> to match any digit one of more times: <quote>[0-9]+</quote>.
  </member>
-</simplelist></para>
+</simplelist>
 
-<para><simplelist>
+<simplelist>
  <member>
   <emphasis>( )</emphasis> - parentheses are used to group a sub-expression,
   or multiple sub-expressions.
  </member>
-</simplelist></para>
+</simplelist>
 
-<para><simplelist>
+<simplelist>
  <member>
   <emphasis>|</emphasis> - The <quote>bar</quote> character works like an
   <quote>or</quote> conditional statement. A match is successful if the
@@ -7857,7 +7812,7 @@ Requests</title>
   and would match either <quote>this example</quote> or <quote>that
   example</quote>, and nothing else.
  </member>
-</simplelist></para>
+</simplelist>
 
 <para>
  These are just some of the ones you are likely to use when matching URLs with
@@ -7985,7 +7940,6 @@ Requests</title>
  rules and other configuration options, and even turn
  <application>Privoxy's</application> filtering off, all with
  a web browser.
-
 </para>
 
 <para>
@@ -7996,7 +7950,6 @@ Requests</title>
  necessary either.
 </para>
 
-<para>
  <itemizedlist>
 
  <listitem>
@@ -8088,7 +8041,6 @@ Requests</title>
  </listitem>
 
  </itemizedlist>
-</para>
 
 </sect2>
 
@@ -8102,7 +8054,6 @@ Requests</title>
  page is requested by your browser:
 </para>
 
-<para>
  <itemizedlist>
  <listitem>
   <para>
@@ -8211,7 +8162,7 @@ Requests</title>
  </listitem>
 
  </itemizedlist>
-</para>
+
 <para>
  NOTE: This is somewhat of a simplistic overview of what happens with each URL
  request. For the sake of brevity and simplicity, we have focused on
@@ -8284,7 +8235,6 @@ Requests</title>
  configuration may vary):
 </para>
 
-<para>
  <screen>
  Matches for http://www.google.com:
 
@@ -8314,7 +8264,6 @@ Requests</title>
 In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibutton>
 (no matches in this file)
 </screen>
-</para>
 
 <para>
  This is telling us how we have defined our
@@ -8370,12 +8319,9 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  And finally we pull it all together in the bottom section and summarize how
  <application>Privoxy</application> is applying all its <quote>actions</quote>
  to <quote>google.com</quote>:
-
 </para>
 
-<para>
  <screen>
-
  Final results:
 
  -add-header
@@ -8433,8 +8379,8 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  -server-header-filter{xml-to-html}
  -server-header-filter{html-to-xml}
  -session-cookies-only
- +set-image-blocker {pattern} </screen>
-</para>
+ +set-image-blocker {pattern}
+</screen>
 
 <para>
  Notice the only difference here to the previous listing, is to
@@ -8447,9 +8393,7 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  Now another example, <quote>ad.doubleclick.net</quote>:
 </para>
 
-<para>
  <screen>
-
  { +block{Domains starts with "ad"} }
   ad*.
 
@@ -8459,7 +8403,6 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  { +block{Doubleclick banner server} +handle-as-image }
   .[a-vx-z]*.doubleclick.net
 </screen>
-</para>
 
 <para>
  We'll just show the interesting part here - the explicit matches. It is
@@ -8491,9 +8434,7 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  This one is giving us problems. We are getting a blank page. Hmmm ...
 </para>
 
-<para>
  <screen>
-
  Matches for http://www.example.net/adsl/HOWTO/:
 
  In file: default.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibutton>
@@ -8557,7 +8498,6 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  { +block{Path contains "ads".} +handle-as-image }
   /ads
 </screen>
-</para>
 
 <para>
  Ooops, the <quote>/adsl/</quote> is matching <quote>/ads</quote> in our
@@ -8573,13 +8513,10 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
   wins). There are various ways to handle such exceptions. Example:
 </para>
 
-<para>
  <screen>
-
  { -block }
   /adsl
 </screen>
-</para>
 
 <para>
  Now the page displays ;-)
@@ -8593,13 +8530,10 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  we did with:
 </para>
 
-<para>
  <screen>
-
  { +block{Path starts with "ads".} +handle-as-image }
  /ads
 </screen>
-</para>
 
 <para>
  That actually was very helpful and pointed us quickly to where the problem
@@ -8613,9 +8547,7 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  <link linkend="FILTER"><quote>+filter</quote></link>:
 </para>
 
-<para>
  <screen>
-
  { shop }
  .quietpc.com
  .worldpay.com   # for quietpc.com
@@ -8623,25 +8555,20 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  .scan.co.uk
  .forbes.com
 </screen>
-</para>
 
 <para>
  <quote><literal>{ shop }</literal></quote> is an <quote>alias</quote> that expands to
  <quote><literal>{ -filter -session-cookies-only }</literal></quote>.
  Or you could do your own exception to negate filtering:
-
 </para>
 
-<para>
  <screen>
-
  { -filter }
  # Disable ALL filter actions for sites in this section
  .forbes.com
  developer.ibm.com
  localhost
 </screen>
-</para>
 
 <para>
  This would turn off all filtering for these sites. This is best
@@ -8664,14 +8591,12 @@ In file: user.action <guibutton>[ View ]</guibutton> <guibutton>[ Edit ]</guibut
  actions that are the most likely to cause trouble. This can be used as a
  last resort for problem sites.
 </para>
-<para>
- <screen>
 
+ <screen>
  { fragile }
  # Handle with care: easy to break
  mail.google.
  mybank.example.com</screen>
-</para>
 
 
 <para>