1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
5 >Privoxy Developer Manual</TITLE
8 CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
11 HREF="introduction.html"><LINK
14 HREF="../p_doc.css"><META
15 HTTP-EQUIV="Content-Type"
17 charset=ISO-8859-1"></HEAD
33 >Privoxy Developer Manual</A
41 HREF="https://www.privoxy.org/user-manual/copyright.html"
47 HREF="https://www.privoxy.org/"
49 >Privoxy Developers</A
56 >$Id: developer-manual.sgml,v 2.83 2017/06/08 13:08:39 fabiankeil Exp $<BR></P
66 > The developer manual provides guidance on coding, testing, packaging, documentation
67 and other issues of importance to those involved with
71 > development. It is mandatory (and helpful!) reading
72 for anyone who wants to join the team. Note that it's currently out of date
73 and may not be entirely correct. As always, patches are welcome.</P
75 > Please note that this document is constantly evolving. This copy represents
76 the state at the release of version 3.0.27.
77 You can find the latest version of the this manual at <A
78 HREF="https://www.privoxy.org/developer-manual/"
80 >https://www.privoxy.org/developer-manual/</A
82 Please have a look at the
84 HREF="https://www.privoxy.org/user-manual/contact.html"
86 >contact section in the user manual</A
88 if you are interested in contacting the developers.</P
103 HREF="introduction.html"
110 HREF="introduction.html#QUICKSTART"
111 >Quickstart to Privoxy Development</A
118 >The CVS Repository</A
124 HREF="cvs.html#CVSACCESS"
129 HREF="cvs.html#CVSBRANCHES"
134 HREF="cvs.html#CVSCOMMIT"
135 >CVS Commit Guidelines</A
141 HREF="documentation.html"
142 >Documentation Guidelines</A
148 HREF="documentation.html#SGML"
149 >Quickstart to Docbook and SGML</A
153 HREF="documentation.html#DOCSTYLE"
157 > Documentation Style</A
161 HREF="documentation.html#AEN206"
162 >Privoxy Custom Entities</A
169 >Coding Guidelines</A
175 HREF="coding.html#S1"
180 HREF="coding.html#S2"
187 HREF="coding.html#S3"
188 >Comment, Comment, Comment</A
192 HREF="coding.html#S4"
193 >Use blocks for comments</A
197 HREF="coding.html#S5"
198 >Keep Comments on their own line</A
202 HREF="coding.html#S6"
203 >Comment each logical step</A
207 HREF="coding.html#S7"
208 >Comment All Functions Thoroughly</A
212 HREF="coding.html#S8"
213 >Comment at the end of braces if the
214 content is more than one screen length</A
220 HREF="coding.html#S9"
221 >Naming Conventions</A
227 HREF="coding.html#S10"
232 HREF="coding.html#S11"
237 HREF="coding.html#S12"
238 >Header file prototypes</A
242 HREF="coding.html#S13"
243 >Enumerations, and #defines</A
247 HREF="coding.html#S14"
254 HREF="coding.html#S15"
261 HREF="coding.html#S16"
262 >Put braces on a line by themselves.</A
266 HREF="coding.html#S17"
267 >ALL control statements should have a
272 HREF="coding.html#S18"
273 >Do not belabor/blow-up boolean
278 HREF="coding.html#S19"
279 >Use white space freely because it is
284 HREF="coding.html#S20"
285 >Don't use white space around structure
290 HREF="coding.html#S21"
291 >Make the last brace of a function stand
296 HREF="coding.html#S22"
297 >Use 3 character indentions</A
303 HREF="coding.html#S23"
310 HREF="coding.html#S24"
311 >Initialize all variables</A
317 HREF="coding.html#S25"
324 HREF="coding.html#S26"
325 >Name functions that return a boolean as a
330 HREF="coding.html#S27"
331 >Always specify a return type for a
336 HREF="coding.html#S28"
337 >Minimize function calls when iterating by
342 HREF="coding.html#S29"
343 >Pass and Return by Const Reference</A
347 HREF="coding.html#S30"
348 >Pass and Return by Value</A
352 HREF="coding.html#S31"
353 >Names of include files</A
357 HREF="coding.html#S32"
358 >Provide multiple inclusion
363 HREF="coding.html#S33"
364 >Use `extern "C"` when appropriate</A
368 HREF="coding.html#S34"
369 >Where Possible, Use Forward Struct
370 Declaration Instead of Includes</A
376 HREF="coding.html#S35"
377 >General Coding Practices</A
383 HREF="coding.html#S36"
388 HREF="coding.html#S37"
389 >Provide a default case for all switch
394 HREF="coding.html#S38"
395 >Try to avoid falling through cases in a
400 HREF="coding.html#S40"
401 >Don't mix size_t and other types</A
405 HREF="coding.html#S41"
406 >Declare each variable and struct on its
411 HREF="coding.html#S42"
412 >Use malloc/zalloc sparingly</A
416 HREF="coding.html#S43"
417 >The Programmer Who Uses 'malloc' is
418 Responsible for Ensuring 'free'</A
422 HREF="coding.html#S44"
423 >Add loaders to the `file_list' structure
428 HREF="coding.html#S45"
429 >"Uncertain" new code and/or changes to
430 existing code, use XXX</A
436 HREF="coding.html#S46"
437 >Addendum: Template for files and function
445 >Testing Guidelines</A
451 HREF="testing.html#TESTING-PLAN"
452 >Testplan for releases</A
456 HREF="testing.html#FUZZING"
463 HREF="newrelease.html"
464 >Releasing a New Version</A
470 HREF="newrelease.html#VERSIONNUMBERS"
475 HREF="newrelease.html#BEFORERELEASE"
476 >Before the Release: Freeze</A
480 HREF="newrelease.html#THERELEASE"
481 >Building and Releasing the Packages</A
487 HREF="newrelease.html#PACK-GUIDELINES"
488 >Note on Privoxy Packaging</A
492 HREF="newrelease.html#NEWRELEASE-TARBALL"
497 HREF="newrelease.html#NEWRELEASE-RPM"
498 >SuSE, Conectiva or Red Hat RPM</A
502 HREF="newrelease.html#NEWRELEASE-OS2"
507 HREF="newrelease.html#NEWRELEASE-SOLARIS"
512 HREF="newrelease.html#NEWRELEASE-WINDOWS"
517 HREF="newrelease.html#NEWRELEASE-DEBIAN"
522 HREF="newrelease.html#NEWRELEASE-MACOSX"
527 HREF="newrelease.html#NEWRELEASE-FREEBSD"
534 HREF="newrelease.html#RELEASING"
535 >Uploading and Releasing Your Package</A
539 HREF="newrelease.html#AFTERRELEASE"
540 >After the Release</A
546 HREF="webserver-update.html"
547 >Update the Webserver</A
557 SUMMARY="Footer navigation table"
578 HREF="introduction.html"