4 >Privoxy Developer Manual</TITLE
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.60"><LINK
10 HREF="introduction.html"><LINK
13 HREF="../p_doc.css"></HEAD
29 >Privoxy Developer Manual</A
46 >By: Privoxy Developers<BR></SPAN
51 >$Id: developer-manual.sgml,v 1.25 2002/04/06 05:07:28 hal9 Exp $<BR></P
64 > The developer manual gives the users information on how to help the developer
65 team. It provides guidance on coding, testing, documentation and other
72 > is a web proxy with advanced filtering
73 capabilities for protecting privacy, filtering web page content, managing
74 cookies, controlling access, and removing ads, banners, pop-ups and other
75 obnoxious Internet junk. <SPAN
79 flexible configuration and can be customized to suit individual needs and
83 > has application for both
84 stand-alone systems and multi-user networks.</P
89 > is based on the code of the
92 >Internet Junkbuster</SPAN
97 > was originally written by JunkBusters
98 Corporation, and was released as free open-source software under the GNU GPL.
99 Stefan Waldherr made many improvements, and started the SourceForge project
100 to continue development.</P
109 > tradition, but adds many
110 refinements, enhancements and new features.</P
112 > You can find the latest version of the this manual at <A
113 HREF="http://www.privoxy.org/developer-manual/"
115 >http://www.privoxy.org/developer-manual/</A
117 Please see the Contact section on how to contact the developers.</P
128 >Table of Contents</B
132 HREF="index.html#INTRO"
137 HREF="introduction.html"
142 HREF="quickstart.html"
143 >Quickstart to Privoxy Development</A
147 HREF="documentation.html"
148 >Documentation Guidelines</A
154 HREF="documentation.html#SGML"
155 >Quickstart to Docbook and SGML</A
161 HREF="documentation.html#AEN113"
168 HREF="documentation.html#DOCSTYLE"
172 > Documentation Style</A
176 HREF="documentation.html#AEN173"
177 >Privoxy Custom Entities</A
184 >Coding Guidelines</A
190 HREF="coding.html#S1"
195 HREF="coding.html#S2"
202 HREF="coding.html#S3"
203 >Comment, Comment, Comment</A
207 HREF="coding.html#S4"
208 >Use blocks for comments</A
212 HREF="coding.html#S5"
213 >Keep Comments on their own line</A
217 HREF="coding.html#S6"
218 >Comment each logical step</A
222 HREF="coding.html#S7"
223 >Comment All Functions Thoroughly</A
227 HREF="coding.html#S8"
228 >Comment at the end of braces if the
229 content is more than one screen length</A
235 HREF="coding.html#S9"
236 >Naming Conventions</A
242 HREF="coding.html#S10"
247 HREF="coding.html#S11"
252 HREF="coding.html#S12"
253 >Header file prototypes</A
257 HREF="coding.html#S13"
258 >Enumerations, and #defines</A
262 HREF="coding.html#S14"
269 HREF="coding.html#S15"
276 HREF="coding.html#S16"
277 >Put braces on a line by themselves.</A
281 HREF="coding.html#S17"
282 >ALL control statements should have a
287 HREF="coding.html#S18"
288 >Do not belabor/blow-up boolean
293 HREF="coding.html#S19"
294 >Use white space freely because it is
299 HREF="coding.html#S20"
300 >Don't use white space around structure
305 HREF="coding.html#S21"
306 >Make the last brace of a function stand
311 HREF="coding.html#S22"
312 >Use 3 character indentions</A
318 HREF="coding.html#S23"
325 HREF="coding.html#S24"
326 >Initialize all variables</A
332 HREF="coding.html#S25"
339 HREF="coding.html#S26"
340 >Name functions that return a boolean as a
345 HREF="coding.html#S27"
346 >Always specify a return type for a
351 HREF="coding.html#S28"
352 >Minimize function calls when iterating by
357 HREF="coding.html#S29"
358 >Pass and Return by Const Reference</A
362 HREF="coding.html#S30"
363 >Pass and Return by Value</A
367 HREF="coding.html#S31"
368 >Names of include files</A
372 HREF="coding.html#S32"
373 >Provide multiple inclusion
378 HREF="coding.html#S33"
379 >Use `extern "C"` when appropriate</A
383 HREF="coding.html#S34"
384 >Where Possible, Use Forward Struct
385 Declaration Instead of Includes</A
391 HREF="coding.html#S35"
392 >General Coding Practices</A
398 HREF="coding.html#S36"
403 HREF="coding.html#S37"
404 >Provide a default case for all switch
409 HREF="coding.html#S38"
410 >Try to avoid falling through cases in a
415 HREF="coding.html#S39"
416 >Use 'long' or 'short' Instead of
421 HREF="coding.html#S40"
422 >Don't mix size_t and other types</A
426 HREF="coding.html#S41"
427 >Declare each variable and struct on its
432 HREF="coding.html#S42"
433 >Use malloc/zalloc sparingly</A
437 HREF="coding.html#S43"
438 >The Programmer Who Uses 'malloc' is
439 Responsible for Ensuring 'free'</A
443 HREF="coding.html#S44"
444 >Add loaders to the `file_list' structure
449 HREF="coding.html#S45"
450 >"Uncertain" new code and/or changes to
451 exitinst code, use FIXME</A
457 HREF="coding.html#S46"
458 >Addendum: Template for files and function
466 >Version Control Guidelines</A
471 >Testing Guidelines</A
477 HREF="testing.html#TESTING-PLAN"
478 >Testplan for releases</A
482 HREF="testing.html#TESTING-REPORT"
489 HREF="newrelease.html"
490 >Releasing a new version</A
496 HREF="newrelease.html#BEFORERELEASE"
497 >Before the Release</A
501 HREF="newrelease.html#NEWRELEASE-WEB"
502 >Update the webserver</A
506 HREF="newrelease.html#NEWRELEASE-RPM"
511 HREF="newrelease.html#NEWRELEASE-OS2"
516 HREF="newrelease.html#NEWRELEASE-SOLARIS"
521 HREF="newrelease.html#NEWRELEASE-WINDOWS"
526 HREF="newrelease.html#NEWRELEASE-DEBIAN"
531 HREF="newrelease.html#NEWRELEASE-MACOSX"
536 HREF="newrelease.html#NEWRELEASE-FREEBSD"
541 HREF="newrelease.html#NEWRELEASE-TARBALL"
546 HREF="newrelease.html#NEWRELEASE-HPUX"
551 HREF="newrelease.html#NEWRELEASE-AMIGA"
556 HREF="newrelease.html#NEWRELEASE-AIX"
564 >Contacting the developers, Bug Reporting and Feature Requests</A
568 HREF="copyright.html"
569 >Copyright and History</A
575 HREF="copyright.html#AEN930"
580 HREF="copyright.html#AEN937"
629 HREF="introduction.html"