+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 <HTML
 ><HEAD
 ><TITLE
 >Coding Guidelines</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 REL="HOME"
 TITLE="Privoxy Developer Manual"
 HREF="index.html"><LINK
 CLASS="SECT1"
 ><A
 NAME="CODING"
-></A
->4. Coding Guidelines</H1
+>4. Coding Guidelines</A
+></H1
 ><DIV
 CLASS="SECT2"
 ><H2
 CLASS="SECT2"
 ><A
 NAME="S1"
-></A
->4.1. Introduction</H2
+>4.1. Introduction</A
+></H2
 ><P
 >This set of standards is designed to make our lives easier.  It is
     developed with the simple goal of helping us keep the "new and improved
 CLASS="SECT2"
 ><A
 NAME="S2"
-></A
->4.2. Using Comments</H2
+>4.2. Using Comments</A
+></H2
 ><DIV
 CLASS="SECT3"
 ><H3
 CLASS="SECT3"
 ><A
 NAME="S3"
-></A
->4.2.1. Comment, Comment, Comment</H3
+>4.2.1. Comment, Comment, Comment</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 ></P
 ><P
 >Comment as much as possible without commenting the obvious.
-    For example do not comment "aVariable is equal to bVariable".
-    Instead explain why aVariable should be equal to the bVariable.
+    For example do not comment "variable_a is equal to variable_b".
+    Instead explain why variable_a should be equal to the variable_b.
     Just because a person can read code does not mean they will
     understand why or what is being done. A reader may spend a lot
     more time figuring out what is going on when a simple comment
 ><PRE
 CLASS="PROGRAMLISTING"
 >/* if page size greater than 1k ... */
-if ( PageLength() > 1024 )
+if ( page_length() > 1024 )
 {
     ... "block" the page up ...
 }
 
 /* if page size is small, send it in blocks */
-if ( PageLength() > 1024 )
+if ( page_length() > 1024 )
 {
     ... "block" the page up ...
 }
 CLASS="SECT3"
 ><A
 NAME="S4"
-></A
->4.2.2. Use blocks for comments</H3
+>4.2.2. Use blocks for comments</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 >/*********************************************************************
  * This will stand out clearly in your code!
  *********************************************************************/
-if ( thisVariable == thatVariable )
+if ( this_variable == that_variable )
 {
-   DoSomethingVeryImportant();
+   do_something_very_important();
 }
 
 
 /* unfortunately, this may not */
-if ( thisVariable == thatVariable )
+if ( this_variable == that_variable )
 {
-   DoSomethingVeryImportant();
+   do_something_very_important();
 }
 
 
-if ( thisVariable == thatVariable ) /* this may not either */
+if ( this_variable == that_variable ) /* this may not either */
 {
-   DoSomethingVeryImportant();
+   do_something_very_important();
 }</PRE
 ></TD
 ></TR
 CLASS="SECT3"
 ><A
 NAME="S5"
-></A
->4.2.3. Keep Comments on their own line</H3
+>4.2.3. Keep Comments on their own line</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
  * This will stand out clearly in your code,
  * But the second example won't.
  *********************************************************************/
-if ( thisVariable == thatVariable )
+if ( this_variable == this_variable )
 {
-   DoSomethingVeryImportant();
+   do_something_very_important();
 }
 
-if ( thisVariable == thatVariable ) /*can you see me?*/
+if ( this_variable == this_variable ) /*can you see me?*/
 {
-   DoSomethingVeryImportant(); /*not easily*/
+   do_something_very_important(); /*not easily*/
 }
 
 
 
 if ( 1 == X )
 {
-   DoSomethingVeryImportant();
+   do_something_very_important();
 }
 
 
-short DoSomethingVeryImportant(
+short do_something_very_important(
    short firstparam,   /* represents something */
    short nextparam     /* represents something else */ )
 {
    ...code here...
 
-}   /* -END- DoSomethingVeryImportant */</PRE
+}   /* -END- do_something_very_important */</PRE
 ></TD
 ></TR
 ></TABLE
 CLASS="SECT3"
 ><A
 NAME="S6"
-></A
->4.2.4. Comment each logical step</H3
+>4.2.4. Comment each logical step</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S7"
-></A
->4.2.5. Comment All Functions Thoroughly</H3
+>4.2.5. Comment All Functions Thoroughly</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S8"
-></A
 >4.2.6. Comment at the end of braces if the
-    content is more than one screen length</H3
+    content is more than one screen length</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="PROGRAMLISTING"
 >if ( 1 == X )
 {
-   DoSomethingVeryImportant();
+   do_something_very_important();
    ...some long list of commands...
 } /* -END- if x is 1 */
 
 
 if ( 1 == X )
 {
-   DoSomethingVeryImportant();
+   do_something_very_important();
    ...some long list of commands...
 } /* -END- if ( 1 == X ) */</PRE
 ></TD
 CLASS="SECT2"
 ><A
 NAME="S9"
-></A
->4.3. Naming Conventions</H2
+>4.3. Naming Conventions</A
+></H2
 ><DIV
 CLASS="SECT3"
 ><H3
 CLASS="SECT3"
 ><A
 NAME="S10"
-></A
->4.3.1. Variable Names</H3
+>4.3.1. Variable Names</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S11"
-></A
->4.3.2. Function Names</H3
+>4.3.2. Function Names</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S12"
-></A
->4.3.3. Header file prototypes</H3
+>4.3.3. Header file prototypes</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S13"
-></A
->4.3.4. Enumerations, and #defines</H3
+>4.3.4. Enumerations, and #defines</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S14"
-></A
->4.3.5. Constants</H3
+>4.3.5. Constants</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT2"
 ><A
 NAME="S15"
-></A
->4.4. Using Space</H2
+>4.4. Using Space</A
+></H2
 ><DIV
 CLASS="SECT3"
 ><H3
 CLASS="SECT3"
 ><A
 NAME="S16"
-></A
->4.4.1. Put braces on a line by themselves.</H3
+>4.4.1. Put braces on a line by themselves.</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S17"
-></A
 >4.4.2. ALL control statements should have a
-    block</H3
+    block</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="PROGRAMLISTING"
 >if ( this == that )
 {
-   DoSomething();
-   DoSomethingElse();
+   do_something();
+   do_something_else();
 }</PRE
 ></TD
 ></TR
 ></SPAN
 ></P
 ><P
->if ( this == that ) DoSomething(); DoSomethingElse();</P
+>if ( this == that ) do_something(); do_something_else();</P
 ><P
 >or</P
 ><P
->if ( this == that ) DoSomething();</P
+>if ( this == that ) do_something();</P
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S18"
-></A
 >4.4.3. Do not belabor/blow-up boolean
-    expressions</H3
+    expressions</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S19"
-></A
 >4.4.4. Use white space freely because it is
-    free</H3
+    free</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->int firstValue   = 0;
-int someValue    = 0;
-int anotherValue = 0;
-int thisVariable = 0;
+>int first_value   = 0;
+int some_value    = 0;
+int another_value = 0;
+int this_variable = 0;
 
-if ( thisVariable == thatVariable )
+if ( this_variable == this_variable )
 
-firstValue = oldValue + ( ( someValue - anotherValue ) - whatever )</PRE
+first_value = old_value + ( ( some_value - another_value ) - whatever )</PRE
 ></TD
 ></TR
 ></TABLE
 CLASS="SECT3"
 ><A
 NAME="S20"
-></A
 >4.4.5. Don't use white space around structure
-    operators</H3
+    operators</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->aStruct->aMember;
-aStruct.aMember;
-FunctionName();</PRE
+>a_struct->a_member;
+a_struct.a_member;
+function_name();</PRE
 ></TD
 ></TR
 ></TABLE
 CLASS="EMPHASIS"
 >Instead of:</I
 ></SPAN
-> aStruct -> aMember; aStruct . aMember;
-    FunctionName ();</P
+> a_struct -> a_member; a_struct . a_member;
+    function_name ();</P
 ></DIV
 ><DIV
 CLASS="SECT3"
 CLASS="SECT3"
 ><A
 NAME="S21"
-></A
 >4.4.6. Make the last brace of a function stand
-    out</H3
+    out</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 >int function1( ... )
 {
    ...code...
-   return( retCode );
+   return( ret_code );
 
 }   /* -END- function1 */
 
 ></SPAN
 ></P
 ><P
->int function1( ... ) { ...code... return( retCode ); } int
+>int function1( ... ) { ...code... return( ret_code ); } int
     function2( ... ) { }</P
 ><P
 ><SPAN
 CLASS="SECT3"
 ><A
 NAME="S22"
-></A
->4.4.7. Use 3 character indentions</H3
+>4.4.7. Use 3 character indentions</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT2"
 ><A
 NAME="S23"
-></A
->4.5. Initializing</H2
+>4.5. Initializing</A
+></H2
 ><DIV
 CLASS="SECT3"
 ><H3
 CLASS="SECT3"
 ><A
 NAME="S24"
-></A
->4.5.1. Initialize all variables</H3
+>4.5.1. Initialize all variables</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->short anShort = 0;
-float aFloat  = 0;
+>short a_short = 0;
+float a_float  = 0;
 struct *ptr = NULL;</PRE
 ></TD
 ></TR
 ></SPAN
 > It is much easier to debug a SIGSEGV if the
     message says you are trying to access memory address 00000000
-    and not 129FA012; or arrayPtr[20] causes a SIGSEV vs.
-    arrayPtr[0].</P
+    and not 129FA012; or array_ptr[20] causes a SIGSEV vs.
+    array_ptr[0].</P
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT2"
 ><A
 NAME="S25"
-></A
->4.6. Functions</H2
+>4.6. Functions</A
+></H2
 ><DIV
 CLASS="SECT3"
 ><H3
 CLASS="SECT3"
 ><A
 NAME="S26"
-></A
 >4.6.1. Name functions that return a boolean as a
-    question.</H3
+    question.</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->ShouldWeBlockThis();
-ContainsAnImage();
-IsWebPageBlank();</PRE
+>should_we_block_this();
+contains_an_image();
+is_web_page_blank();</PRE
 ></TD
 ></TR
 ></TABLE
 CLASS="SECT3"
 ><A
 NAME="S27"
-></A
 >4.6.2. Always specify a return type for a
-    function.</H3
+    function.</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S28"
-></A
 >4.6.3. Minimize function calls when iterating by
-    using variables</H3
+    using variables</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->for ( size_t cnt = 0; cnt < blockListLength(); cnt ++ )
+>for ( size_t cnt = 0; cnt < block_list_length(); cnt++ )
 {
    ....
 }</PRE
     each and every iteration. This increases the overhead in the
     program, because the compiler has to look up the function each
     time, call it, and return a value. Depending on what occurs in
-    the blockListLength() call, it might even be creating and
+    the block_list_length() call, it might even be creating and
     destroying structures with each iteration, even though in each
     case it is comparing "cnt" to the same value, over and over.
-    Remember too - even a call to blockListLength() is a function
+    Remember too - even a call to block_list_length() is a function
     call, with the same overhead.</P
 ><P
 >Instead of using a function call during the iterations,
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->size_t len = blockListLength();
+>size_t len = block_list_length();
 
-for ( size_t cnt = 0; cnt < len; cnt ++ )
+for ( size_t cnt = 0; cnt < len; cnt++ )
 {
    ....
 }</PRE
 CLASS="EMPHASIS"
 >Exceptions:</I
 ></SPAN
-> if the value of blockListLength() *may*
-    change or could *potentially* change, then you must code the
+> if the value of block_list_length()
+    *may* change or could *potentially* change, then you must code the
     function call in the for/while loop.</P
 ></DIV
 ><DIV
 CLASS="SECT3"
 ><A
 NAME="S29"
-></A
->4.6.4. Pass and Return by Const Reference</H3
+>4.6.4. Pass and Return by Const Reference</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S30"
-></A
->4.6.5. Pass and Return by Value</H3
+>4.6.5. Pass and Return by Value</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S31"
-></A
->4.6.6. Names of include files</H3
+>4.6.6. Names of include files</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S32"
-></A
 >4.6.7. Provide multiple inclusion
-    protection</H3
+    protection</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S33"
-></A
->4.6.8. Use `extern "C"` when appropriate</H3
+>4.6.8. Use `extern "C"` when appropriate</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S34"
-></A
 >4.6.9. Where Possible, Use Forward Struct
-    Declaration Instead of Includes</H3
+    Declaration Instead of Includes</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT2"
 ><A
 NAME="S35"
-></A
->4.7. General Coding Practices</H2
+>4.7. General Coding Practices</A
+></H2
 ><DIV
 CLASS="SECT3"
 ><H3
 CLASS="SECT3"
 ><A
 NAME="S36"
-></A
->4.7.1. Turn on warnings</H3
+>4.7.1. Turn on warnings</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S37"
-></A
 >4.7.2. Provide a default case for all switch
-    statements</H3
+    statements</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 > This is not so much a readability issue
     as a robust programming issue. The "anomaly code goes here" may
     be no more than a print to the STDERR stream (as in
-    load_config). Or it may really be an ABEND condition.</P
+    load_config). Or it may really be an abort condition.</P
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S38"
-></A
 >4.7.3. Try to avoid falling through cases in a
-    switch statement.</H3
+    switch statement.</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S39"
-></A
 >4.7.4. Use 'long' or 'short' Instead of
-    'int'</H3
+    'int'</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S40"
-></A
->4.7.5. Don't mix size_t and other types</H3
+>4.7.5. Don't mix size_t and other types</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
     assumptions about whether it is signed or unsigned, or about
     how long it is. Do not compare a size_t against another
     variable of a different type (or even against a constant)
-    without casting one of the values. Try to avoid using size_t if
-    you can.</P
+    without casting one of the values.</P
 ></DIV
 ><DIV
 CLASS="SECT3"
 CLASS="SECT3"
 ><A
 NAME="S41"
-></A
 >4.7.6. Declare each variable and struct on its
-    own line.</H3
+    own line.</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 ></SPAN
 > when you want to declare a bunch of loop
     variables or other trivial variables; feel free to declare them
-    on 1 line. You should, although, provide a good comment on
+    on one line. You should, although, provide a good comment on
     their functions.</P
 ><P
 ><SPAN
 CLASS="SECT3"
 ><A
 NAME="S42"
-></A
->4.7.7. Use malloc/zalloc sparingly</H3
+>4.7.7. Use malloc/zalloc sparingly</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S43"
-></A
 >4.7.8. The Programmer Who Uses 'malloc' is
-    Responsible for Ensuring 'free'</H3
+    Responsible for Ensuring 'free'</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S44"
-></A
 >4.7.9. Add loaders to the `file_list' structure
-    and in order</H3
+    and in order</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="S45"
-></A
 >4.7.10. "Uncertain" new code and/or changes to
-    existing code, use FIXME</H3
+    existing code, use FIXME or XXX</A
+></H3
 ><P
 ><SPAN
 CLASS="emphasis"
 CLASS="SECT2"
 ><A
 NAME="S46"
-></A
 >4.8. Addendum: Template for files and function
-    comment blocks:</H2
+    comment blocks:</A
+></H2
 ><P
 ><SPAN
 CLASS="emphasis"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 2.11 2006/09/26 02:36:29 hal9 Exp $";
+>const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 2.13 2007/10/30 17:59:31 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source$
  *
  * Purpose     :  (Fill me in with a good description!)
  *
- * Copyright   :  Written by and Copyright (C) 2001-2006 the SourceForge
+ * Copyright   :  Written by and Copyright (C) 2001-2007 the SourceForge
  *                Privoxy team. http://www.privoxy.org/
  *
  *                Based on the Internet Junkbuster originally written
 CLASS="PROGRAMLISTING"
 >#ifndef _FILENAME_H
 #define _FILENAME_H
-#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 2.11 2006/09/26 02:36:29 hal9 Exp $"
+#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 2.13 2007/10/30 17:59:31 fabiankeil Exp $"
 /*********************************************************************
  *
  * File        :  $Source$
  *
  * Purpose     :  (Fill me in with a good description!)
  *
- * Copyright   :  Written by and Copyright (C) 2001-2006 the SourceForge
+ * Copyright   :  Written by and Copyright (C) 2001-2007 the SourceForge
  *                Privoxy team. http://www.privoxy.org/
  *
  *                Based on the Internet Junkbuster originally written
 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 <HTML
 ><HEAD
 ><TITLE
 >Contacting the developers, Bug Reporting and Feature Requests</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 REL="HOME"
 TITLE="Privoxy Developer Manual"
 HREF="index.html"><LINK
 CLASS="SECT1"
 ><A
 NAME="CONTACT"
-></A
->8. Contacting the developers, Bug Reporting and Feature Requests</H1
+>8. Contacting the developers, Bug Reporting and Feature Requests</A
+></H1
 ><P
 > We value your feedback. In fact, we rely on it to improve
  <SPAN
 CLASS="SECT2"
 ><A
 NAME="CONTACT-SUPPORT"
-></A
->8.1. Get Support</H2
+>8.1. Get Support</A
+></H2
 ><P
 > For casual users, our 
  <A
 >users
  mailing list</A
 >, where the developers also hang around.</P
+><P
+> Note that the Privoxy mailing lists are moderated. Posts from unsubscribed
+ addresses have to be accepted manually by a moderator. This may cause a
+ delay of several days and if you use a subject that doesn't clearly
+ mention Privoxy or one of its features, your message may be accidentally
+ discarded as spam.</P
+><P
+> If you aren't subscribed, you should therefore spend a few seconds
+ to come up with a proper subject. Additionally you should make it clear
+ that you want to get CC'd. Otherwise some responses will be directed to
+ the mailing list only, and you won't see them.</P
 ></DIV
 ><DIV
 CLASS="SECT2"
 CLASS="SECT2"
 ><A
 NAME="REPORTING"
-></A
->8.2. Reporting Problems</H2
+>8.2. Reporting Problems</A
+></H2
 ><P
 ><SPAN
 CLASS="QUOTE"
 CLASS="SECT3"
 ><A
 NAME="CONTACT-ADS"
-></A
->8.2.1. Reporting Ads or Other Configuration Problems</H3
+>8.2.1. Reporting Ads or Other Configuration Problems</A
+></H3
 ><P
 > Please send feedback on ads that slipped through, innocent images that were
  blocked, sites that don't work properly, and other configuration related problem of 
 CLASS="SECT3"
 ><A
 NAME="CONTACT-BUGS"
-></A
->8.2.2. Reporting Bugs</H3
+>8.2.2. Reporting Bugs</A
+></H3
 ><P
-> Please report all bugs <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->only</I
-></SPAN
-> through our
- bug tracker: 
+> Please report all bugs through our bug tracker: 
  <A
 HREF="http://sourceforge.net/tracker/?group_id=11118&atid=111118"
 TARGET="_top"
 >. If already submitted, please feel free to add any info to the 
   original report that might help to solve the issue.</P
 ><P
-> 
-  Please try to verify that it is a <SPAN
+>  Please try to verify that it is a <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
 > bug,
-  and not a browser or site bug first. If unsure,
+  and not a browser or site bug or documented behaviour that just happens
+  to be different than what you expected. If unsure,
   try <A
 HREF="http://config.privoxy.org/toggle?set=disable"
 TARGET="_top"
 > <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
->, and see if the problem persists.
-  If you are using your own custom configuration, please try
-  the stock configs to see if the problem is configuration related.</P
+>, and see if the problem persists.</P
+><P
+>  If you are using your own custom configuration, please try
+  the stock configs to see if the problem is configuration related.
+  If you're having problems with a feature that is disabled by default,
+  please ask around on the mailing list if others can reproduce the problem.</P
 ><P
->  If not using the latest version, the bug may have been found
+>  If you aren't using the latest Privoxy version, the bug may have been found
   and fixed in the meantime. We would appreciate if you could take the time
   to <A
 HREF="http://www.privoxy.org/user-manual/installation.html"
 >upgrade
   to the latest version</A
 > (or  even the latest CVS snapshot) and verify
-  your bug.</P
+  that your bug still exists.</P
 ><P
 >Please be sure to provide the following information:</P
 ><P
 >    The exact <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> version of the proxy software
+> version you are using
     (if you got the source from CVS, please also provide the source code revisions
      as shown in <A
 HREF="http://config.privoxy.org/show-version"
     sending the output of <SPAN
 CLASS="QUOTE"
 >"uname -a"</SPAN
-> should do.
+> should do,
+    in case of GNU/Linux, please also name the distribution.
    </P
 ></LI
 ><LI
 CLASS="APPLICATION"
 >Privoxy</SPAN
 > is one supplied
-    by the developers of <SPAN
+    by the <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> via SourceForge,
-    or somewhere else.
+> developers via SourceForge,
+    or if you got your copy somewhere else.
    </P
 ></LI
 ><LI
     another proxy such as <SPAN
 CLASS="APPLICATION"
 >Tor</SPAN
->. If so, please try 
-    disabling the other proxy.
+>. If so, please
+    temporary disable the other proxy to see if the symptoms change.
    </P
 ></LI
 ><LI
     action taken).
    </P
 ></LI
-><LI
-><P
->    <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Please provide your SF login, or email address</I
-></SPAN
->, in case we 
-    need to contact you.
-   </P
-></LI
 ></UL
 ></P
 ><P
+> You don't have to tell us your actual name when filing a problem
+ report, but please use a nickname so we can differentiate between
+ your messages and the ones entered by other "anonymous" users that
+ may respond to your request if they have the same problem or already
+ found a solution.</P
+><P
+> Please also check the status of your request a few days after submitting
+ it, as we may request additional information. If you use a SF id,
+ you should automatically get a mail when someone responds to your request.</P
+><P
 >  The <A
 HREF="http://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT"
 TARGET="_top"
 CLASS="SECT2"
 ><A
 NAME="CONTACT-FEATURE"
-></A
->8.3. Request New Features</H2
+>8.3. Request New Features</A
+></H2
 ><P
 > You are welcome to submit ideas on new features or other proposals
  for improvement through our feature request tracker at
 CLASS="SECT2"
 ><A
 NAME="CONTACT-OTHER"
-></A
->8.4. Other</H2
+>8.4. Other</A
+></H2
 ><P
 >For any other issues, feel free to use the mailing lists. Technically interested users
 and people who wish to contribute to the project are also welcome on the developers list!
 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 <HTML
 ><HEAD
 ><TITLE
 >Privoxy Copyright, License and History</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 REL="HOME"
 TITLE="Privoxy Developer Manual"
 HREF="index.html"><LINK
 CLASS="SECT1"
 ><A
 NAME="COPYRIGHT"
-></A
->9. Privoxy Copyright, License and History</H1
+>9. Privoxy Copyright, License and History</A
+></H1
 ><P
-> Copyright © 2001 - 2006 by Privoxy Developers <TT
+> Copyright © 2001 - 2007 by Privoxy Developers <CODE
 CLASS="EMAIL"
 ><<A
 HREF="mailto:ijbswa-developers@lists.sourceforge.net"
 >ijbswa-developers@lists.sourceforge.net</A
->></TT
+>></CODE
 ></P
 ><P
 > Some source code is based on code Copyright © 1997 by Anonymous Coders
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN1222"
-></A
->9.1. License</H2
+NAME="AEN1223"
+>9.1. License</A
+></H2
 ><P
 > <SPAN
 CLASS="APPLICATION"
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN1238"
-></A
->9.2. History</H2
+NAME="AEN1239"
+>9.2. History</A
+></H2
 ><P
 > A long time ago, there was the
  <A
 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 <HTML
 ><HEAD
 ><TITLE
 >The CVS Repository</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 REL="HOME"
 TITLE="Privoxy Developer Manual"
 HREF="index.html"><LINK
 CLASS="SECT1"
 ><A
 NAME="CVS"
-></A
->2. The CVS Repository</H1
+>2. The CVS Repository</A
+></H1
 ><P
 >      If you become part of the active development team, you will eventually
       need write access to our holy grail, the CVS repository. One of the 
 CLASS="SECT2"
 ><A
 NAME="CVSACCESS"
-></A
->2.1. Access to CVS</H2
+>2.1. Access to CVS</A
+></H2
 ><P
 >        The project's CVS repository is hosted on
         <A
 CLASS="SECT2"
 ><A
 NAME="CVSBRANCHES"
-></A
->2.2. Branches</H2
+>2.2. Branches</A
+></H2
 ><P
 >       Within the CVS repository, there are modules and branches. As
        mentioned, the sources are in the <TT
 CLASS="SECT2"
 ><A
 NAME="CVSCOMMIT"
-></A
->2.3. CVS Commit Guidelines</H2
+>2.3. CVS Commit Guidelines</A
+></H2
 ><P
 >        The source tree is the heart of every software project. Every effort must
         be made to ensure that it is readable, compilable and consistent at all
 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 <HTML
 ><HEAD
 ><TITLE
 >Documentation Guidelines</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 REL="HOME"
 TITLE="Privoxy Developer Manual"
 HREF="index.html"><LINK
 CLASS="SECT1"
 ><A
 NAME="DOCUMENTATION"
-></A
->3. Documentation Guidelines</H1
+>3. Documentation Guidelines</A
+></H1
 ><P
 >    All formal documents are maintained in Docbook SGML and located in the
-    <TT
+    <SAMP
 CLASS="COMPUTEROUTPUT"
->doc/source/*</TT
+>doc/source/*</SAMP
 > directory. You will need
     <A
 HREF="http://www.docbook.org"
     </P
 ><P
 >     Formal documents are built with the Makefile targets of
-     <TT
+     <SAMP
 CLASS="COMPUTEROUTPUT"
->make dok</TT
+>make dok</SAMP
 >, or alternately
-     <TT
+     <SAMP
 CLASS="COMPUTEROUTPUT"
->make redhat-dok</TT
+>make redhat-dok</SAMP
 >. If you have problems,
      try both. The build process uses the document SGML sources in
-     <TT
+     <SAMP
 CLASS="COMPUTEROUTPUT"
->doc/source/*/*</TT
+>doc/source/*/*</SAMP
 > to update all text files in
-     <TT
+     <SAMP
 CLASS="COMPUTEROUTPUT"
->doc/text/</TT
+>doc/text/</SAMP
 > and to update all HTML
-     documents in <TT
+     documents in <SAMP
 CLASS="COMPUTEROUTPUT"
->doc/webserver/</TT
+>doc/webserver/</SAMP
 >.
     </P
 ><P
 TYPE="1"
 ><LI
 ><P
->        First, build the docs by running <TT
+>        First, build the docs by running <SAMP
 CLASS="COMPUTEROUTPUT"
 >make
-        dok</TT
-> (or alternately <TT
+        dok</SAMP
+> (or alternately <SAMP
 CLASS="COMPUTEROUTPUT"
 >make
-        redhat-dok</TT
->). For PDF docs, do <TT
+        redhat-dok</SAMP
+>). For PDF docs, do <SAMP
 CLASS="COMPUTEROUTPUT"
 >make
-        dok-pdf</TT
+        dok-pdf</SAMP
 >.
       </P
 ></LI
 ><LI
 ><P
->        Run <TT
+>        Run <SAMP
 CLASS="COMPUTEROUTPUT"
->make webserver</TT
+>make webserver</SAMP
 > which copies all
-        files from <TT
+        files from <SAMP
 CLASS="COMPUTEROUTPUT"
->doc/webserver</TT
+>doc/webserver</SAMP
 > to the
         sourceforge webserver via scp.
       </P
 CLASS="SECT2"
 ><A
 NAME="SGML"
-></A
->3.1. Quickstart to Docbook and SGML</H2
+>3.1. Quickstart to Docbook and SGML</A
+></H2
 ><P
 > If you are not familiar with SGML, it is a markup language similar to HTML. 
  Actually, not a mark up language per se, but a language used to define 
 CLASS="SECT2"
 ><A
 NAME="DOCSTYLE"
-></A
 >3.2. <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
-> Documentation Style</H2
+> Documentation Style</A
+></H2
 ><P
 >    It will be easier if everyone follows a similar writing style. This 
     just makes it easier to read what someone else has written if it 
 CLASS="SECT2"
 ><A
 NAME="AEN217"
-></A
->3.3. Privoxy Custom Entities</H2
+>3.3. Privoxy Custom Entities</A
+></H2
 ><P
 >  <SPAN
 CLASS="APPLICATION"
 > 
     version string, e.g. <SPAN
 CLASS="QUOTE"
->"3.0.6"</SPAN
+>"3.0.7"</SPAN
 >.
    </TD
 ></TR
 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 <HTML
 ><HEAD
 ><TITLE
 >Privoxy Developer Manual</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 REL="NEXT"
 TITLE="Introduction"
 HREF="introduction.html"><LINK
 CLASS="TITLE"
 ><A
 NAME="AEN2"
-></A
->Privoxy Developer Manual</H1
+>Privoxy Developer Manual</A
+></H1
 ><P
 CLASS="PUBDATE"
 >     <SUB
       <A
 HREF="copyright.html"
 >Copyright</A
-> © 2001-2006 by 
+> © 2001-2007 by 
       <A
-HREF="http://www.privoxy.org"
+HREF="http://www.privoxy.org/"
 TARGET="_top"
 >Privoxy Developers</A
 >
     <BR></P
 ><P
 CLASS="PUBDATE"
->$Id: developer-manual.sgml,v 2.11 2006/09/26 02:36:29 hal9 Exp $<BR></P
+>$Id: developer-manual.sgml,v 2.13 2007/10/30 17:59:31 fabiankeil Exp $<BR></P
 ><DIV
 ><DIV
 CLASS="ABSTRACT"
+><P
+></P
 ><A
 NAME="AEN9"
 ></A
 ><P
-></P
-><P
 > The developer manual provides guidance on coding, testing, packaging, documentation
  and other issues of importance to those involved with
  <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
 > development. It is mandatory (and helpful!) reading
- for anyone who wants to join the team.</P
+ for anyone who wants to join the team. Note that it's currently out of date
+ and may not be entirely correct. As always, patches are welcome.</P
 ><P
 > Please note that this document is constantly evolving. This copy represents
- the state at the release of version 3.0.6.
+ the state at the release of version 3.0.7.
  You can find the latest version of the this manual at <A
 HREF="http://www.privoxy.org/developer-manual/"
 TARGET="_top"
 >4.7.10. <A
 HREF="coding.html#S45"
 >"Uncertain" new code and/or changes to
-    existing code, use FIXME</A
+    existing code, use FIXME or XXX</A
 ></DT
 ></DL
 ></DD
 ><DL
 ><DT
 >9.1. <A
-HREF="copyright.html#AEN1222"
+HREF="copyright.html#AEN1223"
 >License</A
 ></DT
 ><DT
 >9.2. <A
-HREF="copyright.html#AEN1238"
+HREF="copyright.html#AEN1239"
 >History</A
 ></DT
 ></DL
 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 <HTML
 ><HEAD
 ><TITLE
 >Introduction</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 REL="HOME"
 TITLE="Privoxy Developer Manual"
 HREF="index.html"><LINK
 CLASS="SECT1"
 ><A
 NAME="INTRODUCTION"
-></A
->1. Introduction</H1
+>1. Introduction</A
+></H1
 ><P
 >     <SPAN
 CLASS="APPLICATION"
      <SPAN
 CLASS="APPLICATION"
 >Junkbuster</SPAN
->, is an Open Source project 
-     and licensed under the GPL. As such, <SPAN
+>, is a Free Software project 
+     and the code is licensed under the GPL. As such,
+     <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
->
-     development is potentially open to anyone who has the time, knowledge,
-     and desire to contribute in any capacity. Our goals are simply to
-     continue the mission, to improve <SPAN
+> development is potentially open
+     to anyone who has the time, knowledge, and desire to contribute
+     in any capacity. Our goals are simply to continue the mission,
+     to improve <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
 >, and
     </P
 ><P
 >     One does not have to be a programmer to contribute. Packaging, testing,
-     and porting, are all important jobs as well.
+     documenting and porting, are all important jobs as well.
     </P
 ><DIV
 CLASS="SECT2"
 CLASS="SECT2"
 ><A
 NAME="QUICKSTART"
-></A
->1.1. Quickstart to Privoxy Development</H2
+>1.1. Quickstart to Privoxy Development</A
+></H2
 ><P
 >    The first step is to join the <A
 HREF="mailto:ijbswa-developers@lists.sourceforge.net"
 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 <HTML
 ><HEAD
 ><TITLE
 >Releasing a New Version</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 REL="HOME"
 TITLE="Privoxy Developer Manual"
 HREF="index.html"><LINK
 CLASS="SECT1"
 ><A
 NAME="NEWRELEASE"
-></A
->6. Releasing a New Version</H1
+>6. Releasing a New Version</A
+></H1
 ><P
 >        When we release versions of <SPAN
 CLASS="APPLICATION"
 CLASS="SECT2"
 ><A
 NAME="VERSIONNUMBERS"
-></A
->6.1. Version numbers</H2
+>6.1. Version numbers</A
+></H2
 ><P
 >      First you need to determine which version number the release will have. 
       <SPAN
 CLASS="SECT2"
 ><A
 NAME="BEFORERELEASE"
-></A
->6.2. Before the Release: Freeze</H2
+>6.2. Before the Release: Freeze</A
+></H2
 ><P
 >       The following <SPAN
 CLASS="emphasis"
 CLASS="SECT2"
 ><A
 NAME="THERELEASE"
-></A
->6.3. Building and Releasing the Packages</H2
+>6.3. Building and Releasing the Packages</A
+></H2
 ><P
 >      Now the individual packages can be built and released. Note that for
       GPL reasons the first package to be released is always the source tarball.
 CLASS="SECT3"
 ><A
 NAME="PACK-GUIDELINES"
-></A
->6.3.1. Note on Privoxy Packaging</H3
+>6.3.1. Note on Privoxy Packaging</A
+></H3
 ><P
 >      Please keep these general guidelines in mind when putting together 
       your package. These apply to <SPAN
 CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-TARBALL"
-></A
->6.3.2. Source Tarball</H3
+>6.3.2. Source Tarball</A
+></H3
 ><P
 >      First, <SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-RPM"
-></A
->6.3.3. SuSE, Conectiva or Red Hat RPM</H3
+>6.3.3. SuSE, Conectiva or Red Hat RPM</A
+></H3
 ><P
 >        In following text, replace <TT
 CLASS="REPLACEABLE"
 CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-OS2"
-></A
->6.3.4. OS/2</H3
+>6.3.4. OS/2</A
+></H3
 ><P
 >      First, <SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-SOLARIS"
-></A
->6.3.5. Solaris</H3
+>6.3.5. Solaris</A
+></H3
 ><P
 >      Login to Sourceforge's compilefarm via ssh:
        </P
 CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-WINDOWS"
-></A
->6.3.6. Windows</H3
+>6.3.6. Windows</A
+></H3
 ><P
 >        You should ensure you have the latest version of Cygwin (from
         <A
 CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-DEBIAN"
-></A
->6.3.7. Debian</H3
+>6.3.7. Debian</A
+></H3
 ><P
 >        First, <SPAN
 CLASS="emphasis"
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->  debchange -v 3.0.6-stable-1 "New upstream version"</PRE
+>  debchange -v 3.0.7-beta-1 "New upstream version"</PRE
 ></TD
 ></TR
 ></TABLE
 >        This will create
         <TT
 CLASS="FILENAME"
->../privoxy_3.0.6-stable-1_i386.deb</TT
+>../privoxy_3.0.7-beta-1_i386.deb</TT
 >
         which can be uploaded.  To upload the package to Sourceforge, simply
        issue
 CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-MACOSX"
-></A
->6.3.8. Mac OSX</H3
+>6.3.8. Mac OSX</A
+></H3
 ><P
 >      First, <SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-FREEBSD"
-></A
->6.3.9. FreeBSD</H3
+>6.3.9. FreeBSD</A
+></H3
 ><P
 >      Login to Sourceforge's compile-farm via ssh:
        </P
 CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-HPUX"
-></A
->6.3.10. HP-UX 11</H3
+>6.3.10. HP-UX 11</A
+></H3
 ><P
 >      First, <SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-AMIGA"
-></A
->6.3.11. Amiga OS</H3
+>6.3.11. Amiga OS</A
+></H3
 ><P
 >      First, <SPAN
 CLASS="emphasis"
 CLASS="SECT3"
 ><A
 NAME="NEWRELEASE-AIX"
-></A
->6.3.12. AIX</H3
+>6.3.12. AIX</A
+></H3
 ><P
 >      Login to Sourceforge's compilefarm via ssh:
        </P
 CLASS="SECT2"
 ><A
 NAME="RELEASING"
-></A
->6.4. Uploading and Releasing Your Package</H2
+>6.4. Uploading and Releasing Your Package</A
+></H2
 ><P
 >      After the package is ready, it is time to upload it 
       to SourceForge, and go through the release steps. The upload
 CLASS="emphasis"
 ><I
 CLASS="EMPHASIS"
->3.0.6
+>3.0.7
      (beta)</I
 ></SPAN
 >.
 CLASS="SECT2"
 ><A
 NAME="AFTERRELEASE"
-></A
->6.5. After the Release</H2
+>6.5. After the Release</A
+></H2
 ><P
 >      When all (or: most of the) packages have been uploaded and made available,
       send an email to the <A
 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 <HTML
 ><HEAD
 ><TITLE
 >See also</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 REL="HOME"
 TITLE="Privoxy Developer Manual"
 HREF="index.html"><LINK
 CLASS="SECT1"
 ><A
 NAME="SEEALSO"
-></A
->10. See also</H1
+>10. See also</A
+></H1
 ><P
 > Other references and sites of interest to <SPAN
 CLASS="APPLICATION"
 HREF="http://www.squid-cache.org/"
 TARGET="_top"
 >http://www.squid-cache.org/</A
->, a very popular
+>, a popular
    caching proxy, which is often used together with <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
 ><TR
 ><TD
 >   <A
+HREF="http://www.pps.jussieu.fr/~jch/software/polipo/"
+TARGET="_top"
+>http://www.pps.jussieu.fr/~jch/software/polipo/</A
+>,
+   <SPAN
+CLASS="APPLICATION"
+>Polipo</SPAN
+> is a caching proxy with advanced features
+   like pipelining, multiplexing and caching of partial instances. In many setups
+   it can be used as <SPAN
+CLASS="APPLICATION"
+>Squid</SPAN
+> replacement.
+  </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+>
+ <P
+></P
+><TABLE
+BORDER="0"
+><TBODY
+><TR
+><TD
+>   <A
 HREF="http://tor.eff.org/"
 TARGET="_top"
 >http://tor.eff.org/</A
 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 <HTML
 ><HEAD
 ><TITLE
 >Testing Guidelines</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 REL="HOME"
 TITLE="Privoxy Developer Manual"
 HREF="index.html"><LINK
 CLASS="SECT1"
 ><A
 NAME="TESTING"
-></A
->5. Testing Guidelines</H1
+>5. Testing Guidelines</A
+></H1
 ><P
 >To be filled.</P
 ><DIV
 CLASS="SECT2"
 ><A
 NAME="TESTING-PLAN"
-></A
->5.1. Testplan for releases</H2
+>5.1. Testplan for releases</A
+></H2
 ><P
 >       Explain release numbers. major, minor. developer releases. etc.
 
 CLASS="SECT2"
 ><A
 NAME="TESTING-REPORT"
-></A
->5.2. Test reports</H2
+>5.2. Test reports</A
+></H2
 ><P
 >Please submit test reports only with the <A
 HREF="http://sourceforge.net/tracker/?func=add&group_id=11118&atid=395005"
 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
 <HTML
 ><HEAD
 ><TITLE
 >Update the Webserver</TITLE
 ><META
 NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 REL="HOME"
 TITLE="Privoxy Developer Manual"
 HREF="index.html"><LINK
 CLASS="SECT1"
 ><A
 NAME="WEBSERVER-UPDATE"
-></A
->7. Update the Webserver</H1
+>7. Update the Webserver</A
+></H1
 ><P
 >    The webserver should be updated at least with each stable release. When
     updating, please follow these steps to make sure that no broken links,
 
 ><BR></P
 ><P
 CLASS="PUBDATE"
->$Id: faq.sgml,v 2.31 2007/11/05 02:34:53 hal9 Exp $<BR></P
+>$Id: faq.sgml,v 2.33 2007/11/15 03:30:20 hal9 Exp $<BR></P
 ><DIV
 ><DIV
 CLASS="ABSTRACT"
 
 >.</P
 ><P
 > On the other hand, if you use non-Microsoft products, and you occasionally 
- notice wierd characters on pages, you might want to try it.</P
+ notice weird characters on pages, you might want to try it.</P
 ></DIV
 ><DIV
 CLASS="SECT2"
 
-
-<HTML><HEAD><TITLE>Manpage of PRIVOXY</TITLE>
-<LINK REL="STYLESHEET" TYPE="text/css" HREF="../p_doc.css"></HEAD><BODY>
-<H1>PRIVOXY</H1>
-Section:  (1)<BR>Updated: 13 November 2006<BR><A HREF="#index">Index</A>
-<HR>
-
-<A NAME="lbAB"> </A>
-<H2>NAME</H2>
-
-privoxy - Privacy Enhancing Proxy
-<A NAME="lbAC"> </A>
-<H2>SYNOPSIS</H2>
-
-<P>
-<B>privoxy</B> [<B>--help</B> ] [<B>--version</B> ] [<B>--no-daemon</B> ] [<B>--pidfile </B><I>pidfile</I><B></B> ] [<B>--user </B><I>user[.group]</I><B></B> ] [<B>--chroot</B> ] [<B></B><I>configfile</I><B></B> ]
-<P>
-<A NAME="lbAD"> </A>
-<H2>OPTIONS</H2>
-
-<P>
-
-<B>Privoxy</B> may be invoked with the following command line
-options:
-<DL COMPACT>
-<DT><B>--help</B><DD>
-Print brief usage info and exit.
-<DT><B>--version</B><DD>
-Print version info and exit.
-<DT><B>--no-daemon</B><DD>
-Don't  become  a daemon, i.e. don't fork and become process group
-leader, don't detach from controlling tty, and do all logging there.
-<DT><B>--pidfile </B><I>pidfile</I><B></B><DD>
-On startup, write the process ID to <I>pidfile</I>.
-Delete the <I>pidfile</I> on exit.
-Failure to create or delete the <I>pidfile</I>
-is non-fatal. If no <B>--pidfile</B> option is given, no PID file will be used.
-<DT><B>--user </B><I>user[.group]</I><B></B><DD>
-After (optionally) writing the PID file, assume the user ID of
-<I>user</I> and the GID of
-<I>group</I>, or, if the optional
-<I>group</I> was not given, the default group of
-<I>user</I>. Exit if the privileges are not
-sufficient to do so.
-<DT><B>--chroot</B><DD>
-Before changing to the user ID given in the --user option, chroot to
-that user's home directory, i.e. make the kernel pretend to the
-<B>Privoxy</B> process that the directory tree starts
-there. If set up carefully, this can limit the impact of possible
-vulnerabilities in <B>Privoxy</B> to the files contained in
-that hierarchy. 
-</DL>
-<P>
-
-If the <I>configfile</I> is not specified on  the  command  line,
-<B>Privoxy</B>  will  look for a file named
-<I>config</I> in the current directory . If no
-<I>configfile</I> is found, <B>Privoxy</B> will 
-fail to start.
-<A NAME="lbAE"> </A>
-<H2>DESCRIPTION</H2>
-
-<P>
-
-Privoxy is a 
-web proxy
-with advanced filtering capabilities for protecting
-privacy, modifying web page data, managing 
-cookies, 
-controlling access, and removing ads, banners, pop-ups and other obnoxious
-Internet junk. Privoxy has a very flexible configuration and can be
-customized to suit individual needs and tastes. Privoxy has application for
-both stand-alone systems and multi-user networks.
-<P>
-
-Privoxy is based on Internet Junkbuster (tm).
-<A NAME="lbAF"> </A>
-<H2>INSTALLATION AND USAGE</H2>
-
-<P>
-
-Browsers must be individually configured to use <B>Privoxy</B> as
-a HTTP proxy.  The default setting is  for  localhost,  on port  8118
-(configurable in the main config file).  To set the HTTP proxy in Netscape
-and Mozilla, go through:  <B>Edit</B>;
-<B>Preferences</B>;  <B>Advanced</B>;
-<B>Proxies</B>;  <B>Manual Proxy Configuration</B>;
-<B>View</B>. 
-<P>
-
-For Firefox, go through: <B>Tools</B>; 
-<B>Options</B>; <B>General</B>;
-<B>Connection Settings</B>;
-<B>Manual Proxy Configuration</B>. 
-<P>
-
-For Internet Explorer, go through: <B>Tools</B>; 
-<B>Internet Properties</B>; <B>Connections</B>;
-<B>LAN Settings</B>. 
-<P>
-
-The Secure (SSL) Proxy should also be set to the same values, otherwise
-https: URLs will not be proxied. Note: <B>Privoxy</B> can only
-proxy HTTP and HTTPS traffic. Do not try it with FTP or other protocols.
-HTTPS presents some limitations, and not all features will work with HTTPS 
-connections.
-<P>
-
-For other browsers, check the documentation.
-<A NAME="lbAG"> </A>
-<H2>CONFIGURATION</H2>
-
-<P>
-
-<B>Privoxy</B> can be configured with the various configuration
-files. The default configuration files are: <I>config</I>,
-<I>default.filter</I>, and
-<I>default.action</I>. <I>user.action</I> should 
-be used for locally defined exceptions to the default rules of
-<I>default.action</I>, and <I>user.filter</I> for 
-locally defined filters. These are well commented.  On Unix
-and Unix-like systems, these are located in
-<I>/etc/privoxy/</I> by default. 
-<P>
-
-<B>Privoxy</B> uses the concept of <B>actions</B> 
-in order to manipulate the data stream between the browser and remote sites.
-There are various actions available with specific functions for such things 
-as blocking web sites, managing cookies, etc. These actions can be invoked
-individually or combined, and used against individual URLs, or groups of URLs 
-that can be defined using wildcards and regular expressions. The result is
-that the user has greatly enhanced control and freedom.
-<P>
-
-The actions list (ad blocks, etc) can also be configured with your
-web browser at <A HREF="http://config.privoxy.org/">http://config.privoxy.org/.</A>
-<B>Privoxy's</B> configuration parameters  can also  be viewed at
-the same page. In addition, <B>Privoxy</B> can be toggled on/off.
-This is an internal page, and does not require Internet access.
-<P>
-
-See the <I>User Manual</I> for a detailed
-explanation of installation, general usage, all configuration options, new
-features and notes on upgrading.
-<A NAME="lbAH"> </A>
-<H2>SAMPLE CONFIGURATION</H2>
-
-<P>
-
-A brief example of what a simple <I>default.action</I>
-configuration might look like:
-<P>
-<PRE>
- # Define a few useful custom aliases for later use
- {{alias}}
-
- # Useful aliases that combine more than one action
- +crunch-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
- -crunch-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
- +block-as-image = +block +handle-as-image
-
- # Fragile sites should have the minimum changes
- fragile     = -block -deanimate-gifs -fast-redirects -filter \
-               -hide-referer -prevent-cookies -kill-popups
-
- ## Turn some actions on ################################
- ## NOTE: Actions are off by default, unless explictily turned on 
- ## otherwise with the '+' operator.
-
-{ \
--add-header \
--block \
--content-type-overwrite \
--crunch-client-header \
--crunch-if-none-match \
--crunch-outgoing-cookies \
--crunch-incoming-cookies \
--crunch-server-header \
-+deanimate-gifs{last} \
--downgrade-http-version \
--fast-redirects \
--filter{js-annoyances} \
--filter{js-events} \
--filter{html-annoyances} \
--filter{content-cookies} \
-+filter{refresh-tags} \
--filter{unsolicited-popups} \
--filter{all-popups} \
--filter{img-reorder} \
--filter{banners-by-size} \
--filter{banners-by-link} \
-+filter{webbugs} \
--filter{tiny-textforms} \
-+filter{jumping-windows} \
--filter{frameset-borders} \
--filter{demoronizer} \
--filter{shockwave-flash} \
--filter{quicktime-kioskmode} \
--filter{fun} \
--filter{crude-parental} \
-+filter{ie-exploits} \
--filter{site-specifics} \
--filter{google} \
--filter{yahoo} \
--filter{msn} \
--filter{blogspot} \
--filter{xml-to-html} \
--filter{html-to-xml} \
--filter{no-ping} \
--filter{hide-tor-exit-notation} \
--filter-client-headers \
--filter-server-headers \
--force-text-mode \
--handle-as-empty-document
--handle-as-image \
--hide-accept-language \
--hide-content-disposition \
--hide-if-modified-since \
-+hide-forwarded-for-headers \
-+hide-from-header{block} \
-+hide-referrer{forge} \
--hide-user-agent \
--inspect-jpegs \
--kill-popups \
--limit-connect \
--overwrite-last-modified \
--redirect \
-+prevent-compression \
--send-vanilla-wafer \
--send-wafer \
-+session-cookies-only \
-+set-image-blocker{pattern} \
--treat-forbidden-connects-like-blocks \
-}
-/ # '/' Match *all* URL patterns
-
- 
- # Block all URLs that match these patterns
- { +block }
-  ad.
-  ad[sv].
-  .*ads.
-  banner?.
-  /.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)
-  .hitbox.com 
-  media./.*(ads|banner)
-
- # Block, and treat these URL patterns as if they were 'images'.
- # We would expect these to be ads.
- { +block-as-image }
-  .ad.doubleclick.net
-  .a[0-9].yimg.com/(?:(?!/i/).)*$
-  ad.*.doubleclick.net
-
- # Make exceptions for these harmless ones that would be 
- # caught by our +block patterns just above.
- { -block }
-  adsl.
-  adobe.
-  advice.
-  .*downloads.
-  # uploads or downloads
-  /.*loads
-</PRE>
-
-<P>
-
-Then for a <I>user.action</I>, we would put local,
-narrowly defined exceptions:
-<P>
-<PRE>
- # Re-define aliases as needed here
- {{alias}}
-
- # Useful aliases
- -crunch-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
- 
- # Set personal exceptions to the policies in default.action #######
-
- # Sites where we want persistent cookies, so allow *all* cookies
- { -crunch-cookies -session-cookies-only }
-  .redhat.com
-  .sun.com
-  .msdn.microsoft.com
- 
- # These sites breaks easily. Use our "fragile" alias here.
- { fragile }
-  .forbes.com
-  mybank.example.com
-
- # Replace example.com's style sheet with one of my choosing
- { +redirect{<A HREF="http://localhost/css-replacements/example.com.css}">http://localhost/css-replacements/example.com.css}</A> }
-  example.com/stylesheet.css
-</PRE>
-
-<P>
-
-See the comments in the configuration files themselves, or the 
-<I>User Manual</I>
-for full explanations of the above syntax, and other <B>Privoxy</B>
-configuration options.
-<A NAME="lbAI"> </A>
-<H2>FILES</H2>
-
-<P>
-<PRE>
- 
- <I>/usr/sbin/privoxy</I>
- <I>/etc/privoxy/config</I>
- <I>/etc/privoxy/default.action</I>
- <I>/etc/privoxy/standard.action</I>
- <I>/etc/privoxy/user.action</I>
- <I>/etc/privoxy/default.filter</I>
- <I>/etc/privoxy/user.filter</I>
- <I>/etc/privoxy/trust</I>
- <I>/etc/privoxy/templates/*</I>
- <I>/var/log/privoxy/logfile</I>
-</PRE>
-
-<P>
-
-Various other files should be included, but may vary depending on platform
-and build configuration. Additional documentation should be included in the local
-documentation directory.
-<A NAME="lbAJ"> </A>
-<H2>SIGNALS</H2>
-
-<P>
-
-<B>Privoxy</B> terminates on the <B>SIGINT</B>,
-<B>SIGTERM</B> and <B>SIGABRT</B> signals. Log
-rotation scripts may cause a re-opening of the logfile by sending a 
-<B>SIGHUP</B> to <B>Privoxy</B>. Note that unlike
-other daemons,  <B>Privoxy</B> does not need to be made aware of
-config file changes by <B>SIGHUP</B> -- it will detect them
-automatically. 
-<A NAME="lbAK"> </A>
-<H2>NOTES</H2>
-
-<P>
-
-Please see the <I>User Manual</I> on how to contact the
-developers, for feature requests, reporting problems, and other questions.
-<A NAME="lbAL"> </A>
-<H2>SEE ALSO</H2>
-
-<P>
-
-Other references and sites of interest to <B>Privoxy</B>
-users:
-<P>
-
-<P>
-<A HREF="http://www.privoxy.org/">http://www.privoxy.org/,</A> 
-the <B>Privoxy</B> Home page. 
-<P>
-<A HREF="http://www.privoxy.org/faq/">http://www.privoxy.org/faq/,</A> 
-the <B>Privoxy</B> FAQ. 
-<P>
-<A HREF="http://sourceforge.net/projects/ijbswa/">http://sourceforge.net/projects/ijbswa/,</A> 
-the Project Page for <B>Privoxy</B> on 
-SourceForge.
-<P>
-<A HREF="http://config.privoxy.org/">http://config.privoxy.org/,</A>
-the web-based user interface. <B>Privoxy</B> must be
-running for this to work. Shortcut: <A HREF="http://p.p/">http://p.p/</A>
-<P>
-<A HREF="http://sourceforge.net/tracker/?group_id=11118">http://sourceforge.net/tracker/?group_id=11118</A>&atid=460288, to submit ``misses'' and other
-configuration related suggestions to the developers. 
-<P>
-<A HREF="http://www.junkbusters.com/ht/en/cookies.html">http://www.junkbusters.com/ht/en/cookies.html,</A>
-an explanation how cookies are used to track web users.
-<P>
-<A HREF="http://www.junkbusters.com/ijb.html">http://www.junkbusters.com/ijb.html,</A>
-the original Internet Junkbuster.
-<P>
-<A HREF="http://privacy.net/">http://privacy.net/,</A> a useful site
-to check what information about you is leaked while you browse the web.
-<P>
-<A HREF="http://www.squid-cache.org/">http://www.squid-cache.org/,</A> a very popular
-caching proxy, which is often used together with <B>Privoxy</B>.
-<P>
-<A HREF="http://tor.eff.org/">http://tor.eff.org/,</A> 
-<B>Tor</B> can help anonymize web browsing, 
-web publishing, instant messaging, IRC, SSH, and other applications.
-<P>
-<A HREF="http://www.privoxy.org/developer-manual/">http://www.privoxy.org/developer-manual/,</A> 
-the <B>Privoxy</B> developer manual. 
-<A NAME="lbAM"> </A>
-<H2>DEVELOPMENT TEAM</H2>
-
-<P>
-<PRE>
- Fabian Keil, developer
- David Schmidt, developer
- 
- Hal Burgiss
- Ian Cummings
- Roland Rosenfeld
-</PRE>
-
-<A NAME="lbAN"> </A>
-<H2>COPYRIGHT AND LICENSE</H2>
-
-<A NAME="lbAO"> </A>
-<H3>COPYRIGHT</H3>
-
-<P>
-
-Copyright (C) 2001 - 2006 by Privoxy Developers <<A HREF="mailto:ijbswa-developers@lists.sourceforge.net">ijbswa-developers@lists.sourceforge.net</A>>
-<P>
-
-Some source code is based on code Copyright (C) 1997 by Anonymous Coders
-and Junkbusters, Inc. and licensed under the <I>GNU General Public
-License</I>.
-<A NAME="lbAP"> </A>
-<H3>LICENSE</H3>
-
-<P>
-
-<B>Privoxy</B> is free software; you can
-redistribute it and/or modify it under the terms of the 
-<I>GNU General Public
-License</I>, version 2, as published by the Free Software Foundation.
-<P>
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the 
-<I>GNU General Public License</I> for
-more details, which is available from the Free Software Foundation, Inc, 
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-<P>
-
-You should have received a copy of the  <I>GNU General Public License</I>
-along with this program; if not, write to the  Free Software
-Foundation, Inc. 51 Franklin Street, Fifth Floor
-Boston, MA 02110-1301
-USA 
-<P>
-
-<HR>
-<A NAME="index"> </A><H2>Index</H2>
-<DL>
-<DT><A HREF="#lbAB">NAME</A><DD>
-<DT><A HREF="#lbAC">SYNOPSIS</A><DD>
-<DT><A HREF="#lbAD">OPTIONS</A><DD>
-<DT><A HREF="#lbAE">DESCRIPTION</A><DD>
-<DT><A HREF="#lbAF">INSTALLATION AND USAGE</A><DD>
-<DT><A HREF="#lbAG">CONFIGURATION</A><DD>
-<DT><A HREF="#lbAH">SAMPLE CONFIGURATION</A><DD>
-<DT><A HREF="#lbAI">FILES</A><DD>
-<DT><A HREF="#lbAJ">SIGNALS</A><DD>
-<DT><A HREF="#lbAK">NOTES</A><DD>
-<DT><A HREF="#lbAL">SEE ALSO</A><DD>
-<DT><A HREF="#lbAM">DEVELOPMENT TEAM</A><DD>
-<DT><A HREF="#lbAN">COPYRIGHT AND LICENSE</A><DD>
-<DL>
-<DT><A HREF="#lbAO">COPYRIGHT</A><DD>
-<DT><A HREF="#lbAP">LICENSE</A><DD>
-</DL>
-</DL>
-<HR>
-This document was created by
-man2html,
-using the manual pages.<BR>
-Time: 01:57:58 GMT, November 14, 2006
-</BODY>
-</HTML>
 
 >    <DIV
 CLASS="TABLE"
 ><A
-NAME="AEN2145"
+NAME="AEN2149"
 ></A
 ><P
 ><B
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN2244"
+NAME="AEN2248"
 >8.1. Finding the Right Mix</A
 ></H2
 ><P
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN2251"
+NAME="AEN2255"
 >8.2. How to Edit</A
 ></H2
 ><P
 >.
  Note: the config file option <A
 HREF="config.html#ENABLE-EDIT-ACTIONS"
->enale-edit-actions</A
+>enable-edit-actions</A
 > must be enabled for
  this to work. The editor allows both fine-grained control over every single
  feature on a per-URL basis, and easy choosing from wholesale sets of defaults
 ><H3
 CLASS="SECT3"
 ><A
-NAME="AEN2342"
+NAME="AEN2346"
 >8.4.1. The Domain Pattern</A
 ></H3
 ><P
 ><H3
 CLASS="SECT3"
 ><A
-NAME="AEN2413"
+NAME="AEN2417"
 >8.4.2. The Path Pattern</A
 ></H3
 ><P
  can tell them apart from URL patterns. Everything after the colon
  including white space, is interpreted as a regular expression with
  path pattern syntax, except that tag patterns aren't left-anchored
- automatically (Privoxy doesn't silently add a <SPAN
+ automatically (<SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> doesn't silently add a <SPAN
 CLASS="QUOTE"
 >"^"</SPAN
 >,
  tags can be used to activate other tagger actions, as long as these other
  taggers look for headers that haven't already be parsed.</P
 ><P
-> For example you could tag client requests which use the POST method,
- use this tag to activate another tagger that adds a tag if cookies
- are send, and then block based on the cookie tag. However if you'd
- reverse the position of the described taggers, and activated the method
- tagger based on the cookie tagger, no method tags would be created.
+> For example you could tag client requests which use the
+ <TT
+CLASS="LITERAL"
+>POST</TT
+> method,
+ then use this tag to activate another tagger that adds a tag if cookies
+ are sent, and then use a block action based on the cookie tag. This allows
+ the outcome of one action, to be input into a subsequent action. However if
+ you'd reverse the position of the described taggers, and activated the
+ method tagger based on the cookie tagger, no method tags would be created.
  The method tagger would look for the request line, but at the time
- the cookie tag is created the request line has already been parsed.</P
+ the cookie tag is created, the request line has already been parsed.</P
 ><P
 > While this is a limitation you should be aware of, this kind of
  indirection is seldom needed anyway and even the example doesn't
 >Typical use:</DT
 ><DD
 ><P
->   Disable or disable filters based on the Content-Type header.
+>   Enable or disable filters based on the Content-Type header.
    </P
 ></DD
 ><DT
 ><TD
 ><PRE
 CLASS="SCREEN"
-># Tag every request with the declared content type
+># Tag every request with the content type declared by the server
 {+server-header-tagger{content-type}}
 /
     </PRE
 ><H3
 CLASS="SECT3"
 ><A
-NAME="AEN4217"
+NAME="AEN4223"
 >8.5.39. Summary</A
 ></H3
 ><P
 ><H3
 CLASS="SECT3"
 ><A
-NAME="AEN4282"
+NAME="AEN4288"
 >8.7.1. default.action</A
 ></H3
 ><P
 ><H3
 CLASS="SECT3"
 ><A
-NAME="AEN4469"
+NAME="AEN4475"
 >8.7.2. user.action</A
 ></H3
 ><P
 
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN5351"
+NAME="AEN5359"
 >14.2. Privoxy's Internal Pages</A
 ></H2
 ><P
    Privoxy main page: 
   </P
 ><A
-NAME="AEN5365"
+NAME="AEN5373"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
     editing of actions files:
   </P
 ><A
-NAME="AEN5373"
+NAME="AEN5381"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
     Show the source code version numbers:
   </P
 ><A
-NAME="AEN5378"
+NAME="AEN5386"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
    Show the browser's request headers:
   </P
 ><A
-NAME="AEN5383"
+NAME="AEN5391"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
    Show which actions apply to a URL and why:
   </P
 ><A
-NAME="AEN5388"
+NAME="AEN5396"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
 ><LI
 ><P
 >  
-   Toggle Privoxy on or off. In this case, <SPAN
+   Toggle Privoxy on or off. This feature can be turned off/on in the main 
+   <TT
+CLASS="FILENAME"
+>config</TT
+> file. When toggled <SPAN
+CLASS="QUOTE"
+>"off"</SPAN
+>, <SPAN
 CLASS="QUOTE"
 >"Privoxy"</SPAN
-> continues 
-   to run, but only as a pass-through proxy, with no actions taking place:
+>
+   continues to run, but only as a pass-through proxy, with no actions taking
+   place:
   </P
 ><A
-NAME="AEN5394"
+NAME="AEN5404"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
 >   Short cuts. Turn off, then on: 
   </P
 ><A
-NAME="AEN5398"
+NAME="AEN5408"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
    </P
 ></BLOCKQUOTE
 ><A
-NAME="AEN5401"
+NAME="AEN5411"
 ></A
 ><BLOCKQUOTE
 CLASS="BLOCKQUOTE"
 >the Bookmarklets</A
 > section on a quick 
  and easy way to do this (be sure to flush caches afterward!). Looking at the 
- logs is a good idea too.</P
+ logs is a good idea too. (Note that both the toggle feature and logging are 
+ enabled via <TT
+CLASS="FILENAME"
+>config</TT
+> file settings, and may need to be 
+ turned <SPAN
+CLASS="QUOTE"
+>"on"</SPAN
+>.)</P
 ><P
 > Another easy troubleshooting step to try is if you have done any
  customization of your installation, revert back to the installed
 
 > CGI forms can lead to
     rather long URLs. This isn't a problem as far as the HTTP
     standard is concerned, but it can confuse clients with arbitrary
-    URL lenght limitations.
+    URL length limitations.
    </P
 ><P
 >    Enabling split-large-forms causes <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
 >
-    to devide big forms into smaller ones to keep the URL length down.
+    to divide big forms into smaller ones to keep the URL length down.
     It makes editing a lot less convenient and you can no longer
     submit all changes at once, but at least it works around this
     browser bug.
 
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN790"
+NAME="AEN794"
 >6.1. Controlling Privoxy with Your Web Browser</A
 ></H2
 ><P
 > <H2
 CLASS="BRIDGEHEAD"
 ><A
-NAME="AEN798"
+NAME="AEN802"
 ></A
 >    Privoxy Menu</H2
 ><P
 
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN5096"
+NAME="AEN5102"
 >12.1. License</A
 ></H2
 ><P
 >Current Privoxy Team:</P
 ><P
 CLASS="LITERALLAYOUT"
-> Fabian Keil, developer<br>
+> Fabian Keil, lead developer<br>
  David Schmidt, developer<br>
  <br>
  Hal Burgiss<br>
- Ian Cummings<br>
- Justin McMurtry<br>
- Roland Rosenfeld</P
+ Roland Rosenfeld<br>
+ Jörg Strohmayer</P
 ><P
 > Former Privoxy Team Members:</P
 ><P
 > Johny Agotnes <br>
  Rodrigo Barbosa<br>
  Moritz Barsnick<br>
+ Ian Cummings<br>
  Brian Dessent<br>
  Jon Foster<br>
  Karsten Hopp<br>
  Adam Lock<br>
  Guy Laroche<br>
  Mark Martinec <br>
+ Justin McMurtry<br>
  Andreas Oesterhelt<br>
  Haroon Rafique<br>
  Georg Sauthoff<br>
  Thomas Steudten<br>
- Joerg Strohmayer<br>
  Rodney Stromlund<br>
  Sviatoslav Sviridov<br>
  Sarantis Paskalis<br>
 CLASS="LITERALLAYOUT"
 > Ken Arromdee<br>
  Devin Bayer<br>
- Reiner Buehl<br>
  Gergely Bor<br>
+ Reiner Buehl<br>
  Andrew J. Caines<br>
  Clifford Caoile<br>
  Frédéric Crozat<br>
  Michael T. Davis<br>
  Mattes Dolak <br>
- Peter E<br>
+ Peter E.<br>
  Florian Effenberger<br>
  Markus Elfring<br>
  Dean Gaudet<br>
  Aaron Hamid<br>
  Darel Henman<br>
  Magnus Holmgren<br>
+ Ralf Horstmann<br>
+ Stefan Huehner <br>
  Peter Hyman<br>
  Derek Jennings<br>
  Petr Kadlec<br>
  David Laight<br>
+ Bert van Leeuwen<br>
  Don Libes  <br>
  Paul Lieverse<br>
  Toby Lyward<br>
  Jindrich Makovicka <br>
  David Mediavilla <br>
  Raphael Moll<br>
+ Amuro Namie<br>
  Adam Piggott<br>
+ Dan Price<br>
+ Lee R.<br>
  Roberto Ragusa<br>
  Félix Rauch<br>
  Maynard Riley<br>
  Chung-chieh Shan<br>
- Spinor S<br>
+ Spinor S.<br>
  Bart Schelstraete<br>
  Oliver Stoeneberg<br>
  Peter Thoenen<br>
  Martin Thomas<br>
- Bobby G. Vinyard<br>
+ Song Weijia<br>
  Jörg Weinmann <br>
  Darren Wiebe<br>
+ Bobby G. Vinyard<br>
  Anduin Withers<br>
  Oliver Yeoh<br>
  Jamie Zawinski</P
 ><P
-> Privoxy is based in part on code originally developed by:</P
+> Privoxy is based in part on code originally developed by
+ Junkbusters Corp. and Anonymous Coders.</P
 ><P
-CLASS="LITERALLAYOUT"
-> Junkbusters Corp.<br>
- Anonymous Coders<br>
- Ulrich Drepper (strptime fallback)<br>
- Philip Hazel (PCRE)</P
+> Privoxy heavily relies on Philip Hazel's PCRE.</P
+><P
+> The code to filter compressed content makes use of zlib
+ which is written by Jean-loup Gailly and Mark Adler.</P
+><P
+> On systems that lack snprintf(), Privoxy is using a version
+ written by Mark Martinec. On systems that lack strptime(),
+ Privoxy is using the one from the GNU C Library written
+ by Ulrich Drepper.</P
 ></DIV
 ></DIV
 ><DIV
 
 >server-header-tagger</A
 ></TT
 >.
- Taggers and filters use the same syntax in the filter files, the differnce
+ Taggers and filters use the same syntax in the filter files, the difference
  is that taggers don't modify the text they are filtering, but use a rewritten
  version of the filtered text as tag. The tags can then be used to change the
  applying actions through sections with <A
 ><H2
 CLASS="SECT2"
 ><A
-NAME="AEN4623"
+NAME="AEN4629"
 >9.1. Filter File Tutorial</A
 ></H2
 ><P
 
 ><BR></P
 ><P
 CLASS="PUBDATE"
->$Id: user-manual.sgml,v 2.41 2007/11/11 16:32:11 hal9 Exp $<BR></P
+>$Id: user-manual.sgml,v 2.44 2007/11/15 03:30:20 hal9 Exp $<BR></P
 ><DIV
 ><DIV
 CLASS="ABSTRACT"
 ><DL
 ><DT
 >6.1. <A
-HREF="configuration.html#AEN790"
+HREF="configuration.html#AEN794"
 >Controlling Privoxy with Your Web Browser</A
 ></DT
 ><DT
 ><DL
 ><DT
 >8.1. <A
-HREF="actions-file.html#AEN2244"
+HREF="actions-file.html#AEN2248"
 >Finding the Right Mix</A
 ></DT
 ><DT
 >8.2. <A
-HREF="actions-file.html#AEN2251"
+HREF="actions-file.html#AEN2255"
 >How to Edit</A
 ></DT
 ><DT
 ><DL
 ><DT
 >8.4.1. <A
-HREF="actions-file.html#AEN2342"
+HREF="actions-file.html#AEN2346"
 >The Domain Pattern</A
 ></DT
 ><DT
 >8.4.2. <A
-HREF="actions-file.html#AEN2413"
+HREF="actions-file.html#AEN2417"
 >The Path Pattern</A
 ></DT
 ><DT
 ></DT
 ><DT
 >8.5.39. <A
-HREF="actions-file.html#AEN4217"
+HREF="actions-file.html#AEN4223"
 >Summary</A
 ></DT
 ></DL
 ><DL
 ><DT
 >8.7.1. <A
-HREF="actions-file.html#AEN4282"
+HREF="actions-file.html#AEN4288"
 >default.action</A
 ></DT
 ><DT
 >8.7.2. <A
-HREF="actions-file.html#AEN4469"
+HREF="actions-file.html#AEN4475"
 >user.action</A
 ></DT
 ></DL
 ><DL
 ><DT
 >9.1. <A
-HREF="filter-file.html#AEN4623"
+HREF="filter-file.html#AEN4629"
 >Filter File Tutorial</A
 ></DT
 ><DT
 ><DL
 ><DT
 >12.1. <A
-HREF="copyright.html#AEN5096"
+HREF="copyright.html#AEN5102"
 >License</A
 ></DT
 ><DT
 ></DT
 ><DT
 >14.2. <A
-HREF="appendix.html#AEN5351"
+HREF="appendix.html#AEN5359"
 >Privoxy's Internal Pages</A
 ></DT
 ><DD
 
 ></TABLE
 ></P
 ><P
->Then build as above.</P
+>Then build as above. In Privoxy 3.0.7 and later, all of these options
+can also be disabled through the configuration file.</P
 ><P
 > <SPAN
 CLASS="emphasis"
 
 >1. Introduction</A
 ></H1
 ><P
-> This documentation is included with the current UNRELEASED version of
+> This documentation is included with the current beta version of
  <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
  completion, and includes significant changes and enhancements over
  earlier versions. .</P
 ><P
-> Since this is a UNRELEASED version, not all new features are well tested. This
+> Since this is a beta version, not all new features are well tested. This
  documentation may be slightly out of sync as a result (especially with 
  CVS sources). And there <SPAN
 CLASS="emphasis"
 
 >  <DIV
 CLASS="FIGURE"
 ><A
-NAME="AEN543"
+NAME="AEN547"
 ></A
 ><P
 ><B
 
 >  <DIV
 CLASS="FIGURE"
 ><A
-NAME="AEN598"
+NAME="AEN602"
 ></A
 ><P
 ><B
 >  <DIV
 CLASS="FIGURE"
 ><A
-NAME="AEN642"
+NAME="AEN646"
 ></A
 ><P
 ><B
 
 HREF="actions-file.html#CLIENT-HEADER-TAGGER"
 >client-header-tagger</A
 >
-          that can be used to apply arbitrary <SPAN
+          that can be used to create arbitrary <SPAN
 CLASS="QUOTE"
 >"tags"</SPAN
-> to 
-          each request's headers. These <SPAN
+>
+          based on client and server headers.
+          These <SPAN
 CLASS="QUOTE"
 >"tags"</SPAN
-> can then
-          subsequently be used by other actions, greatly increasing 
-          <SPAN
+> can then subsequently be used
+          to control the other actions used for the current request,
+          greatly increasing <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
->'s flexibity and selectivity. See <A
+>'s flexibility and selectivity. See <A
 HREF="actions-file.html#TAG-PATTERN"
 >tag patterns</A
-> for more on tags.
-
+> for more information on tags.
    </P
 ></LI
 ><LI
 ><P
->    Header filtering can be done with dedicated header filters now. As a result
+>    Header filtering is done with dedicated header filters now. As a result
     the actions <SPAN
 CLASS="QUOTE"
 >"filter-client-headers"</SPAN
 CLASS="APPLICATION"
 >Privoxy 3.0.5</SPAN
 > to apply
-    the content filters to the headers as, well have been removed again.
+    content filters to the headers have been removed.
     See the new actions <A
 HREF="actions-file.html#SERVER-HEADER-FILTER"
 >server-header-filter</A
           and <A
 HREF="actions-file.html#CLIENT-HEADER-FILTER"
 >client-header-filter</A
->.
+> for details.
    </P
 ></LI
 ><LI
 HREF="config.html#ACCEPT-INTERCEPTED-REQUESTS"
 >accept-intercepted-requests</A
 >
-          which will combine Privoxy with any packet filter to create an intercepting
-          proxy for HTTP/1.1 requests (and for HTTP/1.0 requests with Host
-          header set) so that explicitly setting the browser's proxy settings
-          is not necessary.
+          which allows to combine Privoxy with any packet filter to create an
+          intercepting proxy for HTTP/1.1 requests (and for HTTP/1.0 requests
+          with Host header set). This means clients can be forced to use
+          <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> even if their proxy settings are configured differently.
          </P
 ></LI
 ><LI
 HREF="config.html#TEMPLDIR"
 >templdir</A
 >
-          to designate an alternate location for Privoxy's own CGI templates
-          to make sure any locally customized templates aren't overwritten
-          during upgrades.         
+          to designate an alternate location for <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+>'s 
+          locally customized CGI templates so that
+          these are not overwritten during upgrades.         
         </P
 ></LI
 ></UL
 CLASS="LITERAL"
 >--pre-chroot-nslookup hostname</TT
 > to
-   intialize the resolver library before chroot'ing. On some systems this
+   initialize the resolver library before chroot'ing. On some systems this
    reduces the number of files that must be copied into the chroot tree.
    (Patch provided by Stephen Gildea)
    </P
 ></LI
 ><LI
 ><P
->     The  <A
+>     The <A
 HREF="actions-file.html#FORWARD-OVERRIDE"
 >forward-override</A
 > action 
-     allows changing of the forwarding settings based on client headers like the
-     User-Agent, or the request origin.
+     allows changing of the forwarding settings through the actions files.
+     Combined with tags, this allows to choose the forwarder based on
+     client headers like the <TT
+CLASS="LITERAL"
+>User-Agent</TT
+>, or the request origin.
   </P
 ></LI
 ><LI
 CLASS="APPLICATION"
 >zlib</SPAN
 > support is now available as a compile
-     time option for compressed documents.  
+     time option to filter compressed content. Patch provided by Wil Mahan.
    </P
 ></LI
 ><LI
     with <SPAN
 CLASS="APPLICATION"
 >Privoxy</SPAN
->.
+>. Patch provided by Petr Kadlec.
    </P
 ></LI
 ><LI
 ><P
->     Logging can be turned on or off.
+>     Logging can be completely turned off by not specifying a logfile directive.
    </P
 ></LI
 ><LI
 ><LI
 ><P
 >     Many bugfixes, memory leaks addressed, code improvements, and logging 
-     improvments.
+     improvements.
    </P
 ></LI
 ></UL
 ></P
+><P
+> For a more detailed list of changes please have a look at the ChangeLog.</P
 ><DIV
 CLASS="SECT2"
 ><H2
     <SPAN
 CLASS="APPLICATION"
 >Privoxy 3.0.5</SPAN
-> to apply the content filters to
-    the headers as, well have been removed and replaced with new actions.
+> to apply content filters to
+    the headers  have been removed and replaced with new actions.
     See the <A
 HREF="whatsnew.html"
 >What's New section</A