4 >Privoxy Developer Manual</TITLE
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.64
11 HREF="introduction.html"><LINK
14 HREF="../p_doc.css"></HEAD
30 >Privoxy Developer Manual</A
47 >By: Privoxy Developers<BR></SPAN
52 >$Id: developer-manual.sgml,v 1.27 2002/04/08 15:31:18 hal9 Exp $<BR></P
65 > The developer manual gives the users information on how to help the developer
66 team. It provides guidance on coding, testing, documentation and other
73 > is a web proxy with advanced filtering
74 capabilities for protecting privacy, filtering web page content, managing
75 cookies, controlling access, and removing ads, banners, pop-ups and other
76 obnoxious Internet junk. <SPAN
80 flexible configuration and can be customized to suit individual needs and
84 > has application for both
85 stand-alone systems and multi-user networks.</P
90 > is based on the code of the
93 >Internet Junkbuster</SPAN
98 > was originally written by JunkBusters
99 Corporation, and was released as free open-source software under the GNU GPL.
100 Stefan Waldherr made many improvements, and started the SourceForge project
101 to continue development.</P
110 > tradition, but adds many
111 refinements, enhancements and new features.</P
113 > You can find the latest version of the this manual at <A
114 HREF="http://www.privoxy.org/developer-manual/"
116 >http://www.privoxy.org/developer-manual/</A
118 Please see the Contact section on how to contact the developers.</P
129 >Table of Contents</B
133 HREF="index.html#INTRO"
138 HREF="introduction.html"
143 HREF="quickstart.html"
144 >Quickstart to Privoxy Development</A
148 HREF="documentation.html"
149 >Documentation Guidelines</A
155 HREF="documentation.html#SGML"
156 >Quickstart to Docbook and SGML</A
160 HREF="documentation.html#DOCSTYLE"
164 > Documentation Style</A
168 HREF="documentation.html#AEN179"
169 >Privoxy Custom Entities</A
176 >Coding Guidelines</A
182 HREF="coding.html#S1"
187 HREF="coding.html#S2"
194 HREF="coding.html#S3"
195 >Comment, Comment, Comment</A
199 HREF="coding.html#S4"
200 >Use blocks for comments</A
204 HREF="coding.html#S5"
205 >Keep Comments on their own line</A
209 HREF="coding.html#S6"
210 >Comment each logical step</A
214 HREF="coding.html#S7"
215 >Comment All Functions Thoroughly</A
219 HREF="coding.html#S8"
220 >Comment at the end of braces if the
221 content is more than one screen length</A
227 HREF="coding.html#S9"
228 >Naming Conventions</A
234 HREF="coding.html#S10"
239 HREF="coding.html#S11"
244 HREF="coding.html#S12"
245 >Header file prototypes</A
249 HREF="coding.html#S13"
250 >Enumerations, and #defines</A
254 HREF="coding.html#S14"
261 HREF="coding.html#S15"
268 HREF="coding.html#S16"
269 >Put braces on a line by themselves.</A
273 HREF="coding.html#S17"
274 >ALL control statements should have a
279 HREF="coding.html#S18"
280 >Do not belabor/blow-up boolean
285 HREF="coding.html#S19"
286 >Use white space freely because it is
291 HREF="coding.html#S20"
292 >Don't use white space around structure
297 HREF="coding.html#S21"
298 >Make the last brace of a function stand
303 HREF="coding.html#S22"
304 >Use 3 character indentions</A
310 HREF="coding.html#S23"
317 HREF="coding.html#S24"
318 >Initialize all variables</A
324 HREF="coding.html#S25"
331 HREF="coding.html#S26"
332 >Name functions that return a boolean as a
337 HREF="coding.html#S27"
338 >Always specify a return type for a
343 HREF="coding.html#S28"
344 >Minimize function calls when iterating by
349 HREF="coding.html#S29"
350 >Pass and Return by Const Reference</A
354 HREF="coding.html#S30"
355 >Pass and Return by Value</A
359 HREF="coding.html#S31"
360 >Names of include files</A
364 HREF="coding.html#S32"
365 >Provide multiple inclusion
370 HREF="coding.html#S33"
371 >Use `extern "C"` when appropriate</A
375 HREF="coding.html#S34"
376 >Where Possible, Use Forward Struct
377 Declaration Instead of Includes</A
383 HREF="coding.html#S35"
384 >General Coding Practices</A
390 HREF="coding.html#S36"
395 HREF="coding.html#S37"
396 >Provide a default case for all switch
401 HREF="coding.html#S38"
402 >Try to avoid falling through cases in a
407 HREF="coding.html#S39"
408 >Use 'long' or 'short' Instead of
413 HREF="coding.html#S40"
414 >Don't mix size_t and other types</A
418 HREF="coding.html#S41"
419 >Declare each variable and struct on its
424 HREF="coding.html#S42"
425 >Use malloc/zalloc sparingly</A
429 HREF="coding.html#S43"
430 >The Programmer Who Uses 'malloc' is
431 Responsible for Ensuring 'free'</A
435 HREF="coding.html#S44"
436 >Add loaders to the `file_list' structure
441 HREF="coding.html#S45"
442 >"Uncertain" new code and/or changes to
443 exitinst code, use FIXME</A
449 HREF="coding.html#S46"
450 >Addendum: Template for files and function
458 >Version Control Guidelines</A
463 >Testing Guidelines</A
469 HREF="testing.html#TESTING-PLAN"
470 >Testplan for releases</A
474 HREF="testing.html#TESTING-REPORT"
481 HREF="newrelease.html"
482 >Releasing a new version</A
488 HREF="newrelease.html#BEFORERELEASE"
489 >Before the Release</A
493 HREF="newrelease.html#NEWRELEASE-WEB"
494 >Update the webserver</A
498 HREF="newrelease.html#NEWRELEASE-RPM"
503 HREF="newrelease.html#NEWRELEASE-OS2"
508 HREF="newrelease.html#NEWRELEASE-SOLARIS"
513 HREF="newrelease.html#NEWRELEASE-WINDOWS"
518 HREF="newrelease.html#NEWRELEASE-DEBIAN"
523 HREF="newrelease.html#NEWRELEASE-MACOSX"
528 HREF="newrelease.html#NEWRELEASE-FREEBSD"
533 HREF="newrelease.html#NEWRELEASE-TARBALL"
538 HREF="newrelease.html#NEWRELEASE-HPUX"
543 HREF="newrelease.html#NEWRELEASE-AMIGA"
548 HREF="newrelease.html#NEWRELEASE-AIX"
556 >Contacting the developers, Bug Reporting and Feature Requests</A
560 HREF="copyright.html"
561 >Copyright and History</A
567 HREF="copyright.html#AEN936"
572 HREF="copyright.html#AEN943"
621 HREF="introduction.html"