>Coding Guidelines</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
TITLE="Privoxy Developer Manual"
HREF="index.html"><LINK
><DIV
CLASS="NAVHEADER"
><TABLE
-SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="bottom"
><A
HREF="documentation.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="bottom"
><A
HREF="testing.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
><H1
CLASS="SECT1"
><A
-NAME="CODING">4. Coding Guidelines</H1
+NAME="CODING"
+>4. Coding Guidelines</A
+></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
-NAME="S1">4.1. Introduction</H2
+NAME="S1"
+>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
><H2
CLASS="SECT2"
><A
-NAME="S2">4.2. Using Comments</H2
+NAME="S2"
+>4.2. Using Comments</A
+></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="S3">4.2.1. Comment, Comment, Comment</H3
+NAME="S3"
+>4.2.1. Comment, Comment, Comment</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Comment as much as possible without commenting the obvious.
If the comment describes something different than what the code
is doing then maybe a programming error is occurring.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
><H3
CLASS="SECT3"
><A
-NAME="S4">4.2.2. Use blocks for comments</H3
+NAME="S4"
+>4.2.2. Use blocks for comments</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Comments can help or they can clutter. They help when they
and the code. Block identifiers do, by surrounding the code
with a clear, definable pattern.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Exception:</I
-></SPAN
></P
><P
>If you are trying to add a small logic comment and do not
><H3
CLASS="SECT3"
><A
-NAME="S5">4.2.3. Keep Comments on their own line</H3
+NAME="S5"
+>4.2.3. Keep Comments on their own line</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>It goes back to the question of readability. If the comment
at the end of closing braces, when used to comment
parameters.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
><H3
CLASS="SECT3"
><A
-NAME="S6">4.2.4. Comment each logical step</H3
+NAME="S6"
+>4.2.4. Comment each logical step</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Logical steps should be commented to help others follow the
><H3
CLASS="SECT3"
><A
-NAME="S7">4.2.5. Comment All Functions Thoroughly</H3
+NAME="S7"
+>4.2.5. Comment All Functions Thoroughly</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>A reader of the code should be able to look at the comments
><H3
CLASS="SECT3"
><A
-NAME="S8">4.2.6. Comment at the end of braces if the
- content is more than one screen length</H3
+NAME="S8"
+>4.2.6. Comment at the end of braces if the
+ content is more than one screen length</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Each closing brace should be followed on the same line by a
>use following a closing brace: } /* -END- if() or while ()
or etc... */</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
><H2
CLASS="SECT2"
><A
-NAME="S9">4.3. Naming Conventions</H2
+NAME="S9"
+>4.3. Naming Conventions</A
+></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="S10">4.3.1. Variable Names</H3
+NAME="S10"
+>4.3.1. Variable Names</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Use all lowercase, and separate words via an underscore
template, class, true, false, ...). This is in case we ever
decide to port Privoxy to C++.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Instead of:</I
-></SPAN
></P
><P
><TABLE
><H3
CLASS="SECT3"
><A
-NAME="S11">4.3.2. Function Names</H3
+NAME="S11"
+>4.3.2. Function Names</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Use all lowercase, and separate words via an underscore
template, class, true, false, ...). This is in case we ever
decide to port Privoxy to C++.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Instead of:</I
-></SPAN
></P
><P
><TABLE
><H3
CLASS="SECT3"
><A
-NAME="S12">4.3.3. Header file prototypes</H3
+NAME="S12"
+>4.3.3. Header file prototypes</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Use a descriptive parameter name in the function prototype
in header files. Use the same parameter name in the header file
that you use in the c file.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Instead of:</I
-></SPAN
>
<TABLE
BORDER="0"
><H3
CLASS="SECT3"
><A
-NAME="S13">4.3.4. Enumerations, and #defines</H3
+NAME="S13"
+>4.3.4. Enumerations, and #defines</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Use all capital letters, with underscores between words. Do
not start an identifier with an underscore. (ANSI C reserves
these for use by the compiler and system headers.)</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> We have a standard naming scheme for #defines
that toggle a feature in the preprocessor: FEATURE_>, where
> is a short (preferably 1 or 2 word) description.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
><H3
CLASS="SECT3"
><A
-NAME="S14">4.3.5. Constants</H3
+NAME="S14"
+>4.3.5. Constants</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Spell common words out entirely (do not remove vowels).</P
>Use underscore (_) to separate adjacent acronyms and
abbreviations. Never terminate a name with an underscore.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Instead of:</I
-></SPAN
></P
><P
><TABLE
><H2
CLASS="SECT2"
><A
-NAME="S15">4.4. Using Space</H2
+NAME="S15"
+>4.4. Using Space</A
+></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="S16">4.4.1. Put braces on a line by themselves.</H3
+NAME="S16"
+>4.4.1. Put braces on a line by themselves.</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>The brace needs to be on a line all by itself, not at the
easier to identify the opening and closing braces for a
block.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Instead of:</I
-></SPAN
></P
><P
>if ( this == that ) { ... }</P
><P
>if ( this == that ) { ... }</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> In the special case that the if-statement is
inside a loop, and it is trivial, i.e. it tests for a
condition that is obvious from the purpose of the block,
one-liners as above may optically preserve the loop structure
and make it easier to read.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Status:</I
-></SPAN
> developer-discretion.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example exception:</I
-></SPAN
></P
><TABLE
BORDER="0"
><H3
CLASS="SECT3"
><A
-NAME="S17">4.4.2. ALL control statements should have a
- block</H3
+NAME="S17"
+>4.4.2. ALL control statements should have a
+ block</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Using braces to make a block will make your code more
readable and less prone to error. All control statements should
have a block defined.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Instead of:</I
-></SPAN
></P
><P
>if ( this == that ) DoSomething(); DoSomethingElse();</P
><P
>if ( this == that ) DoSomething();</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> The first example in "Instead of" will execute
in a manner other than that which the developer desired (per
indentation). Using code braces would have prevented this
><H3
CLASS="SECT3"
><A
-NAME="S18">4.4.3. Do not belabor/blow-up boolean
- expressions</H3
+NAME="S18"
+>4.4.3. Do not belabor/blow-up boolean
+ expressions</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Instead of:</I
-></SPAN
></P
><P
>if ( condition ) { structure->flag = 1; } else {
structure->flag = 0; }</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> The former is readable and concise. The later
is wordy and inefficient. Please assume that any developer new
to the project has at least a "good" knowledge of C/C++. (Hope
><H3
CLASS="SECT3"
><A
-NAME="S19">4.4.4. Use white space freely because it is
- free</H3
+NAME="S19"
+>4.4.4. Use white space freely because it is
+ free</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Make it readable. The notable exception to using white space
freely is listed in the next guideline.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
><H3
CLASS="SECT3"
><A
-NAME="S20">4.4.5. Don't use white space around structure
- operators</H3
+NAME="S20"
+>4.4.5. Don't use white space around structure
+ operators</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>- structure pointer operator ( "->" ) - member operator (
connection between the object and variable/function name is not
as clear.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Instead of:</I
-></SPAN
> aStruct -> aMember; aStruct . aMember;
FunctionName ();</P
></DIV
><H3
CLASS="SECT3"
><A
-NAME="S21">4.4.6. Make the last brace of a function stand
- out</H3
+NAME="S21"
+>4.4.6. Make the last brace of a function stand
+ out</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Instead of:</I
-></SPAN
></P
><P
>int function1( ... ) { ...code... return( retCode ); } int
function2( ... ) { }</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> Use 1 blank line before the closing brace and 2
lines afterward. This makes the end of function standout to
the most casual viewer. Although function comments help
"do" loops, and long if {} statements too. After all whitespace
is free!</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Status:</I
-></SPAN
> developer-discretion on the number of blank
lines. Enforced is the end of function comments.</P
></DIV
><H3
CLASS="SECT3"
><A
-NAME="S22">4.4.7. Use 3 character indentions</H3
+NAME="S22"
+>4.4.7. Use 3 character indentions</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>If some use 8 character TABs and some use 3 character TABs,
only. If you like to use TABs, pass your code through a filter
such as "expand -t3" before checking in your code.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
><H2
CLASS="SECT2"
><A
-NAME="S23">4.5. Initializing</H2
+NAME="S23"
+>4.5. Initializing</A
+></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="S24">4.5.1. Initialize all variables</H3
+NAME="S24"
+>4.5.1. Initialize all variables</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Do not assume that the variables declared will not be used
the code. Remove the chance of accidentally using an unassigned
variable.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></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
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Status:</I
-></SPAN
> developer-discretion if and only if the
variable is assigned a value "shortly after" declaration.</P
></DIV
><H2
CLASS="SECT2"
><A
-NAME="S25">4.6. Functions</H2
+NAME="S25"
+>4.6. Functions</A
+></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="S26">4.6.1. Name functions that return a boolean as a
- question.</H3
+NAME="S26"
+>4.6.1. Name functions that return a boolean as a
+ question.</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Value should be phrased as a question that would logically
be answered as a true or false statement</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
><H3
CLASS="SECT3"
><A
-NAME="S27">4.6.2. Always specify a return type for a
- function.</H3
+NAME="S27"
+>4.6.2. Always specify a return type for a
+ function.</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>The default return for a function is an int. To avoid
><H3
CLASS="SECT3"
><A
-NAME="S28">4.6.3. Minimize function calls when iterating by
- using variables</H3
+NAME="S28"
+>4.6.3. Minimize function calls when iterating by
+ using variables</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>It is easy to write the following code, and a clear argument
can be made that the code is easy to understand:</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> Unfortunately, this makes a function call for
each and every iteration. This increases the overhead in the
program, because the compiler has to look up the function each
assign the value to a variable, and evaluate using the
variable.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Exceptions:</I
-></SPAN
> if the value of blockListLength() *may*
change or could *potentially* change, then you must code the
function call in the for/while loop.</P
><H3
CLASS="SECT3"
><A
-NAME="S29">4.6.4. Pass and Return by Const Reference</H3
+NAME="S29"
+>4.6.4. Pass and Return by Const Reference</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>This allows a developer to define a const pointer and call
><H3
CLASS="SECT3"
><A
-NAME="S30">4.6.5. Pass and Return by Value</H3
+NAME="S30"
+>4.6.5. Pass and Return by Value</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Most structures cannot fit onto a normal stack entry (i.e.
><H3
CLASS="SECT3"
><A
-NAME="S31">4.6.6. Names of include files</H3
+NAME="S31"
+>4.6.6. Names of include files</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Your include statements should contain the file name without
partial path to distinguish their header files from system or
other header files.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Exception:</I
-></SPAN
></P
><P
><TABLE
></TABLE
></P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> Please! do not add "-I." to the Makefile
without a _very_ good reason. This duplicates the #include
"file.h" behavior.</P
><H3
CLASS="SECT3"
><A
-NAME="S32">4.6.7. Provide multiple inclusion
- protection</H3
+NAME="S32"
+>4.6.7. Provide multiple inclusion
+ protection</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Prevents compiler and linker errors resulting from
with your file name, with "." Changed to "_", and make it
uppercase.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
><H3
CLASS="SECT3"
><A
-NAME="S33">4.6.8. Use `extern "C"` when appropriate</H3
+NAME="S33"
+>4.6.8. Use `extern "C"` when appropriate</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>If our headers are included from C++, they must declare our
functions as `extern "C"`. This has no cost in C, but increases
the potential re-usability of our code.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
><H3
CLASS="SECT3"
><A
-NAME="S34">4.6.9. Where Possible, Use Forward Struct
- Declaration Instead of Includes</H3
+NAME="S34"
+>4.6.9. Where Possible, Use Forward Struct
+ Declaration Instead of Includes</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Useful in headers that include pointers to other struct's.
Modifications to excess header files may cause needless
compiles.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> If you declare "file_list xyz;" (without the
pointer), then including the proper header file is necessary.
If you only want to prototype a pointer, however, the header
file is unnecessary.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Status:</I
-></SPAN
> Use with discretion.</P
></DIV
></DIV
><H2
CLASS="SECT2"
><A
-NAME="S35">4.7. General Coding Practices</H2
+NAME="S35"
+>4.7. General Coding Practices</A
+></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
-NAME="S36">4.7.1. Turn on warnings</H3
+NAME="S36"
+>4.7.1. Turn on warnings</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation</I
-></SPAN
></P
><P
>Compiler warnings are meant to help you find bugs. You
><H3
CLASS="SECT3"
><A
-NAME="S37">4.7.2. Provide a default case for all switch
- statements</H3
+NAME="S37"
+>4.7.2. Provide a default case for all switch
+ statements</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>What you think is guaranteed is never really guaranteed. The
someday will be passed. So, to protect yourself from the
unknown, always have a default step in a switch statement.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> If you already have a default condition, you
are obviously exempt from this point. Of note, most of the
WIN32 code calls `DefWindowProc' after the switch statement.
This API call *should* be included in a default statement.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Another Note:</I
-></SPAN
> 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
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Status:</I
-></SPAN
> Programmer discretion is advised.</P
></DIV
><DIV
><H3
CLASS="SECT3"
><A
-NAME="S38">4.7.3. Try to avoid falling through cases in a
- switch statement.</H3
+NAME="S38"
+>4.7.3. Try to avoid falling through cases in a
+ switch statement.</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>In general, you will want to have a 'break' statement within
><H3
CLASS="SECT3"
><A
-NAME="S39">4.7.4. Use 'long' or 'short' Instead of
- 'int'</H3
+NAME="S39"
+>4.7.4. Use 'long' or 'short' Instead of
+ 'int'</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>On 32-bit platforms, int usually has the range of long. On
16-bit platforms, int has the range of short.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Status:</I
-></SPAN
> open-to-debate. In the case of most FSF
projects (including X/GNU-Emacs), there are typedefs to int4,
int8, int16, (or equivalence ... I forget the exact typedefs
><H3
CLASS="SECT3"
><A
-NAME="S40">4.7.5. Don't mix size_t and other types</H3
+NAME="S40"
+>4.7.5. Don't mix size_t and other types</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>The type of size_t varies across platforms. Do not make
><H3
CLASS="SECT3"
><A
-NAME="S41">4.7.6. Declare each variable and struct on its
- own line.</H3
+NAME="S41"
+>4.7.6. Declare each variable and struct on its
+ own line.</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>It can be tempting to declare a series of variables all on
one line. Don't.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Instead of:</I
-></SPAN
></P
><P
>long a, b, c;</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
> - there is more room for comments on the
individual variables - easier to add new variables without
messing up the original ones - when searching on a variable to
find its type, there is less clutter to "visually"
eliminate</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Exceptions:</I
-></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
their functions.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Status:</I
-></SPAN
> developer-discretion.</P
></DIV
><DIV
><H3
CLASS="SECT3"
><A
-NAME="S42">4.7.7. Use malloc/zalloc sparingly</H3
+NAME="S42"
+>4.7.7. Use malloc/zalloc sparingly</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>Create a local struct (on the stack) if the variable will
>Only "malloc" a struct (on the heap) if the variable's life
will extend beyond the context of one function call.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
><H3
CLASS="SECT3"
><A
-NAME="S43">4.7.8. The Programmer Who Uses 'malloc' is
- Responsible for Ensuring 'free'</H3
+NAME="S43"
+>4.7.8. The Programmer Who Uses 'malloc' is
+ Responsible for Ensuring 'free'</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>If you have to "malloc" an instance, you are responsible for
"good thing (tm)". You may need to offer a
free/unload/destructor type function to accommodate this.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Exceptions:</I
-></SPAN
></P
><P
>The developer cannot be expected to provide `free'ing
functions for C run-time library functions ... such as
`strdup'.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Status:</I
-></SPAN
> developer-discretion. The "main" use of this
standard is for allocating and freeing data structures (complex
or nested).</P
><H3
CLASS="SECT3"
><A
-NAME="S44">4.7.9. Add loaders to the `file_list' structure
- and in order</H3
+NAME="S44"
+>4.7.9. Add loaders to the `file_list' structure
+ and in order</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>I have ordered all of the "blocker" file code to be in alpha
order. It is easier to add/read new blockers when you expect a
certain order.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> It may appear that the alpha order is broken in
places by POPUP tests coming before PCRS tests. But since
POPUPs can also be referred to as KILLPOPUPs, it is clear that
><H3
CLASS="SECT3"
><A
-NAME="S45">4.7.10. "Uncertain" new code and/or changes to
- existing code, use FIXME</H3
+NAME="S45"
+>4.7.10. "Uncertain" new code and/or changes to
+ existing code, use FIXME</A
+></H3
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Explanation:</I
-></SPAN
></P
><P
>If you have enough confidence in new code or confidence in
>/* FIXME: new code that *may* break something else... */
...new code here...</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> If you make it clear that this may or may not
be a "good thing (tm)", it will be easier to identify and
include in the project (or conversely exclude from the
><H2
CLASS="SECT2"
><A
-NAME="S46">4.8. Addendum: Template for files and function
- comment blocks:</H2
+NAME="S46"
+>4.8. Addendum: Template for files and function
+ comment blocks:</A
+></H2
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example for file comments:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> This declares the rcs variables that should be
added to the "show-proxy-args" page. If this is a brand new
creation by you, you are free to change the "Copyright" section
to represent the rights you wish to maintain.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> The formfeed character that is present right
after the comment flower box is handy for (X|GNU)Emacs users to
skip the verbiage and get to the heart of the code (via
`forward-page' and `backward-page'). Please include it if you
can.</P
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example for file header comments:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Example for function comments:</I
-></SPAN
></P
><TABLE
BORDER="0"
></TR
></TABLE
><P
-><SPAN
-CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Note:</I
-></SPAN
> If we all follow this practice, we should be
able to parse our code to create a "self-documenting" web
page.</P
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="top"
><A
HREF="documentation.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="top"
><A
HREF="index.html"
-ACCESSKEY="H"
>Home</A
></TD
><TD
VALIGN="top"
><A
HREF="testing.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
>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.60"><LINK
REL="HOME"
TITLE="Privoxy Developer Manual"
HREF="index.html"><LINK
><DIV
CLASS="NAVHEADER"
><TABLE
-SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="bottom"
><A
HREF="webserver-update.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="bottom"
><A
HREF="copyright.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
><H1
CLASS="SECT1"
><A
-NAME="CONTACT">8. Contacting the developers, Bug Reporting and Feature Requests</H1
+NAME="CONTACT"
+>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
><H2
CLASS="SECT2"
><A
-NAME="CONTACT-SUPPORT">8.1. Get Support</H2
+NAME="CONTACT-SUPPORT"
+>8.1. Get Support</A
+></H2
><P
> For casual users, our support forum at
<A
><H2
CLASS="SECT2"
><A
-NAME="CONTACT-BUGS">8.2. Report Bugs</H2
+NAME="CONTACT-BUGS"
+>8.2. Report Bugs</A
+></H2
><P
-> Please report all bugs <SPAN
-CLASS="emphasis"
-><I
+> Please report all bugs <I
CLASS="EMPHASIS"
>only</I
-></SPAN
> through our
bug tracker:
<A
><H2
CLASS="SECT2"
><A
-NAME="CONTACT-FEATURE">8.3. Request New Features</H2
+NAME="CONTACT-FEATURE"
+>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
><H2
CLASS="SECT2"
><A
-NAME="CONTACT-ADS">8.4. Report Ads or Other Actions-Related Problems</H2
+NAME="CONTACT-ADS"
+>8.4. Report Ads or Other Actions-Related Problems</A
+></H2
><P
> Please send feedback on ads that slipped through, innocent images that were blocked,
and any other problems relating to the <TT
TARGET="_top"
>ijbswa-announce</A
>
- list and available from our <A
+ list and available from our the <A
+HREF="http://sourceforge.net/project/showfiles.php?group_id=11118"
+TARGET="_top"
+>files section</A
+> of
+ our <A
HREF="http://sf.net/projects/ijbswa/"
TARGET="_top"
>project page</A
><H2
CLASS="SECT2"
><A
-NAME="CONTACT-OTHER">8.5. Other</H2
+NAME="CONTACT-OTHER"
+>8.5. 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!
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="top"
><A
HREF="webserver-update.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="top"
><A
HREF="index.html"
-ACCESSKEY="H"
>Home</A
></TD
><TD
VALIGN="top"
><A
HREF="copyright.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
>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.60"><LINK
REL="HOME"
TITLE="Privoxy Developer Manual"
HREF="index.html"><LINK
><DIV
CLASS="NAVHEADER"
><TABLE
-SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="bottom"
><A
HREF="contact.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="bottom"
><A
HREF="seealso.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
><H1
CLASS="SECT1"
><A
-NAME="COPYRIGHT">9. Privoxy Copyright, License and History</H1
+NAME="COPYRIGHT"
+>9. Privoxy Copyright, License and History</A
+></H1
><P
> Copyright © 2001, 2002 by Privoxy Developers <TT
CLASS="EMAIL"
><H2
CLASS="SECT2"
><A
-NAME="AEN1137">9.1. License</H2
+NAME="AEN1131"
+>9.1. License</A
+></H2
><P
> <SPAN
CLASS="APPLICATION"
><H2
CLASS="SECT2"
><A
-NAME="AEN1153">9.2. History</H2
+NAME="AEN1147"
+>9.2. History</A
+></H2
><P
> In the beginning, there was the
<A
CLASS="APPLICATION"
>Privoxy</SPAN
>, whose first
- stable release, 3.0, is due in June 2002.</P
+ stable release, 3.0, is due late summer or early fall 2002.
+ </P
></DIV
></DIV
><DIV
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="top"
><A
HREF="contact.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="top"
><A
HREF="index.html"
-ACCESSKEY="H"
>Home</A
></TD
><TD
VALIGN="top"
><A
HREF="seealso.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
>The CVS Repository</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
TITLE="Privoxy Developer Manual"
HREF="index.html"><LINK
><DIV
CLASS="NAVHEADER"
><TABLE
-SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="bottom"
><A
HREF="introduction.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="bottom"
><A
HREF="documentation.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
><H1
CLASS="SECT1"
><A
-NAME="CVS">2. The CVS Repository</H1
+NAME="CVS"
+>2. The CVS Repository</A
+></H1
><P
> If you intend to help us with programming, documentation or packaging
you will need write access to our holy grail, the CVS repository.
><H2
CLASS="SECT2"
><A
-NAME="CVSACCESS">2.1. Access to CVS</H2
+NAME="CVSACCESS"
+>2.1. Access to CVS</A
+></H2
><P
> The project's CVS repository is hosted on
<A
><H2
CLASS="SECT2"
><A
-NAME="CVSCOMMIT">2.2. CVS Commit Guideline</H2
+NAME="CVSCOMMIT"
+>2.2. CVS Commit Guideline</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
><UL
><LI
><P
-> Never (read: <SPAN
-CLASS="emphasis"
-><I
+> Never (read: <I
CLASS="EMPHASIS"
>never, ever</I
-></SPAN
>) be tempted to commit
that small change without testing it thoroughly first. When we're
close to a public release, ask a fellow developer to review your
></LI
><LI
><P
-> Your commit message should give a concise overview of <SPAN
-CLASS="emphasis"
-><I
+> Your commit message should give a concise overview of <I
CLASS="EMPHASIS"
>what you
changed</I
-></SPAN
-> (no big details) and <SPAN
-CLASS="emphasis"
-><I
+> (no big details) and <I
CLASS="EMPHASIS"
>why you changed it</I
-></SPAN
>
Just check previous messages for good examples.
</P
><H2
CLASS="SECT2"
><A
-NAME="CVSWHENASK">2.3. Discussing Changes First</H2
+NAME="CVSWHENASK"
+>2.3. Discussing Changes First</A
+></H2
><P
> We don't have a too formal policy on this, just use common sense. Hints: If it is..
<P
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="top"
><A
HREF="introduction.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="top"
><A
HREF="index.html"
-ACCESSKEY="H"
>Home</A
></TD
><TD
VALIGN="top"
><A
HREF="documentation.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
>Documentation Guidelines</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
TITLE="Privoxy Developer Manual"
HREF="index.html"><LINK
><DIV
CLASS="NAVHEADER"
><TABLE
-SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="bottom"
><A
HREF="cvs.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="bottom"
><A
HREF="coding.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
><H1
CLASS="SECT1"
><A
-NAME="DOCUMENTATION">3. Documentation Guidelines</H1
+NAME="DOCUMENTATION"
+>3. Documentation Guidelines</A
+></H1
><P
> All formal documents are maintained in Docbook SGML and located in the
<TT
<I
CLASS="CITETITLE"
>privoxy.1</I
-> (man page), and
- <I
-CLASS="CITETITLE"
->config</I
-> files are also now maintained as Docbook
- SGML. These files, when built, in the top-level source directory are
- generated files! Also, the <SPAN
-CLASS="APPLICATION"
->Privoxy</SPAN
-> <TT
+> (man page) files are also now maintained
+ as Docbook SGML. The finished files are all in the top-level source
+ directory are generated files! Also, <TT
CLASS="FILENAME"
>index.html</TT
-> (and a
- variation on this file, <TT
-CLASS="FILENAME"
->privoxy-index.html</TT
->,
- meant for inclusion with doc packages), are maintained as SGML as well.
+>, the
<SPAN
-CLASS="emphasis"
-><I
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> home page, is maintained as SGML.
+ <I
CLASS="EMPHASIS"
>DO NOT edit these directly</I
-></SPAN
>. Edit the SGML source, or
contact someone involved in the documentation (at present Stefan and
Hal).
</P
><P
-> <TT
-CLASS="FILENAME"
->config</TT
-> requires some special handling. The reason it
- is maintained this way is so that the extensive comments in the file
- mirror those in <I
-CLASS="CITETITLE"
->user-manual</I
->. But the conversion
- process requires going from SGML to HTML to text to special formatting
- required for the embedded comments. Some of this does not survive so
- well. Especially some of the examples that are longer than 80 characters.
- The build process for this file outputs to <TT
-CLASS="FILENAME"
->config.new</TT
->,
- which should be reviewed for errors and mis-formatting. Once satisfied
- that it is correct, then it should be hand copied to
- <TT
-CLASS="FILENAME"
->config</TT
->.
-
- </P
-><P
> Other, less formal documents (e.g. <TT
CLASS="FILENAME"
>LICENSE</TT
>) so that those without
the ability to build them locally, have access to them if needed.
This is especially important just prior to a new release! Please
- do this <SPAN
-CLASS="emphasis"
-><I
+ do this <I
CLASS="EMPHASIS"
>after</I
-></SPAN
> the <TT
CLASS="LITERAL"
>$VERSION</TT
><H2
CLASS="SECT2"
><A
-NAME="SGML">3.1. Quickstart to Docbook and SGML</H2
+NAME="SGML"
+>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
><TBODY
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
><para></para></I
-></SPAN
>, paragraph delimiter. Most
text needs to be within paragraph elements (there are some exceptions).
</TD
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
><emphasis></emphasis></I
-></SPAN
>, the stylesheets
make this italics.
</TD
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
><filename></filename></I
-></SPAN
>, files and directories.
</TD
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
><command></command></I
-></SPAN
>, command examples.
</TD
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
><literallayout></literallayout></I
-></SPAN
>, like
<TT
CLASS="LITERAL"
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
><itemizedlist></itemizedlist></I
-></SPAN
>, list with bullets.
</TD
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
><listitem></listitem></I
-></SPAN
>, member of the above.
</TD
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
><screen></screen></I
-></SPAN
>, screen output, implies
<TT
CLASS="LITERAL"
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
><ulink url="example.com"></ulink></I
-></SPAN
>, like
HTML <TT
CLASS="LITERAL"
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
><quote></quote></I
-></SPAN
>, for, doh, quoting text.
</TD
></TR
><H2
CLASS="SECT2"
><A
-NAME="DOCSTYLE">3.2. <SPAN
+NAME="DOCSTYLE"
+>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
></LI
><LI
><P
-> Tags delimiting a <SPAN
-CLASS="emphasis"
-><I
+> Tags delimiting a <I
CLASS="EMPHASIS"
>block</I
-></SPAN
> of text (even small
blocks) should be on their own line. Like:
<P
><H2
CLASS="SECT2"
><A
-NAME="AEN217">3.3. Privoxy Custom Entities</H2
+NAME="AEN210"
+>3.3. Privoxy Custom Entities</A
+></H2
><P
> <SPAN
CLASS="APPLICATION"
that is used by multiple docs. This way we can write something once, and use
it repeatedly without having to re-write the same content over and over again.
If editing such a file, keep in mind that it should be
- <SPAN
-CLASS="emphasis"
-><I
+ <I
CLASS="EMPHASIS"
>generic</I
-></SPAN
>. That is the purpose; so it can be used in varying
contexts without additional modifications.
</P
><TBODY
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
>p-version</I
-></SPAN
>: the <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
>
version string, e.g. <SPAN
CLASS="QUOTE"
->"2.9.15"</SPAN
+>"2.9.18"</SPAN
>.
</TD
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
>p-status</I
-></SPAN
>: the project status, either
<SPAN
CLASS="QUOTE"
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
>p-not-stable</I
-></SPAN
>: use to conditionally include
text in <SPAN
CLASS="QUOTE"
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
>p-stable</I
-></SPAN
>: just the opposite.
</TD
></TR
><TR
><TD
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
>p-text</I
-></SPAN
>: this doc is only generated as text.
</TD
></TR
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="top"
><A
HREF="cvs.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="top"
><A
HREF="index.html"
-ACCESSKEY="H"
>Home</A
></TD
><TD
VALIGN="top"
><A
HREF="coding.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
>Privoxy Developer Manual</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="NEXT"
TITLE="Introduction"
HREF="introduction.html"><LINK
><H1
CLASS="TITLE"
><A
-NAME="AEN2">Privoxy Developer Manual</H1
+NAME="AEN2"
+>Privoxy Developer Manual</A
+></H1
><P
CLASS="PUBDATE"
> <SUB
><DIV
CLASS="ABSTRACT"
><A
-NAME="AEN9"><P
+NAME="AEN9"
+></A
+><P
></P
><P
> The developer manual provides guidance on coding, testing, packaging, documentation
></DT
><DT
>3.3. <A
-HREF="documentation.html#AEN217"
+HREF="documentation.html#AEN210"
>Privoxy Custom Entities</A
></DT
></DL
><DL
><DT
>9.1. <A
-HREF="copyright.html#AEN1137"
+HREF="copyright.html#AEN1131"
>License</A
></DT
><DT
>9.2. <A
-HREF="copyright.html#AEN1153"
+HREF="copyright.html#AEN1147"
>History</A
></DT
></DL
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="top"
><A
HREF="introduction.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
>Introduction</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
TITLE="Privoxy Developer Manual"
HREF="index.html"><LINK
><DIV
CLASS="NAVHEADER"
><TABLE
-SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="bottom"
><A
HREF="index.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="bottom"
><A
HREF="cvs.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
><H1
CLASS="SECT1"
><A
-NAME="INTRODUCTION">1. Introduction</H1
+NAME="INTRODUCTION"
+>1. Introduction</A
+></H1
><P
> <SPAN
CLASS="APPLICATION"
><H2
CLASS="SECT2"
><A
-NAME="QUICKSTART">1.1. Quickstart to Privoxy Development</H2
+NAME="QUICKSTART"
+>1.1. Quickstart to Privoxy Development</A
+></H2
><P
> You'll need an account on <A
HREF="http://sourceforge.net/"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="top"
><A
HREF="index.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="top"
><A
HREF="index.html"
-ACCESSKEY="H"
>Home</A
></TD
><TD
VALIGN="top"
><A
HREF="cvs.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
>Releasing a New Version</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
TITLE="Privoxy Developer Manual"
HREF="index.html"><LINK
><DIV
CLASS="NAVHEADER"
><TABLE
-SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="bottom"
><A
HREF="testing.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="bottom"
><A
HREF="webserver-update.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
><H1
CLASS="SECT1"
><A
-NAME="NEWRELEASE">6. Releasing a New Version</H1
+NAME="NEWRELEASE"
+>6. Releasing a New Version</A
+></H1
><P
> When we release versions of <SPAN
CLASS="APPLICATION"
><H2
CLASS="SECT2"
><A
-NAME="VERSIONNUMBERS">6.1. Version numbers</H2
+NAME="VERSIONNUMBERS"
+>6.1. Version numbers</A
+></H2
><P
> First you need to determine which version number the release will have.
<SPAN
><H2
CLASS="SECT2"
><A
-NAME="BEFORERELEASE">6.2. Before the Release: Freeze</H2
+NAME="BEFORERELEASE"
+>6.2. Before the Release: Freeze</A
+></H2
><P
-> The following <SPAN
-CLASS="emphasis"
-><I
+> The following <I
CLASS="EMPHASIS"
>must be done by one of the
developers</I
-></SPAN
> prior to each new release.
</P
><P
></LI
><LI
><P
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
>Commit all files that were changed in the above steps!</I
-></SPAN
>
</P
></LI
><H2
CLASS="SECT2"
><A
-NAME="THERELEASE">6.3. Building and Releasing the Packages</H2
+NAME="THERELEASE"
+>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.
</P
><P
-> For <SPAN
-CLASS="emphasis"
-><I
+> For <I
CLASS="EMPHASIS"
>all</I
-></SPAN
> types of packages, including the source tarball,
- <SPAN
-CLASS="emphasis"
-><I
+ <I
CLASS="EMPHASIS"
>you must make sure that you build from clean sources by exporting
the right version from CVS into an empty directory:</I
-></SPAN
>.
</P
><P
>
</P
><P
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
>Do NOT change</I
-></SPAN
> a single bit, including, but not limited to
version information after export from CVS. This is to make sure that
all release packages, and with them, all future bug reports, are based
><H3
CLASS="SECT3"
><A
-NAME="PACK-GUIDELINES">6.3.1. Note on Privoxy Packaging</H3
+NAME="PACK-GUIDELINES"
+>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="emphasis"
-><I
+ your package. These apply to <I
CLASS="EMPHASIS"
>all</I
-></SPAN
> platforms!
</P
><P
> <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
-> <SPAN
-CLASS="emphasis"
-><I
+> <I
CLASS="EMPHASIS"
>requires</I
-></SPAN
>
write access to: all <TT
CLASS="FILENAME"
><H3
CLASS="SECT3"
><A
-NAME="NEWRELEASE-TARBALL">6.3.2. Source Tarball</H3
+NAME="NEWRELEASE-TARBALL"
+>6.3.2. Source Tarball</A
+></H3
><P
-> First, <SPAN
-CLASS="emphasis"
-><I
+> First, <I
CLASS="EMPHASIS"
>make sure that you have freshly exported the right
version into an empty directory</I
-></SPAN
>. (See "Building and releasing
packages" above). Then run:
</P
><H3
CLASS="SECT3"
><A
-NAME="NEWRELEASE-RPM">6.3.3. SuSE, Conectiva or Red Hat RPM</H3
+NAME="NEWRELEASE-RPM"
+>6.3.3. SuSE, Conectiva or Red Hat RPM</A
+></H3
><P
> In following text, replace <TT
CLASS="REPLACEABLE"
> for SuSE.
</P
><P
-> First, <SPAN
-CLASS="emphasis"
-><I
+> First, <I
CLASS="EMPHASIS"
>make sure that you have freshly exported the right
version into an empty directory</I
-></SPAN
>. (See "Building and releasing
packages" above).
</P
><H3
CLASS="SECT3"
><A
-NAME="NEWRELEASE-OS2">6.3.4. OS/2</H3
+NAME="NEWRELEASE-OS2"
+>6.3.4. OS/2</A
+></H3
><P
-> First, <SPAN
-CLASS="emphasis"
-><I
+> First, <I
CLASS="EMPHASIS"
>make sure that you have freshly exported the right
version into an empty directory</I
-></SPAN
>. (See "Building and releasing
packages" above). Then get the OS/2 Setup module:
</P
><H3
CLASS="SECT3"
><A
-NAME="NEWRELEASE-SOLARIS">6.3.5. Solaris</H3
+NAME="NEWRELEASE-SOLARIS"
+>6.3.5. Solaris</A
+></H3
><P
> Login to Sourceforge's compilefarm via ssh:
</P
</P
><P
> Choose the right operating system (not the Debian one).
- When logged in, <SPAN
-CLASS="emphasis"
-><I
+ When logged in, <I
CLASS="EMPHASIS"
>make sure that you have freshly exported the right
version into an empty directory</I
-></SPAN
>. (See "Building and releasing
packages" above). Then run:
</P
><H3
CLASS="SECT3"
><A
-NAME="NEWRELEASE-WINDOWS">6.3.6. Windows</H3
+NAME="NEWRELEASE-WINDOWS"
+>6.3.6. Windows</A
+></H3
><P
> You should ensure you have the latest version of Cygwin (from
<A
Run the following commands from within a Cygwin bash shell.
</P
><P
-> First, <SPAN
-CLASS="emphasis"
-><I
+> First, <I
CLASS="EMPHASIS"
>make sure that you have freshly exported the right
version into an empty directory</I
-></SPAN
>. (See "Building and releasing
packages" above). Then get the Windows setup module:
</P
><H3
CLASS="SECT3"
><A
-NAME="NEWRELEASE-DEBIAN">6.3.7. Debian</H3
+NAME="NEWRELEASE-DEBIAN"
+>6.3.7. Debian</A
+></H3
><P
-> First, <SPAN
-CLASS="emphasis"
-><I
+> First, <I
CLASS="EMPHASIS"
>make sure that you have freshly exported the
right version into an empty directory</I
-></SPAN
>. (See
"Building and releasing packages" above). Then add a log
entry to <TT
><TD
><PRE
CLASS="PROGRAMLISTING"
-> debchange -v 2.9.15-beta-1 "New upstream version"</PRE
+> debchange -v 2.9.18-beta-1 "New upstream version"</PRE
></TD
></TR
></TABLE
> This will create
<TT
CLASS="FILENAME"
->../privoxy_2.9.15-beta-1_i386.deb</TT
+>../privoxy_2.9.18-beta-1_i386.deb</TT
>
which can be uploaded. To upload the package to Sourceforge, simply
issue
><H3
CLASS="SECT3"
><A
-NAME="NEWRELEASE-MACOSX">6.3.8. Mac OSX</H3
+NAME="NEWRELEASE-MACOSX"
+>6.3.8. Mac OSX</A
+></H3
><P
-> First, <SPAN
-CLASS="emphasis"
-><I
+> First, <I
CLASS="EMPHASIS"
>make sure that you have freshly exported the right
version into an empty directory</I
-></SPAN
>. (See "Building and releasing
packages" above). Then get the Mac OSX setup module:
</P
><H3
CLASS="SECT3"
><A
-NAME="NEWRELEASE-FREEBSD">6.3.9. FreeBSD</H3
+NAME="NEWRELEASE-FREEBSD"
+>6.3.9. FreeBSD</A
+></H3
><P
> Login to Sourceforge's compile-farm via ssh:
</P
</P
><P
> Choose the right operating system.
- When logged in, <SPAN
-CLASS="emphasis"
-><I
+ When logged in, <I
CLASS="EMPHASIS"
>make sure that you have freshly exported the right
version into an empty directory</I
-></SPAN
>. (See "Building and releasing
packages" above). Then run:
</P
><H3
CLASS="SECT3"
><A
-NAME="NEWRELEASE-HPUX">6.3.10. HP-UX 11</H3
+NAME="NEWRELEASE-HPUX"
+>6.3.10. HP-UX 11</A
+></H3
><P
-> First, <SPAN
-CLASS="emphasis"
-><I
+> First, <I
CLASS="EMPHASIS"
>make sure that you have freshly exported the right
version into an empty directory</I
-></SPAN
>. (See "Building and releasing
packages" above). Then run:
</P
><H3
CLASS="SECT3"
><A
-NAME="NEWRELEASE-AMIGA">6.3.11. Amiga OS</H3
+NAME="NEWRELEASE-AMIGA"
+>6.3.11. Amiga OS</A
+></H3
><P
-> First, <SPAN
-CLASS="emphasis"
-><I
+> First, <I
CLASS="EMPHASIS"
>make sure that you have freshly exported the right
version into an empty directory</I
-></SPAN
>. (See "Building and releasing
packages" above). Then run:
</P
><H3
CLASS="SECT3"
><A
-NAME="NEWRELEASE-AIX">6.3.12. AIX</H3
+NAME="NEWRELEASE-AIX"
+>6.3.12. AIX</A
+></H3
><P
> Login to Sourceforge's compilefarm via ssh:
</P
</P
><P
> Choose the right operating system.
- When logged in, <SPAN
-CLASS="emphasis"
-><I
+ When logged in, <I
CLASS="EMPHASIS"
>make sure that you have freshly exported the right
version into an empty directory</I
-></SPAN
>. (See "Building and releasing
packages" above). Then run:
</P
><H2
CLASS="SECT2"
><A
-NAME="RELEASING">6.4. Uploading and Releasing Your Package</H2
+NAME="RELEASING"
+>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
of <TT
CLASS="LITERAL"
>$VERSION ($CODE_STATUS)</TT
->, e.g. <SPAN
-CLASS="emphasis"
-><I
+>, e.g. <I
CLASS="EMPHASIS"
->2.9.15
+>2.9.18
(beta)</I
-></SPAN
>.
</P
><P
><H2
CLASS="SECT2"
><A
-NAME="AFTERRELEASE">6.5. After the Release</H2
+NAME="AFTERRELEASE"
+>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
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="top"
><A
HREF="testing.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="top"
><A
HREF="index.html"
-ACCESSKEY="H"
>Home</A
></TD
><TD
VALIGN="top"
><A
HREF="webserver-update.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
>See also</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
TITLE="Privoxy Developer Manual"
HREF="index.html"><LINK
><DIV
CLASS="NAVHEADER"
><TABLE
-SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="bottom"
><A
HREF="copyright.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
><H1
CLASS="SECT1"
><A
-NAME="SEEALSO">10. See also</H1
+NAME="SEEALSO"
+>10. See also</A
+></H1
><P
> Other references and sites of interest to <SPAN
CLASS="APPLICATION"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="top"
><A
HREF="copyright.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="top"
><A
HREF="index.html"
-ACCESSKEY="H"
>Home</A
></TD
><TD
>Testing Guidelines</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
TITLE="Privoxy Developer Manual"
HREF="index.html"><LINK
><DIV
CLASS="NAVHEADER"
><TABLE
-SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="bottom"
><A
HREF="coding.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="bottom"
><A
HREF="newrelease.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
><H1
CLASS="SECT1"
><A
-NAME="TESTING">5. Testing Guidelines</H1
+NAME="TESTING"
+>5. Testing Guidelines</A
+></H1
><P
>To be filled.</P
><DIV
><H2
CLASS="SECT2"
><A
-NAME="TESTING-PLAN">5.1. Testplan for releases</H2
+NAME="TESTING-PLAN"
+>5.1. Testplan for releases</A
+></H2
><P
> Explain release numbers. major, minor. developer releases. etc.
><H2
CLASS="SECT2"
><A
-NAME="TESTING-REPORT">5.2. Test reports</H2
+NAME="TESTING-REPORT"
+>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"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="top"
><A
HREF="coding.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="top"
><A
HREF="index.html"
-ACCESSKEY="H"
>Home</A
></TD
><TD
VALIGN="top"
><A
HREF="newrelease.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
>Update the Webserver</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
TITLE="Privoxy Developer Manual"
HREF="index.html"><LINK
><DIV
CLASS="NAVHEADER"
><TABLE
-SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="bottom"
><A
HREF="newrelease.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="bottom"
><A
HREF="contact.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
><H1
CLASS="SECT1"
><A
-NAME="WEBSERVER-UPDATE">7. Update the Webserver</H1
+NAME="WEBSERVER-UPDATE"
+>7. Update the Webserver</A
+></H1
><P
> When updating the webserver, please follow these steps to make
sure that no broken links, inconsistent contents or permission
there are group writable.
</P
><P
-> Please do <SPAN
-CLASS="emphasis"
-><I
+> Please do <I
CLASS="EMPHASIS"
>NOT</I
-></SPAN
> use any other means of transferring
files to the webserver to avoid permission problems.
</P
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
VALIGN="top"
><A
HREF="newrelease.html"
-ACCESSKEY="P"
>Prev</A
></TD
><TD
VALIGN="top"
><A
HREF="index.html"
-ACCESSKEY="H"
>Home</A
></TD
><TD
VALIGN="top"
><A
HREF="contact.html"
-ACCESSKEY="N"
>Next</A
></TD
></TR
><H3
CLASS="SECT2"
><A
-NAME="AEN266"
+NAME="AEN277"
>3.3. What is an <SPAN
CLASS="QUOTE"
>"actions"</SPAN
><H3
CLASS="SECT2"
><A
-NAME="AEN285"
+NAME="AEN296"
>3.5. How are actions files configured? What is the easiest
way to do this?</A
></H3
><H3
CLASS="SECT2"
><A
-NAME="AEN293"
+NAME="AEN304"
>3.6. There are several different <SPAN
CLASS="QUOTE"
>"actions"</SPAN
><DIV
CLASS="TABLE"
><A
-NAME="AEN328"
+NAME="AEN339"
></A
><P
><B
><H3
CLASS="SECT2"
><A
-NAME="AEN431"
+NAME="AEN442"
>3.10. What is the <TT
CLASS="FILENAME"
>default.filter</TT
><H3
CLASS="SECT2"
><A
-NAME="AEN447"
+NAME="AEN458"
>3.11. How can I set up <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
> on port 8118, this line
- schould look like:</P
+ should look like:</P
><P
> <TABLE
BORDER="0"
><H3
CLASS="SECT2"
><A
-NAME="AEN465"
+NAME="AEN476"
>3.12. Instead of ads, now I get a checkerboard pattern. I don't want to see anything.</A
></H3
><P
><H3
CLASS="SECT2"
><A
-NAME="AEN482"
+NAME="AEN493"
>3.13. Why would anybody want to see a checkerboard pattern?</A
></H3
><P
><H3
CLASS="SECT2"
><A
-NAME="AEN487"
+NAME="AEN498"
>3.14. I see some images being replaced by a text
instead of the checkerboard image. Why and how do I get rid of this?</A
></H3
><H2
CLASS="SECT2"
><A
-NAME="AEN827"
+NAME="AEN844"
>7.1. License</A
></H2
><P
><H2
CLASS="SECT2"
><A
-NAME="AEN843"
+NAME="AEN860"
>7.2. History</A
></H2
><P
CLASS="APPLICATION"
>Privoxy</SPAN
>, whose first
- stable release, 3.0, is due in June 2002.</P
+ stable release, 3.0, is due late summer or early fall 2002.
+ </P
></DIV
></DIV
><DIV
CLASS="APPLICATION"
>Privoxy</SPAN
>, whose first
- stable release, 3.0, is due in June 2002.</P
+ stable release, 3.0, is due late summer or early fall 2002.
+ </P
></DIV
><DIV
CLASS="SECT2"
includes tools to help identify these types of situations so they can be
addressed as needed, allowing you to customize your installation.
(<A
-HREF="trouble.html#AEN737"
+HREF="trouble.html#AEN748"
>See the Troubleshooting section below</A
>.)</P
></DIV
><BR></P
><P
CLASS="PUBDATE"
->$Id: faq.sgml,v 1.61.2.5 2002/07/26 15:22:58 oes Exp $<BR></P
+>$Id: faq.sgml,v 1.61.2.11 2002/08/06 08:54:03 oes Exp $<BR></P
><DIV
><DIV
CLASS="ABSTRACT"
>, and nothing is happening.
All the ads are there. What's wrong?</A
></DT
+><DT
+>2.7. <A
+HREF="installation.html#OSXUNINSTALL"
+>In Mac OSX, I dragged the Privoxy folder to the trash in order to
+ uninstall it. Now the finder tells me I don't have sufficient privileges to
+ empty the trash.</A
+></DT
></DL
></DD
><DT
></DT
><DT
>3.3. <A
-HREF="configuration.html#AEN266"
+HREF="configuration.html#AEN277"
>What is an <SPAN
CLASS="QUOTE"
>"actions"</SPAN
></DT
><DT
>3.5. <A
-HREF="configuration.html#AEN285"
+HREF="configuration.html#AEN296"
>How are actions files configured? What is the easiest
way to do this?</A
></DT
><DT
>3.6. <A
-HREF="configuration.html#AEN293"
+HREF="configuration.html#AEN304"
>There are several different <SPAN
CLASS="QUOTE"
>"actions"</SPAN
></DT
><DT
>3.10. <A
-HREF="configuration.html#AEN431"
+HREF="configuration.html#AEN442"
>What is the <TT
CLASS="FILENAME"
>default.filter</TT
></DT
><DT
>3.11. <A
-HREF="configuration.html#AEN447"
+HREF="configuration.html#AEN458"
>How can I set up <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
></DT
><DT
>3.12. <A
-HREF="configuration.html#AEN465"
+HREF="configuration.html#AEN476"
>Instead of ads, now I get a checkerboard pattern. I don't want to see anything.</A
></DT
><DT
>3.13. <A
-HREF="configuration.html#AEN482"
+HREF="configuration.html#AEN493"
>Why would anybody want to see a checkerboard pattern?</A
></DT
><DT
>3.14. <A
-HREF="configuration.html#AEN487"
+HREF="configuration.html#AEN498"
>I see some images being replaced by a text
instead of the checkerboard image. Why and how do I get rid of this?</A
></DT
><DL
><DT
>4.1. <A
-HREF="misc.html#AEN523"
+HREF="misc.html#AEN534"
>How much does <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
></DT
><DT
>4.7. <A
-HREF="misc.html#AEN583"
+HREF="misc.html#AEN594"
>Can <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
></DT
><DT
>4.8. <A
-HREF="misc.html#AEN594"
+HREF="misc.html#AEN605"
>Might some things break because header information or
content is being altered?</A
></DT
><DT
>4.9. <A
-HREF="misc.html#AEN605"
+HREF="misc.html#AEN616"
>Can <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
></DT
><DT
>4.10. <A
-HREF="misc.html#AEN615"
+HREF="misc.html#AEN626"
>What about as a firewall? Can <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
></DT
><DT
>4.11. <A
-HREF="misc.html#AEN621"
+HREF="misc.html#AEN632"
>I have large empty spaces / a checkerboard pattern now where
ads used to be. Why?</A
></DT
><DT
>4.12. <A
-HREF="misc.html#AEN626"
+HREF="misc.html#AEN637"
>How can <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
></DT
><DT
>4.13. <A
-HREF="misc.html#AEN637"
+HREF="misc.html#AEN648"
><SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
><DL
><DT
>5.1. <A
-HREF="trouble.html#AEN718"
+HREF="trouble.html#AEN729"
>I just upgraded and am getting <SPAN
CLASS="QUOTE"
>"connection refused"</SPAN
></DT
><DT
>5.2. <A
-HREF="trouble.html#AEN731"
+HREF="trouble.html#AEN742"
>I just added a new rule, but the steenkin ad is
still getting through. How?</A
></DT
><DT
>5.3. <A
-HREF="trouble.html#AEN737"
+HREF="trouble.html#AEN748"
>One of my favorite sites does not work with <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
>
seems to be blocking me.</A
></DT
+><DT
+>5.6. <A
+HREF="trouble.html#OSXIE"
+>In Mac OSX, I can't configure Microsoft Internet Explorer to use
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> as the HTTP proxy.</A
+></DT
></DL
></DD
><DT
><DL
><DT
>7.1. <A
-HREF="copyright.html#AEN827"
+HREF="copyright.html#AEN844"
>License</A
></DT
><DT
>7.2. <A
-HREF="copyright.html#AEN843"
+HREF="copyright.html#AEN860"
>History</A
></DT
></DL
CLASS="APPLICATION"
>Privoxy</SPAN
> is known to run on
- Windows(95, 98, ME, 2000, XP), Linux (RedHat, SuSE, Debian, Conectiva),
+ Windows(95, 98, ME, 2000, XP), Linux (RedHat, SuSE, Debian, Conectiva, Gentoo),
Mac OSX, OS/2, AmigaOS, BeOS, FreeBSD, NetBSD, Solaris, and many more
flavors of Unix.</P
><P
HREF="../user-manual/config.html#LOGFILE"
TARGET="_top"
>log file</A
->.
- </P
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="OSXUNINSTALL"
+>2.7. In Mac OSX, I dragged the Privoxy folder to the trash in order to
+ uninstall it. Now the finder tells me I don't have sufficient privileges to
+ empty the trash.</A
+></H2
+><P
+> <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is installed with root permissions.
+ When you drag the Privoxy folder to the trash, the general user does not
+ have (as the Finder says) sufficient privileges to delete it. Unfortunately,
+ the finder does not offer a way to enter the administrator password in order
+ to prove you do in fact own this computer. To fix this situation, open the
+ Terminal application and carefully enter the following commands:
+ </P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+> cd ~
+ cd .Trash
+ sudo rm -rf Privoxy</PRE
+></TD
+></TR
+></TABLE
+>
+ </P
+><P
+> The trash may still appear full after this command; emptying the trash
+ from the desktop should make it appear empty again.
+ </P
+><DIV
+CLASS="WARNING"
+><P
+></P
+><TABLE
+CLASS="WARNING"
+BORDER="1"
+WIDTH="100%"
+><TR
+><TD
+ALIGN="CENTER"
+><B
+>Warning</B
+></TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+><P
+> Be extra-sure to enter the commands <I
+CLASS="EMPHASIS"
+>EXACTLY</I
+> as shown
+ above. Removing files recusively with administrator priviledges (as happens
+ with <TT
+CLASS="LITERAL"
+>sudo rm -rf</TT
+> is serious business and even small
+ typos can have devasting effects!
+ </P
+></TD
+></TR
+></TABLE
+></DIV
></DIV
></DIV
><DIV
><H3
CLASS="SECT2"
><A
-NAME="AEN523"
+NAME="AEN534"
>4.1. How much does <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
>Privoxy</SPAN
>, http://example.com/show-proxy-args and http://i.j.b/,
are no longer supported. If you still use such an old version, you should really consider
- upgrading to 2.9.16.</P
+ upgrading to 2.9.18.</P
></DIV
><DIV
CLASS="SECT2"
><H3
CLASS="SECT2"
><A
-NAME="AEN583"
+NAME="AEN594"
>4.7. Can <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
><H3
CLASS="SECT2"
><A
-NAME="AEN594"
+NAME="AEN605"
>4.8. Might some things break because header information or
content is being altered?</A
></H3
><H3
CLASS="SECT2"
><A
-NAME="AEN605"
+NAME="AEN616"
>4.9. Can <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
><H3
CLASS="SECT2"
><A
-NAME="AEN615"
+NAME="AEN626"
>4.10. What about as a firewall? Can <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
><H3
CLASS="SECT2"
><A
-NAME="AEN621"
+NAME="AEN632"
>4.11. I have large empty spaces / a checkerboard pattern now where
ads used to be. Why?</A
></H3
><H3
CLASS="SECT2"
><A
-NAME="AEN626"
+NAME="AEN637"
>4.12. How can <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
><H3
CLASS="SECT2"
><A
-NAME="AEN637"
+NAME="AEN648"
>4.13. <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
><H3
CLASS="SECT2"
><A
-NAME="AEN718"
+NAME="AEN729"
>5.1. I just upgraded and am getting <SPAN
CLASS="QUOTE"
>"connection refused"</SPAN
><H3
CLASS="SECT2"
><A
-NAME="AEN731"
+NAME="AEN742"
>5.2. I just added a new rule, but the steenkin ad is
still getting through. How?</A
></H3
><H3
CLASS="SECT2"
><A
-NAME="AEN737"
+NAME="AEN748"
>5.3. One of my favorite sites does not work with <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
as an FTP proxy. The same is true for any protocol other than HTTP or HTTPS.
</P
></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
+NAME="OSXIE"
+>5.6. In Mac OSX, I can't configure Microsoft Internet Explorer to use
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> as the HTTP proxy.</A
+></H2
+><P
+> Microsoft Internet Explorer (in versions like 5.1) respects system-wide
+ network settings. In order to change the HTTP proxy, open System
+ Preferences, and click on the Network icon. In the settings pane that
+ comes up, click on the Proxies tab. Ensure the "Web Proxy (HTTP)" checkbox
+ is checked and enter <TT
+CLASS="LITERAL"
+>127.0.0.1</TT
+> in the entry field.
+ Enter <TT
+CLASS="LITERAL"
+>8118</TT
+> in the Port field. The next time you start
+ IE, it should reflect these values.
+ </P
+></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="The Main Configuration File"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
><H2
CLASS="SECT2"
><A
-NAME="AEN1610"
+NAME="AEN1637"
>8.1. Finding the Right Mix</A
></H2
><P
><H2
CLASS="SECT2"
><A
-NAME="AEN1617"
+NAME="AEN1644"
>8.2. How to Edit</A
></H2
><P
><H3
CLASS="SECT3"
><A
-NAME="AEN1681"
+NAME="AEN1708"
>8.4.1. The Domain Pattern</A
></H3
><P
><H3
CLASS="SECT3"
><A
-NAME="AEN1743"
+NAME="AEN1770"
>8.4.2. The Path Pattern</A
></H3
><P
><H3
CLASS="SECT3"
><A
-NAME="AEN2671"
+NAME="AEN2698"
>8.5.21. Summary</A
></H3
><P
><H3
CLASS="SECT3"
><A
-NAME="AEN2723"
+NAME="AEN2750"
>8.7.1. default.action</A
></H3
><P
><H3
CLASS="SECT3"
><A
-NAME="AEN2880"
+NAME="AEN2907"
>8.7.2. user.action</A
></H3
><P
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="See Also"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
><H2
CLASS="SECT2"
><A
-NAME="AEN3435"
+NAME="AEN3462"
>14.2. <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
Privoxy main page:
</P
><A
-NAME="AEN3450"
+NAME="AEN3477"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
editing of actions files:
</P
><A
-NAME="AEN3458"
+NAME="AEN3485"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
Show the source code version numbers:
</P
><A
-NAME="AEN3463"
+NAME="AEN3490"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
Show the browser's request headers:
</P
><A
-NAME="AEN3468"
+NAME="AEN3495"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
Show which actions apply to a URL and why:
</P
><A
-NAME="AEN3473"
+NAME="AEN3500"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
to run, but only as a pass-through proxy, with no actions taking place:
</P
><A
-NAME="AEN3479"
+NAME="AEN3506"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
> Short cuts. Turn off, then on:
</P
><A
-NAME="AEN3483"
+NAME="AEN3510"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
</P
></BLOCKQUOTE
><A
-NAME="AEN3486"
+NAME="AEN3513"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Privoxy Configuration"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
><TD
><PRE
CLASS="SCREEN"
->user-manual  file:///usr/share/doc/privoxy-2.9.16/user-manual/</PRE
+>user-manual  file:///usr/share/doc/privoxy-2.9.18/user-manual/</PRE
></TD
></TR
></TABLE
debug 256 # debug GIF de-animation
debug 512 # Common Log Format
debug 1024 # debug kill pop-ups
+ debug 2048 # CGI user interface
debug 4096 # Startup banner and warnings.
debug 8192 # Non-fatal errors</PRE
></TD
> <TT
CLASS="REPLACEABLE"
><I
->target_domain</I
+>target_pattern</I
></TT
->[:<TT
-CLASS="REPLACEABLE"
-><I
->port</I
-></TT
->]
+>
<TT
CLASS="REPLACEABLE"
><I
>http_parent</I
></TT
->[/<TT
+>[:<TT
CLASS="REPLACEABLE"
><I
>port</I
>]
</P
><P
-> Where <TT
+> where <TT
CLASS="REPLACEABLE"
><I
->target_domain</I
+>target_pattern</I
></TT
-> is a domain name pattern (see the
- chapter on domain matching in the <TT
-CLASS="FILENAME"
->default.action</TT
-> file),
+> is a <A
+HREF="actions-file.html#AF-PATTERNS"
+>URL pattern</A
+>
+ that specifies to which requests (i.e. URLs) this forward rule shall apply. Use <TT
+CLASS="LITERAL"
+>/</TT
+> to
+ denote <SPAN
+CLASS="QUOTE"
+>"all URLs"</SPAN
+>.
<TT
CLASS="REPLACEABLE"
><I
>http_parent</I
></TT
-> is the address of the parent HTTP proxy
- as an IP addresses in dotted decimal notation or as a valid DNS name (or <SPAN
-CLASS="QUOTE"
->"."</SPAN
-> to denote
- <SPAN
-CLASS="QUOTE"
->"no forwarding"</SPAN
->, and the optional
- <TT
+>[:<TT
CLASS="REPLACEABLE"
><I
>port</I
></TT
-> parameters are TCP ports, i.e. integer
- values from 1 to 64535
+>]
+ is the DNS name or IP address of the parent HTTP proxy through which the requests should be forwarded,
+ optionally followed by its listening port (default: 8080).
+ Use a single dot (<TT
+CLASS="LITERAL"
+>.</TT
+>) to denote <SPAN
+CLASS="QUOTE"
+>"no forwarding"</SPAN
+>.
</P
></DD
><DT
><TD
><PRE
CLASS="SCREEN"
-> forward .* anon-proxy.example.org:8080
+> forward / anon-proxy.example.org:8080
forward :443 .</PRE
></TD
></TR
><TD
><PRE
CLASS="SCREEN"
-> forward .*. caching-proxy.example-isp.net:8000
+> forward / caching-proxy.example-isp.net:8000
forward .example-isp.net .</PRE
></TD
></TR
> <TT
CLASS="REPLACEABLE"
><I
->target_domain</I
+>target_pattern</I
></TT
->[:<TT
-CLASS="REPLACEABLE"
-><I
->port</I
-></TT
->]
+>
<TT
CLASS="REPLACEABLE"
><I
>socks_proxy</I
></TT
->[/<TT
+>[:<TT
CLASS="REPLACEABLE"
><I
>port</I
><I
>http_parent</I
></TT
->[/<TT
+>[:<TT
CLASS="REPLACEABLE"
><I
>port</I
>]
</P
><P
-> Where <TT
+> where <TT
CLASS="REPLACEABLE"
><I
->target_domain</I
+>target_pattern</I
></TT
-> is a domain name pattern (see the
- chapter on domain matching in the <TT
-CLASS="FILENAME"
->default.action</TT
-> file),
+> is a <A
+HREF="actions-file.html#AF-PATTERNS"
+>URL pattern</A
+>
+ that specifies to which requests (i.e. URLs) this forward rule shall apply. Use <TT
+CLASS="LITERAL"
+>/</TT
+> to
+ denote <SPAN
+CLASS="QUOTE"
+>"all URLs"</SPAN
+>.
<TT
CLASS="REPLACEABLE"
><I
><TD
><PRE
CLASS="SCREEN"
-> forward-socks4a .*. socks-gw.example.com:1080 www-cache.example-isp.net:8080
+> forward-socks4a / socks-gw.example.com:1080 www-cache.example-isp.net:8080
forward .example.com .</PRE
></TD
></TR
><TD
><PRE
CLASS="SCREEN"
-> forward-socks4 .*. socks-gw.example.com:1080 .</PRE
+> forward-socks4 / socks-gw.example.com:1080 .</PRE
></TD
></TR
></TABLE
><TD
><PRE
CLASS="SCREEN"
-> forward .*. .
+> forward / .
forward .isp-b.net host-b:8118</PRE
></TD
></TR
><TD
><PRE
CLASS="SCREEN"
-> forward .*. .
+> forward / .
forward .isp-a.net host-a:8118</PRE
></TD
></TR
CLASS="FILENAME"
>squid.conf</TT
>.</P
+><P
+> You could just as well decide to only forward requests for Windows executables through
+ a virus-scanning parent proxy, say, on <TT
+CLASS="LITERAL"
+>antivir.example.com</TT
+>, port 8010:</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+> forward / .
+ forward /.*\.(exe|com|dll|zip)$ antivir.example.com:8010</PRE
+></TD
+></TR
+></TABLE
+> </P
></DIV
></DIV
><DIV
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Starting Privoxy"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
><H2
CLASS="SECT2"
><A
-NAME="AEN555"
+NAME="AEN576"
>6.1. Controlling <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Templates"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Contacting the Developers, Bug Reporting and Feature
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
><H2
CLASS="SECT2"
><A
-NAME="AEN3185"
+NAME="AEN3212"
>12.1. License</A
></H2
><P
CLASS="APPLICATION"
>Privoxy</SPAN
>, whose first
- stable release, 3.0, is due in June 2002.</P
+ stable release, 3.0, is due late summer or early fall 2002.
+ </P
></DIV
><DIV
CLASS="SECT2"
><P
CLASS="LITERALLAYOUT"
> Rodrigo Barbosa (RPM specfiles)<br>
+ Moritz Barsnick<br>
Hal Burgiss (docs)<br>
Alexander Lazic<br>
Gábor Lipták<br>
Guy<br>
Haroon Rafique<br>
Roland Rosenfeld<br>
+ Georg Sauthoff<br>
David Schmidt (OS/2, Mac OSX ports)<br>
Joerg Strohmayer<br>
Sarantis Paskalis</P
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Actions Files"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
><H2
CLASS="SECT2"
><A
-NAME="AEN2983"
+NAME="AEN3010"
>9.1. Filter File Tutorial</A
></H2
><P
<HTML
><HEAD
><TITLE
->Privoxy 2.9.16 User Manual</TITLE
+>Privoxy 2.9.18 User Manual</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
CLASS="TITLE"
><A
NAME="AEN2"
->Privoxy 2.9.16 User Manual</A
+>Privoxy 2.9.18 User Manual</A
></H1
><P
CLASS="PUBDATE"
><BR></P
><P
CLASS="PUBDATE"
->$Id: user-manual.sgml,v 1.123.2.11 2002/07/26 15:20:31 oes Exp $<BR></P
+>$Id: user-manual.sgml,v 1.123.2.14 2002/08/06 09:16:13 oes Exp $<BR></P
><DIV
><DIV
CLASS="ABSTRACT"
HREF="installation.html#INSTALLATION-AMIGA"
>AmigaOS</A
></DT
+><DT
+>2.1.8. <A
+HREF="installation.html#INSTALLATTION-GENTOO"
+>Gentoo</A
+></DT
></DL
></DD
><DT
></DT
><DT
>5.9. <A
+HREF="startup.html#START-GENTOO"
+>Gentoo</A
+></DT
+><DT
+>5.10. <A
HREF="startup.html#CMDOPTIONS"
>Command Line Options</A
></DT
><DL
><DT
>6.1. <A
-HREF="configuration.html#AEN555"
+HREF="configuration.html#AEN576"
>Controlling <SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
><DL
><DT
>8.1. <A
-HREF="actions-file.html#AEN1610"
+HREF="actions-file.html#AEN1637"
>Finding the Right Mix</A
></DT
><DT
>8.2. <A
-HREF="actions-file.html#AEN1617"
+HREF="actions-file.html#AEN1644"
>How to Edit</A
></DT
><DT
><DL
><DT
>22<A
-HREF="actions-file.html#AEN1648"
+HREF="actions-file.html#AEN1675"
></A
></DT
><DT
>8.4.1. <A
-HREF="actions-file.html#AEN1681"
+HREF="actions-file.html#AEN1708"
>The Domain Pattern</A
></DT
><DT
>8.4.2. <A
-HREF="actions-file.html#AEN1743"
+HREF="actions-file.html#AEN1770"
>The Path Pattern</A
></DT
></DL
></DT
><DT
>8.5.21. <A
-HREF="actions-file.html#AEN2671"
+HREF="actions-file.html#AEN2698"
>Summary</A
></DT
></DL
><DL
><DT
>8.7.1. <A
-HREF="actions-file.html#AEN2723"
+HREF="actions-file.html#AEN2750"
>default.action</A
></DT
><DT
>8.7.2. <A
-HREF="actions-file.html#AEN2880"
+HREF="actions-file.html#AEN2907"
>user.action</A
></DT
></DL
><DL
><DT
>9.1. <A
-HREF="filter-file.html#AEN2983"
+HREF="filter-file.html#AEN3010"
>Filter File Tutorial</A
></DT
></DL
><DL
><DT
>12.1. <A
-HREF="copyright.html#AEN3185"
+HREF="copyright.html#AEN3212"
>License</A
></DT
><DT
></DT
><DT
>14.2. <A
-HREF="appendix.html#AEN3435"
+HREF="appendix.html#AEN3462"
><SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Introduction"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
><P
> RPMs can be installed with <TT
CLASS="LITERAL"
->rpm -Uvh privoxy-2.9.16-1.rpm</TT
+>rpm -Uvh privoxy-2.9.18-1.rpm</TT
>,
and will use <TT
CLASS="FILENAME"
> If you have problems with failed dependencies, try rebuilding the SRC RPM:
<TT
CLASS="LITERAL"
->rpm --rebuild privoxy-2.9.16-1.src.rpm</TT
+>rpm --rebuild privoxy-2.9.18-1.src.rpm</TT
>. This
will use your locally installed libraries and RPM version. </P
><P
> DEBs can be installed with <TT
CLASS="LITERAL"
>dpkg -i
- privoxy_2.9.16-1.deb</TT
+ privoxy_2.9.18-1.deb</TT
>, and will use
<TT
CLASS="FILENAME"
directory, including all configuration and log files. To uninstall, just
remove this directory.</P
></DIV
+><DIV
+CLASS="SECT3"
+><H3
+CLASS="SECT3"
+><A
+NAME="INSTALLATTION-GENTOO"
+>2.1.8. Gentoo</A
+></H3
+><P
+> Gentoo source packages (Ebuilds) for <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> are
+ contained in the Gentoo Portage Tree (they are not on the download page,
+ but there is a Gentoo section, where you can see when a new
+ <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> Version is added to the Portage Tree).</P
+><P
+> Before installing <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> under Gentoo just do
+ first <TT
+CLASS="LITERAL"
+>emerge rsync</TT
+> to get the latest changes from the
+ Portage tree. With <TT
+CLASS="LITERAL"
+>emerge privoxy</TT
+> you install the latest
+ version.</P
+><P
+> Configuration files are in <TT
+CLASS="FILENAME"
+>/etc/privoxy</TT
+>, the
+ documentation is in <TT
+CLASS="FILENAME"
+>/usr/share/doc/privoxy-2.9.18</TT
+>
+ and the Log directory is in <TT
+CLASS="FILENAME"
+>/var/log/privoxy</TT
+>.</P
+></DIV
></DIV
><DIV
CLASS="SECT2"
><TD
><PRE
CLASS="SCREEN"
-> tar xzvf privoxy-2.9.16-beta-src* [.tgz or .tar.gz]
- cd privoxy-2.9.16-beta</PRE
+> tar xzvf privoxy-2.9.18-beta-src* [.tgz or .tar.gz]
+ cd privoxy-2.9.18-beta</PRE
></TD
></TR
></TABLE
></H2
><P
> As user feedback comes in and development continues, we will make updated versions
- of both the software and the main <A
+ of both the main <A
HREF="actions-file.html"
>actions file</A
->
- (<TT
-CLASS="LITERAL"
->default.action</TT
->) available for download.</P
+> (as a <A
+HREF="http://sourceforge.net/project/showfiles.php?group_id=11118&release_id=103670"
+TARGET="_top"
+>separate
+ package</A
+>) and the software itself (including the actions file) available for
+ download.</P
><P
> If you wish to receive an email notification whenever we release updates of
<SPAN
to our announce mailing list</A
>, ijbswa-announce@lists.sourceforge.net.</P
><P
-> Both can be downloaded from the <A
-HREF="http://sourceforge.net/project/showfiles.php?group_id=11118"
-TARGET="_top"
->files
- section</A
-> on <A
-HREF="http://sourceforge.net/"
-TARGET="_top"
->SourceForge</A
->.</P
-><P
> In order not to loose your personal changes and adjustments when updating
to the latest <TT
CLASS="LITERAL"
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="NEXT"
TITLE="Installation"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
<SPAN
CLASS="APPLICATION"
>Privoxy</SPAN
->, v.2.9.16,
+>, v.2.9.18,
and is mostly complete at this point. The most up to date reference for the
time being is still the comments in the source files and in the individual
configuration files. Development of version 3.0 is currently nearing
WIDTH="33%"
ALIGN="left"
VALIGN="top"
->Privoxy 2.9.16 User Manual</TD
+>Privoxy 2.9.18 User Manual</TD
><TD
WIDTH="34%"
ALIGN="center"
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Note to Upgraders"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
> <DIV
CLASS="FIGURE"
><A
-NAME="AEN374"
+NAME="AEN384"
></A
><P
><B
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Privoxy Copyright, License and History"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Quickstart to Using Privoxy"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
> <DIV
CLASS="FIGURE"
><A
-NAME="AEN425"
+NAME="AEN435"
></A
><P
><B
><H2
CLASS="SECT2"
><A
+NAME="START-GENTOO"
+>5.9. Gentoo</A
+></H2
+><P
+> A script is again used. It will use the file <TT
+CLASS="FILENAME"
+>/etc/privoxy/config
+ </TT
+> as its main configuration file.</P
+><P
+> <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+> /etc/init.d/privoxy start
+ </PRE
+></TD
+></TR
+></TABLE
+></P
+><P
+> Note that <SPAN
+CLASS="APPLICATION"
+>Privoxy</SPAN
+> is not automatically started at
+ boot time by default. You can change this with the <TT
+CLASS="LITERAL"
+>rc-update</TT
+>
+ command.</P
+><P
+>
+ <TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="SCREEN"
+> rc-update add privoxy default
+ </PRE
+></TD
+></TR
+></TABLE
+></P
+></DIV
+><DIV
+CLASS="SECT2"
+><H2
+CLASS="SECT2"
+><A
NAME="CMDOPTIONS"
->5.9. Command Line Options</A
+>5.10. Command Line Options</A
></H2
><P
> <SPAN
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="The Filter File"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
REL="HOME"
-TITLE="Privoxy 2.9.16 User Manual"
+TITLE="Privoxy 2.9.18 User Manual"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Installation"
><TH
COLSPAN="3"
ALIGN="center"
->Privoxy 2.9.16 User Manual</TH
+>Privoxy 2.9.18 User Manual</TH
></TR
><TR
><TD