Regenerate (has problems).
[privoxy.git] / doc / pdf / privoxy-developer-manual.pdf
1 %PDF-1.4
2 %âãÏÓ
3 1 0 obj<</Producer(htmldoc 1.8.20 Copyright 1997-2002 Easy Software Products, All Rights Reserved.)/CreationDate(D:20020806221129+0400)/Title(Privoxy Developer Manual)/Creator(Modular DocBook HTML Stylesheet Version 1.76b+)>>endobj
4 2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
5 3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
6 4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Oblique/Encoding 2 0 R>>endobj
7 5 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
8 6 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Bold/Encoding 2 0 R>>endobj
9 7 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Italic/Encoding 2 0 R>>endobj
10 8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-BoldItalic/Encoding 2 0 R>>endobj
11 9 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
12 10 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
13 11 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
14 12 0 obj<</Subtype/Link/Rect[36.0 685.3 68.4 695.3]/Border[0 0 0]/Dest[394 0 R/XYZ 0 249 0]>>endobj
15 13 0 obj<</S/URI/URI(http://www.privoxy.org)>>endobj
16 14 0 obj<</Subtype/Link/Rect[124.5 685.3 190.3 695.3]/Border[0 0 0]/A 13 0 R>>endobj
17 15 0 obj<</S/URI/URI(http://www.privoxy.org/developer-manual/)>>endobj
18 16 0 obj<</Subtype/Link/Rect[263.3 578.2 458.6 591.2]/Border[0 0 0]/A 15 0 R>>endobj
19 17 0 obj<</Subtype/Link/Rect[509.0 578.2 562.2 591.2]/Border[0 0 0]/Dest[392 0 R/XYZ 0 282 0]>>endobj
20 18 0 obj<</Subtype/Link/Rect[36.0 565.0 67.2 578.0]/Border[0 0 0]/Dest[392 0 R/XYZ 0 282 0]>>endobj
21 19 0 obj<</Subtype/Link/Rect[44.2 510.2 102.0 523.2]/Border[0 0 0]/Dest[332 0 R/XYZ 0 681 0]>>endobj
22 20 0 obj<</Subtype/Link/Rect[88.5 497.0 246.7 510.0]/Border[0 0 0]/Dest[332 0 R/XYZ 0 566 0]>>endobj
23 21 0 obj<</Subtype/Link/Rect[44.2 483.8 136.2 496.8]/Border[0 0 0]/Dest[332 0 R/XYZ 0 468 0]>>endobj
24 22 0 obj<</Subtype/Link/Rect[88.5 470.6 154.8 483.6]/Border[0 0 0]/Dest[332 0 R/XYZ 0 393 0]>>endobj
25 23 0 obj<</Subtype/Link/Rect[88.5 457.4 194.5 470.4]/Border[0 0 0]/Dest[332 0 R/XYZ 0 308 0]>>endobj
26 24 0 obj<</Subtype/Link/Rect[88.5 444.2 204.9 457.2]/Border[0 0 0]/Dest[334 0 R/XYZ 0 734 0]>>endobj
27 25 0 obj<</Subtype/Link/Rect[44.2 431.0 165.2 444.0]/Border[0 0 0]/Dest[334 0 R/XYZ 0 556 0]>>endobj
28 26 0 obj<</Subtype/Link/Rect[88.5 417.8 242.2 430.8]/Border[0 0 0]/Dest[336 0 R/XYZ 0 705 0]>>endobj
29 27 0 obj<</Subtype/Link/Rect[88.5 404.6 220.2 417.6]/Border[0 0 0]/Dest[336 0 R/XYZ 0 193 0]>>endobj
30 28 0 obj<</Subtype/Link/Rect[88.5 391.4 198.2 404.4]/Border[0 0 0]/Dest[338 0 R/XYZ 0 177 0]>>endobj
31 29 0 obj<</Subtype/Link/Rect[44.2 378.2 129.8 391.2]/Border[0 0 0]/Dest[340 0 R/XYZ 0 425 0]>>endobj
32 30 0 obj<</Subtype/Link/Rect[88.5 365.0 146.2 378.0]/Border[0 0 0]/Dest[340 0 R/XYZ 0 392 0]>>endobj
33 31 0 obj<</Subtype/Link/Rect[88.5 351.8 166.7 364.8]/Border[0 0 0]/Dest[340 0 R/XYZ 0 267 0]>>endobj
34 32 0 obj<</Subtype/Link/Rect[132.8 338.6 273.0 351.6]/Border[0 0 0]/Dest[340 0 R/XYZ 0 237 0]>>endobj
35 33 0 obj<</Subtype/Link/Rect[132.8 325.4 245.8 338.4]/Border[0 0 0]/Dest[342 0 R/XYZ 0 553 0]>>endobj
36 34 0 obj<</Subtype/Link/Rect[132.8 312.2 284.9 325.2]/Border[0 0 0]/Dest[344 0 R/XYZ 0 734 0]>>endobj
37 35 0 obj<</Subtype/Link/Rect[132.8 299.0 255.0 312.0]/Border[0 0 0]/Dest[344 0 R/XYZ 0 190 0]>>endobj
38 36 0 obj<</Subtype/Link/Rect[132.8 285.8 294.1 298.8]/Border[0 0 0]/Dest[346 0 R/XYZ 0 718 0]>>endobj
39 37 0 obj<</Subtype/Link/Rect[132.8 272.6 465.5 285.6]/Border[0 0 0]/Dest[346 0 R/XYZ 0 571 0]>>endobj
40 38 0 obj<</Subtype/Link/Rect[88.5 259.4 183.8 272.4]/Border[0 0 0]/Dest[346 0 R/XYZ 0 228 0]>>endobj
41 39 0 obj<</Subtype/Link/Rect[132.8 246.2 206.7 259.2]/Border[0 0 0]/Dest[346 0 R/XYZ 0 198 0]>>endobj
42 40 0 obj<</Subtype/Link/Rect[132.8 233.0 207.9 246.0]/Border[0 0 0]/Dest[348 0 R/XYZ 0 651 0]>>endobj
43 41 0 obj<</Subtype/Link/Rect[132.8 219.8 234.5 232.8]/Border[0 0 0]/Dest[348 0 R/XYZ 0 425 0]>>endobj
44 42 0 obj<</Subtype/Link/Rect[132.8 206.6 258.6 219.6]/Border[0 0 0]/Dest[348 0 R/XYZ 0 191 0]>>endobj
45 43 0 obj<</Subtype/Link/Rect[132.8 193.4 179.5 206.4]/Border[0 0 0]/Dest[350 0 R/XYZ 0 557 0]>>endobj
46 44 0 obj<</Subtype/Link/Rect[88.5 180.2 146.5 193.2]/Border[0 0 0]/Dest[350 0 R/XYZ 0 273 0]>>endobj
47 45 0 obj<</Subtype/Link/Rect[132.8 167.0 290.4 180.0]/Border[0 0 0]/Dest[350 0 R/XYZ 0 243 0]>>endobj
48 46 0 obj<</Subtype/Link/Rect[132.8 153.8 328.6 166.8]/Border[0 0 0]/Dest[352 0 R/XYZ 0 442 0]>>endobj
49 47 0 obj<</Subtype/Link/Rect[132.8 140.6 337.9 153.6]/Border[0 0 0]/Dest[354 0 R/XYZ 0 734 0]>>endobj
50 48 0 obj<</Subtype/Link/Rect[132.8 127.4 311.8 140.4]/Border[0 0 0]/Dest[354 0 R/XYZ 0 559 0]>>endobj
51 49 0 obj<</Subtype/Link/Rect[132.8 114.2 354.2 127.2]/Border[0 0 0]/Dest[354 0 R/XYZ 0 349 0]>>endobj
52 50 0 obj<</Subtype/Link/Rect[132.8 101.0 324.3 114.0]/Border[0 0 0]/Dest[354 0 R/XYZ 0 126 0]>>endobj
53 51 0 obj<</Subtype/Link/Rect[132.8 87.8 255.0 100.8]/Border[0 0 0]/Dest[356 0 R/XYZ 0 464 0]>>endobj
54 52 0 obj<</Subtype/Link/Rect[88.5 74.6 139.5 87.6]/Border[0 0 0]/Dest[358 0 R/XYZ 0 734 0]>>endobj
55 53 0 obj<</Subtype/Link/Rect[132.8 61.4 232.7 74.4]/Border[0 0 0]/Dest[358 0 R/XYZ 0 704 0]>>endobj
56 54 0 obj[12 0 R
57 14 0 R
58 16 0 R
59 17 0 R
60 18 0 R
61 19 0 R
62 20 0 R
63 21 0 R
64 22 0 R
65 23 0 R
66 24 0 R
67 25 0 R
68 26 0 R
69 27 0 R
70 28 0 R
71 29 0 R
72 30 0 R
73 31 0 R
74 32 0 R
75 33 0 R
76 34 0 R
77 35 0 R
78 36 0 R
79 37 0 R
80 38 0 R
81 39 0 R
82 40 0 R
83 41 0 R
84 42 0 R
85 43 0 R
86 44 0 R
87 45 0 R
88 46 0 R
89 47 0 R
90 48 0 R
91 49 0 R
92 50 0 R
93 51 0 R
94 52 0 R
95 53 0 R]endobj
96 55 0 obj<</Subtype/Link/Rect[88.5 721.0 135.2 734.0]/Border[0 0 0]/Dest[358 0 R/XYZ 0 468 0]>>endobj
97 56 0 obj<</Subtype/Link/Rect[132.8 707.8 364.4 720.8]/Border[0 0 0]/Dest[358 0 R/XYZ 0 438 0]>>endobj
98 57 0 obj<</Subtype/Link/Rect[132.8 694.6 325.5 707.6]/Border[0 0 0]/Dest[358 0 R/XYZ 0 282 0]>>endobj
99 58 0 obj<</Subtype/Link/Rect[132.8 681.4 388.8 694.4]/Border[0 0 0]/Dest[358 0 R/XYZ 0 187 0]>>endobj
100 59 0 obj<</Subtype/Link/Rect[132.8 668.2 296.5 681.2]/Border[0 0 0]/Dest[360 0 R/XYZ 0 441 0]>>endobj
101 60 0 obj<</Subtype/Link/Rect[132.8 655.0 249.8 668.0]/Border[0 0 0]/Dest[360 0 R/XYZ 0 294 0]>>endobj
102 61 0 obj<</Subtype/Link/Rect[132.8 641.8 233.0 654.8]/Border[0 0 0]/Dest[360 0 R/XYZ 0 160 0]>>endobj
103 62 0 obj<</Subtype/Link/Rect[132.8 628.6 300.2 641.6]/Border[0 0 0]/Dest[362 0 R/XYZ 0 563 0]>>endobj
104 63 0 obj<</Subtype/Link/Rect[132.8 615.4 290.8 628.4]/Border[0 0 0]/Dest[362 0 R/XYZ 0 356 0]>>endobj
105 64 0 obj<</Subtype/Link/Rect[132.8 602.2 440.1 615.2]/Border[0 0 0]/Dest[364 0 R/XYZ 0 734 0]>>endobj
106 65 0 obj<</Subtype/Link/Rect[88.5 589.0 206.7 602.0]/Border[0 0 0]/Dest[364 0 R/XYZ 0 490 0]>>endobj
107 66 0 obj<</Subtype/Link/Rect[132.8 575.8 214.3 588.8]/Border[0 0 0]/Dest[364 0 R/XYZ 0 460 0]>>endobj
108 67 0 obj<</Subtype/Link/Rect[132.8 562.6 344.2 575.6]/Border[0 0 0]/Dest[364 0 R/XYZ 0 365 0]>>endobj
109 68 0 obj<</Subtype/Link/Rect[132.8 549.4 383.0 562.4]/Border[0 0 0]/Dest[366 0 R/XYZ 0 626 0]>>endobj
110 69 0 obj<</Subtype/Link/Rect[132.8 536.2 287.7 549.2]/Border[0 0 0]/Dest[366 0 R/XYZ 0 426 0]>>endobj
111 70 0 obj<</Subtype/Link/Rect[132.8 523.0 276.9 536.0]/Border[0 0 0]/Dest[366 0 R/XYZ 0 292 0]>>endobj
112 71 0 obj<</Subtype/Link/Rect[132.8 509.8 350.9 522.8]/Border[0 0 0]/Dest[366 0 R/XYZ 0 184 0]>>endobj
113 72 0 obj<</Subtype/Link/Rect[132.8 496.6 258.9 509.6]/Border[0 0 0]/Dest[368 0 R/XYZ 0 535 0]>>endobj
114 73 0 obj<</Subtype/Link/Rect[132.8 483.4 445.3 496.4]/Border[0 0 0]/Dest[368 0 R/XYZ 0 363 0]>>endobj
115 74 0 obj<</Subtype/Link/Rect[132.8 470.2 358.5 483.2]/Border[0 0 0]/Dest[370 0 R/XYZ 0 734 0]>>endobj
116 75 0 obj<</Subtype/Link/Rect[138.2 457.0 437.4 470.0]/Border[0 0 0]/Dest[370 0 R/XYZ 0 599 0]>>endobj
117 76 0 obj<</Subtype/Link/Rect[88.5 443.8 357.4 456.8]/Border[0 0 0]/Dest[370 0 R/XYZ 0 320 0]>>endobj
118 77 0 obj<</Subtype/Link/Rect[44.2 430.6 129.8 443.6]/Border[0 0 0]/Dest[376 0 R/XYZ 0 705 0]>>endobj
119 78 0 obj<</Subtype/Link/Rect[88.5 417.4 183.5 430.4]/Border[0 0 0]/Dest[376 0 R/XYZ 0 643 0]>>endobj
120 79 0 obj<</Subtype/Link/Rect[88.5 404.2 144.1 417.2]/Border[0 0 0]/Dest[376 0 R/XYZ 0 400 0]>>endobj
121 80 0 obj<</Subtype/Link/Rect[44.2 391.0 157.9 404.0]/Border[0 0 0]/Dest[376 0 R/XYZ 0 262 0]>>endobj
122 81 0 obj<</Subtype/Link/Rect[88.5 377.8 166.1 390.8]/Border[0 0 0]/Dest[378 0 R/XYZ 0 734 0]>>endobj
123 82 0 obj<</Subtype/Link/Rect[88.5 364.6 210.1 377.6]/Border[0 0 0]/Dest[378 0 R/XYZ 0 411 0]>>endobj
124 83 0 obj<</Subtype/Link/Rect[88.5 351.4 255.6 364.4]/Border[0 0 0]/Dest[380 0 R/XYZ 0 734 0]>>endobj
125 84 0 obj<</Subtype/Link/Rect[132.8 338.2 256.8 351.2]/Border[0 0 0]/Dest[380 0 R/XYZ 0 484 0]>>endobj
126 85 0 obj<</Subtype/Link/Rect[132.8 325.0 201.8 338.0]/Border[0 0 0]/Dest[382 0 R/XYZ 0 626 0]>>endobj
127 86 0 obj<</Subtype/Link/Rect[132.8 311.8 285.8 324.8]/Border[0 0 0]/Dest[382 0 R/XYZ 0 373 0]>>endobj
128 87 0 obj<</Subtype/Link/Rect[132.8 298.6 157.5 311.6]/Border[0 0 0]/Dest[384 0 R/XYZ 0 665 0]>>endobj
129 88 0 obj<</Subtype/Link/Rect[132.8 285.4 166.7 298.4]/Border[0 0 0]/Dest[384 0 R/XYZ 0 277 0]>>endobj
130 89 0 obj<</Subtype/Link/Rect[132.8 272.2 175.8 285.2]/Border[0 0 0]/Dest[386 0 R/XYZ 0 679 0]>>endobj
131 90 0 obj<</Subtype/Link/Rect[132.8 259.0 167.9 272.0]/Border[0 0 0]/Dest[386 0 R/XYZ 0 414 0]>>endobj
132 91 0 obj<</Subtype/Link/Rect[132.8 245.8 178.0 258.8]/Border[0 0 0]/Dest[386 0 R/XYZ 0 198 0]>>endobj
133 92 0 obj<</Subtype/Link/Rect[132.8 232.6 176.4 245.6]/Border[0 0 0]/Dest[388 0 R/XYZ 0 532 0]>>endobj
134 93 0 obj<</Subtype/Link/Rect[138.2 219.4 191.5 232.4]/Border[0 0 0]/Dest[388 0 R/XYZ 0 266 0]>>endobj
135 94 0 obj<</Subtype/Link/Rect[138.2 206.2 185.9 219.2]/Border[0 0 0]/Dest[388 0 R/XYZ 0 134 0]>>endobj
136 95 0 obj<</Subtype/Link/Rect[138.2 193.0 158.1 206.0]/Border[0 0 0]/Dest[390 0 R/XYZ 0 667 0]>>endobj
137 96 0 obj<</Subtype/Link/Rect[88.5 179.8 268.5 192.8]/Border[0 0 0]/Dest[390 0 R/XYZ 0 401 0]>>endobj
138 97 0 obj<</Subtype/Link/Rect[88.5 166.6 166.4 179.6]/Border[0 0 0]/Dest[392 0 R/XYZ 0 734 0]>>endobj
139 98 0 obj<</Subtype/Link/Rect[44.2 153.4 145.4 166.4]/Border[0 0 0]/Dest[392 0 R/XYZ 0 649 0]>>endobj
140 99 0 obj<</Subtype/Link/Rect[44.2 140.2 331.1 153.2]/Border[0 0 0]/Dest[392 0 R/XYZ 0 282 0]>>endobj
141 100 0 obj<</Subtype/Link/Rect[88.5 127.0 144.7 140.0]/Border[0 0 0]/Dest[392 0 R/XYZ 0 186 0]>>endobj
142 101 0 obj<</Subtype/Link/Rect[88.5 113.8 145.9 126.8]/Border[0 0 0]/Dest[394 0 R/XYZ 0 734 0]>>endobj
143 102 0 obj<</Subtype/Link/Rect[88.5 100.6 190.2 113.6]/Border[0 0 0]/Dest[394 0 R/XYZ 0 530 0]>>endobj
144 103 0 obj<</Subtype/Link/Rect[88.5 87.4 303.1 100.4]/Border[0 0 0]/Dest[394 0 R/XYZ 0 458 0]>>endobj
145 104 0 obj<</Subtype/Link/Rect[88.5 74.2 116.9 87.2]/Border[0 0 0]/Dest[394 0 R/XYZ 0 334 0]>>endobj
146 105 0 obj<</Subtype/Link/Rect[44.2 61.0 222.7 74.0]/Border[0 0 0]/Dest[394 0 R/XYZ 0 249 0]>>endobj
147 106 0 obj[55 0 R
148 56 0 R
149 57 0 R
150 58 0 R
151 59 0 R
152 60 0 R
153 61 0 R
154 62 0 R
155 63 0 R
156 64 0 R
157 65 0 R
158 66 0 R
159 67 0 R
160 68 0 R
161 69 0 R
162 70 0 R
163 71 0 R
164 72 0 R
165 73 0 R
166 74 0 R
167 75 0 R
168 76 0 R
169 77 0 R
170 78 0 R
171 79 0 R
172 80 0 R
173 81 0 R
174 82 0 R
175 83 0 R
176 84 0 R
177 85 0 R
178 86 0 R
179 87 0 R
180 88 0 R
181 89 0 R
182 90 0 R
183 91 0 R
184 92 0 R
185 93 0 R
186 94 0 R
187 95 0 R
188 96 0 R
189 97 0 R
190 98 0 R
191 99 0 R
192 100 0 R
193 101 0 R
194 102 0 R
195 103 0 R
196 104 0 R
197 105 0 R]endobj
198 107 0 obj<</Subtype/Link/Rect[88.5 721.0 124.9 734.0]/Border[0 0 0]/Dest[394 0 R/XYZ 0 147 0]>>endobj
199 108 0 obj<</Subtype/Link/Rect[88.5 707.8 124.2 720.8]/Border[0 0 0]/Dest[396 0 R/XYZ 0 573 0]>>endobj
200 109 0 obj<</Subtype/Link/Rect[49.8 694.6 88.9 707.6]/Border[0 0 0]/Dest[396 0 R/XYZ 0 303 0]>>endobj
201 110 0 obj<</S/URI/URI(http://sourceforge.net/)>>endobj
202 111 0 obj<</Subtype/Link/Rect[150.4 523.4 206.9 536.4]/Border[0 0 0]/A 110 0 R>>endobj
203 112 0 obj<</S/URI/URI(mailto:developers@privoxy.org)>>endobj
204 113 0 obj<</Subtype/Link/Rect[405.8 523.4 438.2 536.4]/Border[0 0 0]/A 112 0 R>>endobj
205 114 0 obj<</S/URI/URI(http://sourceforge.net/)>>endobj
206 115 0 obj<</Subtype/Link/Rect[219.5 350.2 281.2 363.2]/Border[0 0 0]/A 114 0 R>>endobj
207 116 0 obj<</S/URI/URI(http://sourceforge.net/docman/?group_id=1)>>endobj
208 117 0 obj<</Subtype/Link/Rect[448.9 350.2 556.3 363.2]/Border[0 0 0]/A 116 0 R>>endobj
209 118 0 obj[107 0 R
210 108 0 R
211 109 0 R
212 111 0 R
213 113 0 R
214 115 0 R
215 117 0 R]endobj
216 119 0 obj<</S/URI/URI(mailto:developers@privoxy.org)>>endobj
217 120 0 obj<</Subtype/Link/Rect[151.1 625.0 200.9 638.0]/Border[0 0 0]/A 119 0 R>>endobj
218 121 0 obj<</S/URI/URI(mailto:developers@privoxy.org)>>endobj
219 122 0 obj<</Subtype/Link/Rect[263.2 611.8 313.0 624.8]/Border[0 0 0]/A 121 0 R>>endobj
220 123 0 obj<</S/URI/URI(http://sourceforge.net/tracker/?atid=311118&group_id=11118&func=browse)>>endobj
221 124 0 obj<</Subtype/Link/Rect[187.6 572.2 256.6 585.2]/Border[0 0 0]/A 123 0 R>>endobj
222 125 0 obj<</S/URI/URI(http://www.docbook.org)>>endobj
223 126 0 obj<</Subtype/Link/Rect[36.0 497.0 76.3 510.0]/Border[0 0 0]/A 125 0 R>>endobj
224 127 0 obj<</S/Launch/F(index.html)>>endobj
225 128 0 obj<</Subtype/Link/Rect[423.1 483.8 485.2 496.8]/Border[0 0 0]/A 127 0 R>>endobj
226 129 0 obj<</S/Launch/F(index.html)>>endobj
227 130 0 obj<</Subtype/Link/Rect[487.9 483.8 512.1 496.8]/Border[0 0 0]/A 129 0 R>>endobj
228 131 0 obj[120 0 R
229 122 0 R
230 124 0 R
231 126 0 R
232 128 0 R
233 130 0 R]endobj
234 132 0 obj<</S/URI/URI(http://www.bureau-cornavin.com/opensource/crash-course/)>>endobj
235 133 0 obj<</Subtype/Link/Rect[131.5 208.4 392.3 221.4]/Border[0 0 0]/A 132 0 R>>endobj
236 134 0 obj[133 0 R]endobj
237 135 0 obj<</S/URI/URI(http://sourceforge.net/tracker/?func=add&group_id=11118&atid=395005)>>endobj
238 136 0 obj<</Subtype/Link/Rect[208.9 357.4 251.1 370.4]/Border[0 0 0]/A 135 0 R>>endobj
239 137 0 obj[136 0 R]endobj
240 138 0 obj<</S/URI/URI(http://sourceforge.net/project/showfiles.php?group_id=11118)>>endobj
241 139 0 obj<</Subtype/Link/Rect[80.3 228.7 113.9 241.7]/Border[0 0 0]/A 138 0 R>>endobj
242 140 0 obj[139 0 R]endobj
243 141 0 obj<</S/URI/URI(http://www.xworkplace.org/)>>endobj
244 142 0 obj<</Subtype/Link/Rect[144.5 519.4 198.5 532.4]/Border[0 0 0]/A 141 0 R>>endobj
245 143 0 obj[142 0 R]endobj
246 144 0 obj<</S/URI/URI(http://www.cygwin.com/)>>endobj
247 145 0 obj<</Subtype/Link/Rect[315.9 639.8 428.6 652.8]/Border[0 0 0]/A 144 0 R>>endobj
248 146 0 obj[145 0 R]endobj
249 147 0 obj<</S/URI/URI(ftp://upload.sourceforge.net/incoming)>>endobj
250 148 0 obj<</Subtype/Link/Rect[118.8 319.1 288.3 332.1]/Border[0 0 0]/A 147 0 R>>endobj
251 149 0 obj<</S/URI/URI(http://sourceforge.net/project/admin/editpackages.php?group_id=11118)>>endobj
252 150 0 obj<</Subtype/Link/Rect[127.0 239.9 445.8 252.9]/Border[0 0 0]/A 149 0 R>>endobj
253 151 0 obj[148 0 R
254 150 0 R]endobj
255 152 0 obj<</S/URI/URI(mailto:ijbswa-announce@lists.sourceforge.net)>>endobj
256 153 0 obj<</Subtype/Link/Rect[464.9 691.0 562.4 704.0]/Border[0 0 0]/A 152 0 R>>endobj
257 154 0 obj<</S/URI/URI(http://sourceforge.net/project/showfiles.php?group_id=11118)>>endobj
258 155 0 obj<</Subtype/Link/Rect[355.1 677.8 439.4 690.8]/Border[0 0 0]/A 154 0 R>>endobj
259 156 0 obj<</S/URI/URI(http://www.privoxy.org/)>>endobj
260 157 0 obj<</Subtype/Link/Rect[149.4 323.8 213.5 336.8]/Border[0 0 0]/A 156 0 R>>endobj
261 158 0 obj<</S/URI/URI(http://sourceforge.net/)>>endobj
262 159 0 obj<</Subtype/Link/Rect[203.1 143.4 262.1 156.4]/Border[0 0 0]/A 158 0 R>>endobj
263 160 0 obj<</S/URI/URI(http://sourceforge.net/tracker/?group_id=11118&atid=211118)>>endobj
264 161 0 obj<</Subtype/Link/Rect[36.0 130.2 309.6 143.2]/Border[0 0 0]/A 160 0 R>>endobj
265 162 0 obj<</S/URI/URI(http://lists.sourceforge.net/lists/listinfo/ijbswa-users)>>endobj
266 163 0 obj<</Subtype/Link/Rect[305.1 103.8 383.1 116.8]/Border[0 0 0]/A 162 0 R>>endobj
267 164 0 obj[153 0 R
268 155 0 R
269 157 0 R
270 159 0 R
271 161 0 R
272 163 0 R]endobj
273 165 0 obj<</S/URI/URI(http://sourceforge.net/tracker/?group_id=11118&atid=111118)>>endobj
274 166 0 obj<</Subtype/Link/Rect[262.1 691.0 538.4 704.0]/Border[0 0 0]/A 165 0 R>>endobj
275 167 0 obj<</S/URI/URI(http://sourceforge.net/tracker/?func=add&group_id=11118&atid=111118)>>endobj
276 168 0 obj<</Subtype/Link/Rect[61.4 651.4 118.2 664.4]/Border[0 0 0]/A 167 0 R>>endobj
277 169 0 obj<</S/Launch/F(toggle?mini=y&set=disabled','ijbstatus','width=250,height=100,resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no'\).focus\(\)\);)>>endobj
278 170 0 obj<</Subtype/Link/Rect[438.4 625.0 493.4 638.0]/Border[0 0 0]/A 169 0 R>>endobj
279 171 0 obj<</S/URI/URI(http://www.privoxy.org/user-manual/appendix.html#ACTIONSANAT)>>endobj
280 172 0 obj<</Subtype/Link/Rect[156.7 611.8 284.1 624.8]/Border[0 0 0]/A 171 0 R>>endobj
281 173 0 obj<</S/URI/URI(http://www.privoxy.org/user-manual/installation.html)>>endobj
282 174 0 obj<</Subtype/Link/Rect[150.6 559.0 277.4 572.0]/Border[0 0 0]/A 173 0 R>>endobj
283 175 0 obj<</S/URI/URI(http://sourceforge.net/tracker/?atid=361118&group_id=11118)>>endobj
284 176 0 obj<</Subtype/Link/Rect[43.9 474.2 320.3 487.2]/Border[0 0 0]/A 175 0 R>>endobj
285 177 0 obj<</S/Launch/F(actions','Feedback','screenx='+w+',width='+w+',height='+h+',scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no'\).focus\(\)\);)>>endobj
286 178 0 obj<</Subtype/Link/Rect[390.8 402.6 535.3 415.6]/Border[0 0 0]/A 177 0 R>>endobj
287 179 0 obj<</S/URI/URI(http://lists.sourceforge.net/lists/listinfo/ijbswa-announce)>>endobj
288 180 0 obj<</Subtype/Link/Rect[113.6 349.8 193.4 362.8]/Border[0 0 0]/A 179 0 R>>endobj
289 181 0 obj<</S/URI/URI(http://sourceforge.net/project/showfiles.php?group_id=11118)>>endobj
290 182 0 obj<</Subtype/Link/Rect[328.5 349.8 384.1 362.8]/Border[0 0 0]/A 181 0 R>>endobj
291 183 0 obj<</S/URI/URI(http://sf.net/projects/ijbswa/)>>endobj
292 184 0 obj<</Subtype/Link/Rect[413.4 349.8 470.2 362.8]/Border[0 0 0]/A 183 0 R>>endobj
293 185 0 obj<</S/URI/URI(http://sourceforge.net/mail/?group_id=11118)>>endobj
294 186 0 obj<</Subtype/Link/Rect[149.7 265.0 350.8 278.0]/Border[0 0 0]/A 185 0 R>>endobj
295 187 0 obj<</S/URI/URI(mailto:developers@privoxy.org)>>endobj
296 188 0 obj<</Subtype/Link/Rect[257.5 203.0 402.7 216.0]/Border[0 0 0]/A 187 0 R>>endobj
297 189 0 obj[166 0 R
298 168 0 R
299 170 0 R
300 172 0 R
301 174 0 R
302 176 0 R
303 178 0 R
304 180 0 R
305 182 0 R
306 184 0 R
307 186 0 R
308 188 0 R]endobj
309 190 0 obj<</S/URI/URI(http://www.gnu.org/copyleft/gpl.html)>>endobj
310 191 0 obj<</Subtype/Link/Rect[210.4 655.0 343.0 668.0]/Border[0 0 0]/A 190 0 R>>endobj
311 192 0 obj<</S/URI/URI(http://www.junkbusters.com/ijb.html)>>endobj
312 193 0 obj<</Subtype/Link/Rect[171.6 530.6 259.0 543.6]/Border[0 0 0]/A 192 0 R>>endobj
313 194 0 obj<</S/URI/URI(http://www.junkbusters.com/)>>endobj
314 195 0 obj<</Subtype/Link/Rect[384.6 530.6 495.2 543.6]/Border[0 0 0]/A 194 0 R>>endobj
315 196 0 obj<</S/URI/URI(http://www.junkbusters.com/ijbdist.html#release)>>endobj
316 197 0 obj<</Subtype/Link/Rect[242.2 464.6 275.5 477.6]/Border[0 0 0]/A 196 0 R>>endobj
317 198 0 obj<</S/URI/URI(http://www.junkbusters.com)>>endobj
318 199 0 obj<</Subtype/Link/Rect[342.1 464.6 452.7 477.6]/Border[0 0 0]/A 198 0 R>>endobj
319 200 0 obj<</S/URI/URI(http://www.gnu.org/licenses/gpl.html)>>endobj
320 201 0 obj<</Subtype/Link/Rect[142.6 451.4 166.1 464.4]/Border[0 0 0]/A 200 0 R>>endobj
321 202 0 obj<</S/URI/URI(http://www.waldherr.org/junkbuster/)>>endobj
322 203 0 obj<</Subtype/Link/Rect[223.3 425.0 372.1 438.0]/Border[0 0 0]/A 202 0 R>>endobj
323 204 0 obj<</S/URI/URI(http://www.privoxy.org/user-manual/copyright.html#AUTHORS)>>endobj
324 205 0 obj<</Subtype/Link/Rect[87.3 359.0 137.7 372.0]/Border[0 0 0]/A 204 0 R>>endobj
325 206 0 obj<</S/URI/URI(http://www.privoxy.org/user-manual/introduction.html#FEATURES)>>endobj
326 207 0 obj<</Subtype/Link/Rect[161.9 345.8 220.5 358.8]/Border[0 0 0]/A 206 0 R>>endobj
327 208 0 obj<</S/URI/URI(http://www.privoxy.org/)>>endobj
328 209 0 obj<</Subtype/Link/Rect[37.6 229.4 145.1 242.4]/Border[0 0 0]/A 208 0 R>>endobj
329 210 0 obj<</S/URI/URI(http://www.privoxy.org/faq/)>>endobj
330 211 0 obj<</Subtype/Link/Rect[37.6 199.8 162.3 212.8]/Border[0 0 0]/A 210 0 R>>endobj
331 212 0 obj<</S/URI/URI(http://sourceforge.net/projects/ijbswa/)>>endobj
332 213 0 obj<</Subtype/Link/Rect[37.6 170.3 204.7 183.3]/Border[0 0 0]/A 212 0 R>>endobj
333 214 0 obj<</S/URI/URI(http://sourceforge.net)>>endobj
334 215 0 obj<</Subtype/Link/Rect[348.6 170.3 407.6 183.3]/Border[0 0 0]/A 214 0 R>>endobj
335 216 0 obj<</S/URI/URI(http://config.privoxy.org/)>>endobj
336 217 0 obj<</Subtype/Link/Rect[37.6 140.7 149.4 153.7]/Border[0 0 0]/A 216 0 R>>endobj
337 218 0 obj<</S/URI/URI(http://p.p/)>>endobj
338 219 0 obj<</Subtype/Link/Rect[514.3 140.7 560.2 153.7]/Border[0 0 0]/A 218 0 R>>endobj
339 220 0 obj<</S/Launch/F(actions','Feedback','screenx='+w+',width='+w+',height='+h+',scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no'\).focus\(\)\);)>>endobj
340 221 0 obj<</Subtype/Link/Rect[37.6 111.1 179.4 124.1]/Border[0 0 0]/A 220 0 R>>endobj
341 222 0 obj<</S/URI/URI(http://www.junkbusters.com/ht/en/cookies.html)>>endobj
342 223 0 obj<</Subtype/Link/Rect[37.6 81.5 247.5 94.5]/Border[0 0 0]/A 222 0 R>>endobj
343 224 0 obj[191 0 R
344 193 0 R
345 195 0 R
346 197 0 R
347 199 0 R
348 201 0 R
349 203 0 R
350 205 0 R
351 207 0 R
352 209 0 R
353 211 0 R
354 213 0 R
355 215 0 R
356 217 0 R
357 219 0 R
358 221 0 R
359 223 0 R]endobj
360 225 0 obj<</S/URI/URI(http://www.junkbusters.com/ijb.html)>>endobj
361 226 0 obj<</Subtype/Link/Rect[37.6 719.4 200.5 732.4]/Border[0 0 0]/A 225 0 R>>endobj
362 227 0 obj<</S/URI/URI(http://www.waldherr.org/junkbuster/)>>endobj
363 228 0 obj<</Subtype/Link/Rect[37.6 689.8 199.5 702.8]/Border[0 0 0]/A 227 0 R>>endobj
364 229 0 obj<</S/URI/URI(http://privacy.net/analyze/)>>endobj
365 230 0 obj<</Subtype/Link/Rect[37.6 660.3 152.8 673.3]/Border[0 0 0]/A 229 0 R>>endobj
366 231 0 obj<</S/URI/URI(http://www.squid-cache.org/)>>endobj
367 232 0 obj<</Subtype/Link/Rect[37.6 630.7 166.0 643.7]/Border[0 0 0]/A 231 0 R>>endobj
368 233 0 obj<</S/URI/URI(http://www.privoxy.org/developer-manual/)>>endobj
369 234 0 obj<</Subtype/Link/Rect[37.6 601.1 230.2 614.1]/Border[0 0 0]/A 233 0 R>>endobj
370 235 0 obj[226 0 R
371 228 0 R
372 230 0 R
373 232 0 R
374 234 0 R]endobj
375 236 0 obj<</Dests 237 0 R>>endobj
376 237 0 obj<</Kids[238 0 R]>>endobj
377 238 0 obj<</Limits[(aen1138)(webserver-update)]/Names[(aen1138)239 0 R(aen1154)240 0 R(aen2)241 0 R(aen217)242 0 R(aen9)243 0 R(afterrelease)244 0 R(beforerelease)245 0 R(coding)246 0 R(contact)247 0 R(contact-ads)248 0 R(contact-bugs)249 0 R(contact-feature)250 0 R(contact-other)251 0 R(contact-support)252 0 R(copyright)253 0 R(cvs)254 0 R(cvsaccess)255 0 R(cvscommit)256 0 R(cvswhenask)257 0 R(docstyle)258 0 R(documentation)259 0 R(introduction)260 0 R(newrelease)261 0 R(newrelease-aix)262 0 R(newrelease-amiga)263 0 R(newrelease-debian)264 0 R(newrelease-freebsd)265 0 R(newrelease-hpux)266 0 R(newrelease-macosx)267 0 R(newrelease-os2)268 0 R(newrelease-rpm)269 0 R(newrelease-solaris)270 0 R(newrelease-tarball)271 0 R(newrelease-windows)272 0 R(pack-guidelines)273 0 R(privoxy-developer-manual.html)274 0 R(quickstart)275 0 R(releasing)276 0 R(s1)277 0 R(s10)278 0 R(s11)279 0 R(s12)280 0 R(s13)281 0 R(s14)282 0 R(s15)283 0 R(s16)284 0 R(s17)285 0 R(s18)286 0 R(s19)287 0 R(s2)288 0 R(s20)289 0 R(s21)290 0 R(s22)291 0 R(s23)292 0 R(s24)293 0 R(s25)294 0 R(s26)295 0 R(s27)296 0 R(s28)297 0 R(s29)298 0 R(s3)299 0 R(s30)300 0 R(s31)301 0 R(s32)302 0 R(s33)303 0 R(s34)304 0 R(s35)305 0 R(s36)306 0 R(s37)307 0 R(s38)308 0 R(s39)309 0 R(s4)310 0 R(s40)311 0 R(s41)312 0 R(s42)313 0 R(s43)314 0 R(s44)315 0 R(s45)316 0 R(s46)317 0 R(s5)318 0 R(s6)319 0 R(s7)320 0 R(s8)321 0 R(s9)322 0 R(seealso)323 0 R(sgml)324 0 R(testing)325 0 R(testing-plan)326 0 R(testing-report)327 0 R(therelease)328 0 R(versionnumbers)329 0 R(webserver-update)330 0 R]>>endobj
378 239 0 obj<</D[396 0 R/XYZ 0 147 0]>>endobj
379 240 0 obj<</D[398 0 R/XYZ 0 573 0]>>endobj
380 241 0 obj<</D[-691616724 0 R/XYZ 0 0 0]>>endobj
381 242 0 obj<</D[340 0 R/XYZ 0 177 0]>>endobj
382 243 0 obj<</D[-691616724 0 R/XYZ 0 0 0]>>endobj
383 244 0 obj<</D[394 0 R/XYZ 0 734 0]>>endobj
384 245 0 obj<</D[380 0 R/XYZ 0 411 0]>>endobj
385 246 0 obj<</D[342 0 R/XYZ 0 425 0]>>endobj
386 247 0 obj<</D[394 0 R/XYZ 0 282 0]>>endobj
387 248 0 obj<</D[396 0 R/XYZ 0 458 0]>>endobj
388 249 0 obj<</D[396 0 R/XYZ 0 734 0]>>endobj
389 250 0 obj<</D[396 0 R/XYZ 0 530 0]>>endobj
390 251 0 obj<</D[396 0 R/XYZ 0 334 0]>>endobj
391 252 0 obj<</D[394 0 R/XYZ 0 186 0]>>endobj
392 253 0 obj<</D[396 0 R/XYZ 0 249 0]>>endobj
393 254 0 obj<</D[334 0 R/XYZ 0 468 0]>>endobj
394 255 0 obj<</D[334 0 R/XYZ 0 393 0]>>endobj
395 256 0 obj<</D[334 0 R/XYZ 0 308 0]>>endobj
396 257 0 obj<</D[336 0 R/XYZ 0 734 0]>>endobj
397 258 0 obj<</D[338 0 R/XYZ 0 193 0]>>endobj
398 259 0 obj<</D[336 0 R/XYZ 0 556 0]>>endobj
399 260 0 obj<</D[334 0 R/XYZ 0 681 0]>>endobj
400 261 0 obj<</D[378 0 R/XYZ 0 262 0]>>endobj
401 262 0 obj<</D[392 0 R/XYZ 0 667 0]>>endobj
402 263 0 obj<</D[390 0 R/XYZ 0 134 0]>>endobj
403 264 0 obj<</D[388 0 R/XYZ 0 414 0]>>endobj
404 265 0 obj<</D[390 0 R/XYZ 0 532 0]>>endobj
405 266 0 obj<</D[390 0 R/XYZ 0 266 0]>>endobj
406 267 0 obj<</D[388 0 R/XYZ 0 198 0]>>endobj
407 268 0 obj<</D[386 0 R/XYZ 0 665 0]>>endobj
408 269 0 obj<</D[384 0 R/XYZ 0 373 0]>>endobj
409 270 0 obj<</D[386 0 R/XYZ 0 277 0]>>endobj
410 271 0 obj<</D[384 0 R/XYZ 0 626 0]>>endobj
411 272 0 obj<</D[388 0 R/XYZ 0 679 0]>>endobj
412 273 0 obj<</D[382 0 R/XYZ 0 484 0]>>endobj
413 274 0 obj<</D[-691616724 0 R/XYZ 0 0 0]>>endobj
414 275 0 obj<</D[334 0 R/XYZ 0 566 0]>>endobj
415 276 0 obj<</D[392 0 R/XYZ 0 401 0]>>endobj
416 277 0 obj<</D[342 0 R/XYZ 0 392 0]>>endobj
417 278 0 obj<</D[348 0 R/XYZ 0 198 0]>>endobj
418 279 0 obj<</D[350 0 R/XYZ 0 651 0]>>endobj
419 280 0 obj<</D[350 0 R/XYZ 0 425 0]>>endobj
420 281 0 obj<</D[350 0 R/XYZ 0 191 0]>>endobj
421 282 0 obj<</D[352 0 R/XYZ 0 557 0]>>endobj
422 283 0 obj<</D[352 0 R/XYZ 0 273 0]>>endobj
423 284 0 obj<</D[352 0 R/XYZ 0 243 0]>>endobj
424 285 0 obj<</D[354 0 R/XYZ 0 442 0]>>endobj
425 286 0 obj<</D[356 0 R/XYZ 0 734 0]>>endobj
426 287 0 obj<</D[356 0 R/XYZ 0 559 0]>>endobj
427 288 0 obj<</D[342 0 R/XYZ 0 267 0]>>endobj
428 289 0 obj<</D[356 0 R/XYZ 0 349 0]>>endobj
429 290 0 obj<</D[356 0 R/XYZ 0 126 0]>>endobj
430 291 0 obj<</D[358 0 R/XYZ 0 464 0]>>endobj
431 292 0 obj<</D[360 0 R/XYZ 0 734 0]>>endobj
432 293 0 obj<</D[360 0 R/XYZ 0 704 0]>>endobj
433 294 0 obj<</D[360 0 R/XYZ 0 468 0]>>endobj
434 295 0 obj<</D[360 0 R/XYZ 0 438 0]>>endobj
435 296 0 obj<</D[360 0 R/XYZ 0 282 0]>>endobj
436 297 0 obj<</D[360 0 R/XYZ 0 187 0]>>endobj
437 298 0 obj<</D[362 0 R/XYZ 0 441 0]>>endobj
438 299 0 obj<</D[342 0 R/XYZ 0 237 0]>>endobj
439 300 0 obj<</D[362 0 R/XYZ 0 294 0]>>endobj
440 301 0 obj<</D[362 0 R/XYZ 0 160 0]>>endobj
441 302 0 obj<</D[364 0 R/XYZ 0 563 0]>>endobj
442 303 0 obj<</D[364 0 R/XYZ 0 356 0]>>endobj
443 304 0 obj<</D[366 0 R/XYZ 0 734 0]>>endobj
444 305 0 obj<</D[366 0 R/XYZ 0 490 0]>>endobj
445 306 0 obj<</D[366 0 R/XYZ 0 460 0]>>endobj
446 307 0 obj<</D[366 0 R/XYZ 0 365 0]>>endobj
447 308 0 obj<</D[368 0 R/XYZ 0 626 0]>>endobj
448 309 0 obj<</D[368 0 R/XYZ 0 426 0]>>endobj
449 310 0 obj<</D[344 0 R/XYZ 0 553 0]>>endobj
450 311 0 obj<</D[368 0 R/XYZ 0 292 0]>>endobj
451 312 0 obj<</D[368 0 R/XYZ 0 184 0]>>endobj
452 313 0 obj<</D[370 0 R/XYZ 0 535 0]>>endobj
453 314 0 obj<</D[370 0 R/XYZ 0 363 0]>>endobj
454 315 0 obj<</D[372 0 R/XYZ 0 734 0]>>endobj
455 316 0 obj<</D[372 0 R/XYZ 0 599 0]>>endobj
456 317 0 obj<</D[372 0 R/XYZ 0 320 0]>>endobj
457 318 0 obj<</D[346 0 R/XYZ 0 734 0]>>endobj
458 319 0 obj<</D[346 0 R/XYZ 0 190 0]>>endobj
459 320 0 obj<</D[348 0 R/XYZ 0 718 0]>>endobj
460 321 0 obj<</D[348 0 R/XYZ 0 571 0]>>endobj
461 322 0 obj<</D[348 0 R/XYZ 0 228 0]>>endobj
462 323 0 obj<</D[398 0 R/XYZ 0 303 0]>>endobj
463 324 0 obj<</D[338 0 R/XYZ 0 705 0]>>endobj
464 325 0 obj<</D[378 0 R/XYZ 0 705 0]>>endobj
465 326 0 obj<</D[378 0 R/XYZ 0 643 0]>>endobj
466 327 0 obj<</D[378 0 R/XYZ 0 400 0]>>endobj
467 328 0 obj<</D[382 0 R/XYZ 0 734 0]>>endobj
468 329 0 obj<</D[380 0 R/XYZ 0 734 0]>>endobj
469 330 0 obj<</D[394 0 R/XYZ 0 649 0]>>endobj
470 331 0 obj<</Type/Pages/Count 36/Kids[332 0 R
471 334 0 R
472 336 0 R
473 338 0 R
474 340 0 R
475 342 0 R
476 344 0 R
477 346 0 R
478 348 0 R
479 350 0 R
480 352 0 R
481 354 0 R
482 356 0 R
483 358 0 R
484 360 0 R
485 362 0 R
486 364 0 R
487 366 0 R
488 368 0 R
489 370 0 R
490 372 0 R
491 374 0 R
492 376 0 R
493 378 0 R
494 380 0 R
495 382 0 R
496 384 0 R
497 386 0 R
498 388 0 R
499 390 0 R
500 392 0 R
501 394 0 R
502 396 0 R
503 398 0 R
504 400 0 R
505 402 0 R
506 ]>>endobj
507 332 0 obj<</Type/Page/Parent 331 0 R/Contents 333 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 5 0 R/F6 7 0 R/F7 8 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>/Annots 54 0 R>>endobj
508 333 0 obj<</Length 8412      >>stream
509 q
510 0.93 0.93 0.93 rg 0 0 612 792 re f
511 1 0 0 1 36 36 cm
512 0.00 0.00 1.00 RG
513 0.0 650.3 m 32.4 650.3 l S
514 88.5 650.3 m 115.9 650.3 l S
515 115.9 650.3 m 154.3 650.3 l S
516 227.3 543.2 m 422.6 543.2 l S
517 473.0 543.2 m 489.2 543.2 l S
518 489.2 543.2 m 526.2 543.2 l S
519 0.0 530.0 m 31.2 530.0 l S
520 0.00 0.00 0.00 rg 0.0 520.2 540.0 2.0 re f
521 8.2 475.2 m 66.0 475.2 l S
522 52.5 462.0 m 101.7 462.0 l S
523 101.7 462.0 m 113.0 462.0 l S
524 113.0 462.0 m 150.0 462.0 l S
525 150.0 462.0 m 210.7 462.0 l S
526 8.2 448.8 m 27.5 448.8 l S
527 27.5 448.8 m 49.8 448.8 l S
528 49.8 448.8 m 100.2 448.8 l S
529 52.5 435.6 m 85.2 435.6 l S
530 85.2 435.6 m 96.5 435.6 l S
531 96.5 435.6 m 118.8 435.6 l S
532 52.5 422.4 m 74.8 422.4 l S
533 74.8 422.4 m 112.4 422.4 l S
534 112.4 422.4 m 158.5 422.4 l S
535 52.5 409.2 m 103.5 409.2 l S
536 103.5 409.2 m 144.8 409.2 l S
537 144.8 409.2 m 168.9 409.2 l S
538 8.2 396.0 m 78.8 396.0 l S
539 78.8 396.0 m 129.2 396.0 l S
540 52.5 382.8 m 101.7 382.8 l S
541 101.7 382.8 m 113.0 382.8 l S
542 113.0 382.8 m 155.5 382.8 l S
543 155.5 382.8 m 174.7 382.8 l S
544 174.7 382.8 m 206.2 382.8 l S
545 52.5 369.6 m 89.5 369.6 l S
546 89.5 369.6 m 160.0 369.6 l S
547 160.0 369.6 m 184.2 369.6 l S
548 52.5 356.4 m 89.5 356.4 l S
549 89.5 356.4 m 125.8 356.4 l S
550 125.8 356.4 m 162.2 356.4 l S
551 8.2 343.2 m 43.4 343.2 l S
552 43.4 343.2 m 93.8 343.2 l S
553 52.5 330.0 m 110.2 330.0 l S
554 52.5 316.8 m 81.5 316.8 l S
555 81.5 316.8 m 130.7 316.8 l S
556 96.8 303.6 m 144.4 303.6 l S
557 144.4 303.6 m 192.1 303.6 l S
558 192.1 303.6 m 237.0 303.6 l S
559 96.8 290.4 m 116.6 290.4 l S
560 116.6 290.4 m 147.5 290.4 l S
561 147.5 290.4 m 163.0 290.4 l S
562 163.0 290.4 m 209.8 290.4 l S
563 96.8 277.2 m 122.1 277.2 l S
564 122.1 277.2 m 171.3 277.2 l S
565 171.3 277.2 m 185.0 277.2 l S
566 185.0 277.2 m 208.6 277.2 l S
567 208.6 277.2 m 229.7 277.2 l S
568 229.7 277.2 m 248.9 277.2 l S
569 96.8 264.0 m 141.7 264.0 l S
570 141.7 264.0 m 165.2 264.0 l S
571 165.2 264.0 m 198.5 264.0 l S
572 198.5 264.0 m 219.0 264.0 l S
573 96.8 250.8 m 141.7 250.8 l S
574 141.7 250.8 m 157.2 250.8 l S
575 157.2 250.8 m 204.0 250.8 l S
576 204.0 250.8 m 258.1 250.8 l S
577 96.8 237.6 m 141.7 237.6 l S
578 141.7 237.6 m 153.0 237.6 l S
579 153.0 237.6 m 169.2 237.6 l S
580 169.2 237.6 m 187.8 237.6 l S
581 187.8 237.6 m 199.1 237.6 l S
582 199.1 237.6 m 231.2 237.6 l S
583 231.2 237.6 m 240.0 237.6 l S
584 240.0 237.6 m 256.2 237.6 l S
585 256.2 237.6 m 291.4 237.6 l S
586 291.4 237.6 m 301.5 237.6 l S
587 301.5 237.6 m 326.8 237.6 l S
588 326.8 237.6 m 349.1 237.6 l S
589 349.1 237.6 m 367.8 237.6 l S
590 367.8 237.6 m 399.2 237.6 l S
591 399.2 237.6 m 429.5 237.6 l S
592 52.5 224.4 m 90.1 224.4 l S
593 90.1 224.4 m 147.8 224.4 l S
594 96.8 211.2 m 138.0 211.2 l S
595 138.0 211.2 m 170.7 211.2 l S
596 96.8 198.0 m 139.2 198.0 l S
597 139.2 198.0 m 171.9 198.0 l S
598 96.8 184.8 m 132.5 184.8 l S
599 132.5 184.8 m 149.3 184.8 l S
600 149.3 184.8 m 198.5 184.8 l S
601 96.8 171.6 m 164.0 171.6 l S
602 164.0 171.6 m 183.2 171.6 l S
603 183.2 171.6 m 222.6 171.6 l S
604 96.8 158.4 m 143.5 158.4 l S
605 52.5 145.2 m 81.5 145.2 l S
606 81.5 145.2 m 110.5 145.2 l S
607 96.8 132.0 m 114.8 132.0 l S
608 114.8 132.0 m 146.9 132.0 l S
609 146.9 132.0 m 160.6 132.0 l S
610 160.6 132.0 m 168.9 132.0 l S
611 168.9 132.0 m 188.1 132.0 l S
612 188.1 132.0 m 201.2 132.0 l S
613 201.2 132.0 m 254.4 132.0 l S
614 96.8 118.8 m 118.5 118.8 l S
615 118.5 118.8 m 153.0 118.8 l S
616 153.0 118.8 m 202.2 118.8 l S
617 202.2 118.8 m 234.3 118.8 l S
618 234.3 118.8 m 257.8 118.8 l S
619 257.8 118.8 m 266.0 118.8 l S
620 266.0 118.8 m 292.6 118.8 l S
621 96.8 105.6 m 112.9 105.6 l S
622 112.9 105.6 m 129.8 105.6 l S
623 129.8 105.6 m 209.6 105.6 l S
624 209.6 105.6 m 247.8 105.6 l S
625 247.8 105.6 m 301.9 105.6 l S
626 96.8 92.4 m 116.6 92.4 l S
627 116.6 92.4 m 143.2 92.4 l S
628 143.2 92.4 m 171.0 92.4 l S
629 171.0 92.4 m 198.8 92.4 l S
630 198.8 92.4 m 237.0 92.4 l S
631 237.0 92.4 m 245.8 92.4 l S
632 245.8 92.4 m 255.9 92.4 l S
633 255.9 92.4 m 275.8 92.4 l S
634 96.8 79.2 m 123.9 79.2 l S
635 123.9 79.2 m 141.3 79.2 l S
636 141.3 79.2 m 167.9 79.2 l S
637 167.9 79.2 m 195.7 79.2 l S
638 195.7 79.2 m 230.2 79.2 l S
639 230.2 79.2 m 272.7 79.2 l S
640 272.7 79.2 m 318.2 79.2 l S
641 96.8 66.0 m 123.9 66.0 l S
642 123.9 66.0 m 140.1 66.0 l S
643 140.1 66.0 m 158.8 66.0 l S
644 158.8 66.0 m 186.6 66.0 l S
645 186.6 66.0 m 197.9 66.0 l S
646 197.9 66.0 m 206.1 66.0 l S
647 206.1 66.0 m 244.9 66.0 l S
648 244.9 66.0 m 271.5 66.0 l S
649 271.5 66.0 m 288.3 66.0 l S
650 96.8 52.8 m 116.6 52.8 l S
651 116.6 52.8 m 124.9 52.8 l S
652 124.9 52.8 m 170.4 52.8 l S
653 170.4 52.8 m 219.0 52.8 l S
654 52.5 39.6 m 103.5 39.6 l S
655 96.8 26.4 m 138.6 26.4 l S
656 138.6 26.4 m 153.0 26.4 l S
657 153.0 26.4 m 196.7 26.4 l S
658 BT
659 /F9 20 Tf 0 678 Td 0.000 Tc(Privoxy Developer Manual)Tj
660 0.00 0.00 1.00 rg /F4 8 Tf 0 -29.7 Td(Copyright)Tj
661 0.00 0.00 0.00 rg ( \251 2001, 2002 by)Tj
662 0.00 0.00 1.00 rg ( Privoxy Developers)Tj
663 0.00 0.00 0.00 rg /F4 11 Tf 0 -24.9 Td($Id: developer-manual.sgml,v 1.46.2.4 2002/05/29 00:30:59 mal0rd Exp $)Tj
664 0 -39.6 Td(The developer manual provides guidance on coding, testing, packaging, documentation and other issues of importance to)Tj
665 0 -13.2 Td(those involved with Privoxy development. It is mandatory \(and helpful!\) reading for anyone who wants to join the team.)Tj
666 0 -26.4 Td(You can find the latest version of the this manual at)Tj
667 0.00 0.00 1.00 rg ( http://www.privoxy.org/developer-manual/)Tj
668 0.00 0.00 0.00 rg (. Please see)Tj
669 0.00 0.00 1.00 rg ( the Contact)Tj
670 0 -13.2 Td(section)Tj
671 0.00 0.00 0.00 rg ( on how to contact the developers.)Tj
672 /F7 11 Tf 0 -41.6 Td(Table of Contents)Tj
673 /F6 11 Tf 0 -13.2 Td(1.)Tj
674 0.00 0.00 1.00 rg ( Introduction)Tj
675 0.00 0.00 0.00 rg 36 -13.2 Td(1.1.)Tj
676 0.00 0.00 1.00 rg ( Quickstart to Privoxy Development)Tj
677 0.00 0.00 0.00 rg -36 -13.2 Td(2.)Tj
678 0.00 0.00 1.00 rg ( The CVS Repository)Tj
679 0.00 0.00 0.00 rg 36 -13.2 Td(2.1.)Tj
680 0.00 0.00 1.00 rg ( Access to CVS)Tj
681 0.00 0.00 0.00 rg 0 -13.2 Td(2.2.)Tj
682 0.00 0.00 1.00 rg ( CVS Commit Guideline)Tj
683 0.00 0.00 0.00 rg 0 -13.2 Td(2.3.)Tj
684 0.00 0.00 1.00 rg ( Discussing Changes First)Tj
685 0.00 0.00 0.00 rg -36 -13.2 Td(3.)Tj
686 0.00 0.00 1.00 rg ( Documentation Guidelines)Tj
687 0.00 0.00 0.00 rg 36 -13.2 Td(3.1.)Tj
688 0.00 0.00 1.00 rg ( Quickstart to Docbook and SGML)Tj
689 0.00 0.00 0.00 rg 0 -13.2 Td(3.2.)Tj
690 0.00 0.00 1.00 rg ( Privoxy Documentation Style)Tj
691 0.00 0.00 0.00 rg 0 -13.2 Td(3.3.)Tj
692 0.00 0.00 1.00 rg ( Privoxy Custom Entities)Tj
693 0.00 0.00 0.00 rg -36 -13.2 Td(4.)Tj
694 0.00 0.00 1.00 rg ( Coding Guidelines)Tj
695 0.00 0.00 0.00 rg 36 -13.2 Td(4.1.)Tj
696 0.00 0.00 1.00 rg ( Introduction)Tj
697 0.00 0.00 0.00 rg 0 -13.2 Td(4.2.)Tj
698 0.00 0.00 1.00 rg ( Using Comments)Tj
699 0.00 0.00 0.00 rg 36 -13.2 Td(4.2.1.)Tj
700 0.00 0.00 1.00 rg ( Comment, Comment, Comment)Tj
701 0.00 0.00 0.00 rg 0 -13.2 Td(4.2.2.)Tj
702 0.00 0.00 1.00 rg ( Use blocks for comments)Tj
703 0.00 0.00 0.00 rg 0 -13.2 Td(4.2.3.)Tj
704 0.00 0.00 1.00 rg ( Keep Comments on their own line)Tj
705 0.00 0.00 0.00 rg 0 -13.2 Td(4.2.4.)Tj
706 0.00 0.00 1.00 rg ( Comment each logical step)Tj
707 0.00 0.00 0.00 rg 0 -13.2 Td(4.2.5.)Tj
708 0.00 0.00 1.00 rg ( Comment All Functions Thoroughly)Tj
709 0.00 0.00 0.00 rg 0 -13.2 Td(4.2.6.)Tj
710 0.00 0.00 1.00 rg ( Comment at the end of braces if the content is more than one screen length)Tj
711 0.00 0.00 0.00 rg -36 -13.2 Td(4.3.)Tj
712 0.00 0.00 1.00 rg ( Naming Conventions)Tj
713 0.00 0.00 0.00 rg 36 -13.2 Td(4.3.1.)Tj
714 0.00 0.00 1.00 rg ( Variable Names)Tj
715 0.00 0.00 0.00 rg 0 -13.2 Td(4.3.2.)Tj
716 0.00 0.00 1.00 rg ( Function Names)Tj
717 0.00 0.00 0.00 rg 0 -13.2 Td(4.3.3.)Tj
718 0.00 0.00 1.00 rg ( Header file prototypes)Tj
719 0.00 0.00 0.00 rg 0 -13.2 Td(4.3.4.)Tj
720 0.00 0.00 1.00 rg ( Enumerations, and #defines)Tj
721 0.00 0.00 0.00 rg 0 -13.2 Td(4.3.5.)Tj
722 0.00 0.00 1.00 rg ( Constants)Tj
723 0.00 0.00 0.00 rg -36 -13.2 Td(4.4.)Tj
724 0.00 0.00 1.00 rg ( Using Space)Tj
725 0.00 0.00 0.00 rg 36 -13.2 Td(4.4.1.)Tj
726 0.00 0.00 1.00 rg ( Put braces on a line by themselves.)Tj
727 0.00 0.00 0.00 rg 0 -13.2 Td(4.4.2.)Tj
728 0.00 0.00 1.00 rg ( ALL control statements should have a block)Tj
729 0.00 0.00 0.00 rg 0 -13.2 Td(4.4.3.)Tj
730 0.00 0.00 1.00 rg ( Do not belabor/blow-up boolean expressions)Tj
731 0.00 0.00 0.00 rg 0 -13.2 Td(4.4.4.)Tj
732 0.00 0.00 1.00 rg ( Use white space freely because it is free)Tj
733 0.00 0.00 0.00 rg 0 -13.2 Td(4.4.5.)Tj
734 0.00 0.00 1.00 rg ( Don't use white space around structure operators)Tj
735 0.00 0.00 0.00 rg 0 -13.2 Td(4.4.6.)Tj
736 0.00 0.00 1.00 rg ( Make the last brace of a function stand out)Tj
737 0.00 0.00 0.00 rg 0 -13.2 Td(4.4.7.)Tj
738 0.00 0.00 1.00 rg ( Use 3 character indentions)Tj
739 0.00 0.00 0.00 rg -36 -13.2 Td(4.5.)Tj
740 0.00 0.00 1.00 rg ( Initializing)Tj
741 0.00 0.00 0.00 rg 36 -13.2 Td(4.5.1.)Tj
742 0.00 0.00 1.00 rg ( Initialize all variables)Tj
743 0.00 0.00 0.00 rg /F8 11 Tf -72 692.6 Td(Privoxy Developer Manual)Tj
744 431.76 0 Td(08/06/02 10:11:29 PM)Tj
745 -172.463 -720 Td(1/36)Tj
746 ET
747 Q
748 endstream
749 endobj
750 334 0 obj<</Type/Page/Parent 331 0 R/Contents 335 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 7 0 R/F8 9 0 R>>/XObject<<>>>>/Annots 106 0 R>>endobj
751 335 0 obj<</Length 11591     >>stream
752 q
753 0.93 0.93 0.93 rg 0 0 612 792 re f
754 1 0 0 1 36 36 cm
755 0.00 0.00 1.00 RG
756 52.5 686.0 m 99.3 686.0 l S
757 96.8 672.8 m 125.2 672.8 l S
758 125.2 672.8 m 168.3 672.8 l S
759 168.2 672.8 m 188.1 672.8 l S
760 188.1 672.8 m 218.4 672.8 l S
761 218.4 672.8 m 226.6 672.8 l S
762 226.6 672.8 m 264.8 672.8 l S
763 264.8 672.8 m 277.3 672.8 l S
764 277.3 672.8 m 285.6 672.8 l S
765 285.6 672.8 m 328.4 672.8 l S
766 96.8 659.6 m 131.3 659.6 l S
767 131.3 659.6 m 164.6 659.6 l S
768 164.6 659.6 m 172.8 659.6 l S
769 172.8 659.6 m 203.1 659.6 l S
770 203.1 659.6 m 224.2 659.6 l S
771 224.2 659.6 m 239.7 659.6 l S
772 239.7 659.6 m 248.0 659.6 l S
773 248.0 659.6 m 289.5 659.6 l S
774 96.8 646.4 m 140.4 646.4 l S
775 140.4 646.4 m 179.3 646.4 l S
776 179.2 646.4 m 202.8 646.4 l S
777 202.8 646.4 m 228.7 646.4 l S
778 228.8 646.4 m 269.4 646.4 l S
779 269.4 646.4 m 282.5 646.4 l S
780 282.5 646.4 m 309.1 646.4 l S
781 309.1 646.4 m 352.8 646.4 l S
782 96.8 633.2 m 120.3 633.2 l S
783 120.3 633.2 m 139.5 633.2 l S
784 139.5 633.2 m 172.2 633.2 l S
785 172.2 633.2 m 185.4 633.2 l S
786 185.4 633.2 m 213.8 633.2 l S
787 213.8 633.2 m 260.5 633.2 l S
788 96.8 620.0 m 120.3 620.0 l S
789 120.3 620.0 m 139.5 620.0 l S
790 139.5 620.0 m 172.2 620.0 l S
791 172.2 620.0 m 185.4 620.0 l S
792 185.4 620.0 m 213.8 620.0 l S
793 96.8 606.8 m 129.4 606.8 l S
794 129.4 606.8 m 140.8 606.8 l S
795 140.8 606.8 m 175.9 606.8 l S
796 175.9 606.8 m 197.0 606.8 l S
797 96.8 593.6 m 134.3 593.6 l S
798 134.3 593.6 m 173.1 593.6 l S
799 173.1 593.6 m 216.2 593.6 l S
800 216.2 593.6 m 264.2 593.6 l S
801 96.8 580.4 m 116.6 580.4 l S
802 116.6 580.4 m 150.5 580.4 l S
803 150.5 580.4 m 173.5 580.4 l S
804 173.5 580.4 m 199.5 580.4 l S
805 199.5 580.4 m 254.8 580.4 l S
806 96.8 567.2 m 128.2 567.2 l S
807 128.2 567.2 m 171.0 567.2 l S
808 171.0 567.2 m 190.8 567.2 l S
809 190.8 567.2 m 232.7 567.2 l S
810 232.7 567.2 m 261.7 567.2 l S
811 261.7 567.2 m 317.7 567.2 l S
812 317.7 567.2 m 352.8 567.2 l S
813 352.8 567.2 m 364.1 567.2 l S
814 364.1 567.2 m 404.1 567.2 l S
815 52.5 554.0 m 91.3 554.0 l S
816 91.3 554.0 m 126.4 554.0 l S
817 126.4 554.0 m 170.7 554.0 l S
818 96.8 540.8 m 120.9 540.8 l S
819 120.9 540.8 m 134.6 540.8 l S
820 134.6 540.8 m 178.3 540.8 l S
821 96.8 527.6 m 134.3 527.6 l S
822 134.3 527.6 m 142.6 527.6 l S
823 142.6 527.6 m 175.9 527.6 l S
824 175.9 527.6 m 198.2 527.6 l S
825 198.2 527.6 m 213.8 527.6 l S
826 213.8 527.6 m 228.1 527.6 l S
827 228.1 527.6 m 259.0 527.6 l S
828 259.0 527.6 m 308.2 527.6 l S
829 96.8 514.4 m 114.8 514.4 l S
830 114.8 514.4 m 126.1 514.4 l S
831 126.1 514.4 m 153.3 514.4 l S
832 153.3 514.4 m 184.8 514.4 l S
833 184.8 514.4 m 222.3 514.4 l S
834 222.3 514.4 m 248.9 514.4 l S
835 248.9 514.4 m 260.2 514.4 l S
836 260.2 514.4 m 268.5 514.4 l S
837 268.5 514.4 m 299.3 514.4 l S
838 299.3 514.4 m 347.0 514.4 l S
839 96.8 501.2 m 116.6 501.2 l S
840 116.6 501.2 m 143.6 501.2 l S
841 143.6 501.2 m 156.2 501.2 l S
842 156.2 501.2 m 186.2 501.2 l S
843 186.2 501.2 m 221.4 501.2 l S
844 221.4 501.2 m 232.7 501.2 l S
845 232.7 501.2 m 251.7 501.2 l S
846 96.8 488.0 m 123.9 488.0 l S
847 123.9 488.0 m 142.5 488.0 l S
848 142.5 488.0 m 170.3 488.0 l S
849 170.3 488.0 m 189.5 488.0 l S
850 189.5 488.0 m 215.5 488.0 l S
851 215.5 488.0 m 240.9 488.0 l S
852 96.8 474.8 m 134.9 474.8 l S
853 134.9 474.8 m 158.4 474.8 l S
854 158.4 474.8 m 197.9 474.8 l S
855 197.9 474.8 m 217.1 474.8 l S
856 217.1 474.8 m 244.9 474.8 l S
857 244.9 474.8 m 258.7 474.8 l S
858 258.7 474.8 m 271.8 474.8 l S
859 271.8 474.8 m 292.9 474.8 l S
860 292.9 474.8 m 314.9 474.8 l S
861 96.8 461.6 m 116.6 461.6 l S
862 116.6 461.6 m 178.6 461.6 l S
863 178.6 461.6 m 222.9 461.6 l S
864 96.8 448.4 m 116.0 448.4 l S
865 116.0 448.4 m 175.6 448.4 l S
866 175.6 448.4 m 198.5 448.4 l S
867 198.5 448.4 m 222.6 448.4 l S
868 222.6 448.4 m 260.0 448.4 l S
869 260.0 448.4 m 270.1 448.4 l S
870 270.1 448.4 m 326.0 448.4 l S
871 326.0 448.4 m 341.6 448.4 l S
872 341.6 448.4 m 384.7 448.4 l S
873 384.7 448.4 m 409.3 448.4 l S
874 96.8 435.2 m 117.2 435.2 l S
875 117.2 435.2 m 153.0 435.2 l S
876 153.0 435.2 m 164.3 435.2 l S
877 164.3 435.2 m 180.5 435.2 l S
878 180.5 435.2 m 222.2 435.2 l S
879 222.2 435.2 m 264.7 435.2 l S
880 264.7 435.2 m 284.0 435.2 l S
881 284.0 435.2 m 295.3 435.2 l S
882 295.3 435.2 m 322.5 435.2 l S
883 102.2 422.0 m 158.8 422.0 l S
884 158.8 422.0 m 179.3 422.0 l S
885 179.3 422.0 m 202.8 422.0 l S
886 202.8 422.0 m 234.9 422.0 l S
887 234.9 422.0 m 273.7 422.0 l S
888 273.7 422.0 m 285.0 422.0 l S
889 285.0 422.0 m 322.0 422.0 l S
890 322.0 422.0 m 348.3 422.0 l S
891 348.3 422.0 m 365.7 422.0 l S
892 365.7 422.0 m 401.4 422.0 l S
893 52.5 408.8 m 106.0 408.8 l S
894 106.0 408.8 m 149.7 408.8 l S
895 149.7 408.8 m 165.2 408.8 l S
896 165.2 408.8 m 186.3 408.8 l S
897 186.3 408.8 m 205.6 408.8 l S
898 205.6 408.8 m 244.4 408.8 l S
899 244.4 408.8 m 286.8 408.8 l S
900 286.8 408.8 m 321.4 408.8 l S
901 8.2 395.6 m 43.4 395.6 l S
902 43.4 395.6 m 93.8 395.6 l S
903 52.5 382.4 m 93.1 382.4 l S
904 93.1 382.4 m 108.7 382.4 l S
905 108.7 382.4 m 147.5 382.4 l S
906 52.5 369.2 m 73.6 369.2 l S
907 73.6 369.2 m 108.1 369.2 l S
908 8.2 356.0 m 54.4 356.0 l S
909 54.4 356.0 m 62.6 356.0 l S
910 62.6 356.0 m 84.9 356.0 l S
911 84.9 356.0 m 121.9 356.0 l S
912 52.5 342.8 m 89.5 342.8 l S
913 89.5 342.8 m 130.1 342.8 l S
914 52.5 329.6 m 84.6 329.6 l S
915 84.6 329.6 m 100.8 329.6 l S
916 100.8 329.6 m 141.4 329.6 l S
917 141.4 329.6 m 174.1 329.6 l S
918 52.5 316.4 m 93.1 316.4 l S
919 93.1 316.4 m 112.4 316.4 l S
920 112.4 316.4 m 158.5 316.4 l S
921 158.5 316.4 m 174.7 316.4 l S
922 174.7 316.4 m 219.6 316.4 l S
923 96.8 303.2 m 120.3 303.2 l S
924 120.3 303.2 m 134.0 303.2 l S
925 134.0 303.2 m 171.0 303.2 l S
926 171.0 303.2 m 220.8 303.2 l S
927 96.8 290.0 m 130.0 290.0 l S
928 130.0 290.0 m 165.8 290.0 l S
929 96.8 276.8 m 125.5 276.8 l S
930 125.5 276.8 m 172.8 276.8 l S
931 172.8 276.8 m 185.4 276.8 l S
932 185.4 276.8 m 205.2 276.8 l S
933 205.2 276.8 m 224.5 276.8 l S
934 224.5 276.8 m 249.8 276.8 l S
935 96.8 263.6 m 121.5 263.6 l S
936 96.8 250.4 m 130.7 250.4 l S
937 96.8 237.2 m 139.8 237.2 l S
938 96.8 224.0 m 131.9 224.0 l S
939 96.8 210.8 m 119.0 210.8 l S
940 119.0 210.8 m 142.0 210.8 l S
941 96.8 197.6 m 140.4 197.6 l S
942 102.2 184.4 m 141.8 184.4 l S
943 141.8 184.4 m 155.5 184.4 l S
944 102.2 171.2 m 133.7 171.2 l S
945 133.7 171.2 m 149.9 171.2 l S
946 102.2 158.0 m 122.1 158.0 l S
947 52.5 144.8 m 102.3 144.8 l S
948 102.3 144.8 m 121.6 144.8 l S
949 121.6 144.8 m 167.7 144.8 l S
950 167.7 144.8 m 191.8 144.8 l S
951 191.8 144.8 m 232.5 144.8 l S
952 52.5 131.6 m 77.2 131.6 l S
953 77.2 131.6 m 93.4 131.6 l S
954 93.4 131.6 m 130.4 131.6 l S
955 8.2 118.4 m 43.4 118.4 l S
956 43.4 118.4 m 59.6 118.4 l S
957 59.6 118.4 m 109.4 118.4 l S
958 8.2 105.2 m 59.9 105.2 l S
959 59.9 105.2 m 76.1 105.2 l S
960 76.1 105.2 m 129.2 105.2 l S
961 129.2 105.2 m 149.7 105.2 l S
962 149.7 105.2 m 196.5 105.2 l S
963 196.5 105.2 m 215.7 105.2 l S
964 215.7 105.2 m 253.3 105.2 l S
965 253.3 105.2 m 295.1 105.2 l S
966 52.5 92.0 m 71.1 92.0 l S
967 71.1 92.0 m 108.7 92.0 l S
968 52.5 78.8 m 85.2 78.8 l S
969 85.2 78.8 m 109.9 78.8 l S
970 52.5 65.6 m 90.1 65.6 l S
971 90.1 65.6 m 112.4 65.6 l S
972 112.4 65.6 m 154.2 65.6 l S
973 52.5 52.4 m 85.2 52.4 l S
974 85.2 52.4 m 104.4 52.4 l S
975 104.4 52.4 m 117.0 52.4 l S
976 117.0 52.4 m 145.4 52.4 l S
977 145.4 52.4 m 222.2 52.4 l S
978 222.2 52.4 m 267.1 52.4 l S
979 52.5 39.2 m 80.9 39.2 l S
980 8.2 26.0 m 45.2 26.0 l S
981 45.2 26.0 m 95.3 26.0 l S
982 95.3 26.0 m 131.7 26.0 l S
983 131.7 26.0 m 150.9 26.0 l S
984 150.9 26.0 m 186.7 26.0 l S
985 BT
986 0.00 0.00 0.00 rg /F6 11 Tf 36 687 Td 0.000 Tc(4.6.)Tj
987 0.00 0.00 1.00 rg ( Functions)Tj
988 0.00 0.00 0.00 rg 36 -13.2 Td(4.6.1.)Tj
989 0.00 0.00 1.00 rg ( Name functions that return a boolean as a question.)Tj
990 0.00 0.00 0.00 rg 0 -13.2 Td(4.6.2.)Tj
991 0.00 0.00 1.00 rg ( Always specify a return type for a function.)Tj
992 0.00 0.00 0.00 rg 0 -13.2 Td(4.6.3.)Tj
993 0.00 0.00 1.00 rg ( Minimize function calls when iterating by using variables)Tj
994 0.00 0.00 0.00 rg 0 -13.2 Td(4.6.4.)Tj
995 0.00 0.00 1.00 rg ( Pass and Return by Const Reference)Tj
996 0.00 0.00 0.00 rg 0 -13.2 Td(4.6.5.)Tj
997 0.00 0.00 1.00 rg ( Pass and Return by Value)Tj
998 0.00 0.00 0.00 rg 0 -13.2 Td(4.6.6.)Tj
999 0.00 0.00 1.00 rg ( Names of include files)Tj
1000 0.00 0.00 0.00 rg 0 -13.2 Td(4.6.7.)Tj
1001 0.00 0.00 1.00 rg ( Provide multiple inclusion protection)Tj
1002 0.00 0.00 0.00 rg 0 -13.2 Td(4.6.8.)Tj
1003 0.00 0.00 1.00 rg ( Use `extern "C"` when appropriate)Tj
1004 0.00 0.00 0.00 rg 0 -13.2 Td(4.6.9.)Tj
1005 0.00 0.00 1.00 rg ( Where Possible, Use Forward Struct Declaration Instead of Includes)Tj
1006 0.00 0.00 0.00 rg -36 -13.2 Td(4.7.)Tj
1007 0.00 0.00 1.00 rg ( General Coding Practices)Tj
1008 0.00 0.00 0.00 rg 36 -13.2 Td(4.7.1.)Tj
1009 0.00 0.00 1.00 rg ( Turn on warnings)Tj
1010 0.00 0.00 0.00 rg 0 -13.2 Td(4.7.2.)Tj
1011 0.00 0.00 1.00 rg ( Provide a default case for all switch statements)Tj
1012 0.00 0.00 0.00 rg 0 -13.2 Td(4.7.3.)Tj
1013 0.00 0.00 1.00 rg ( Try to avoid falling through cases in a switch statement.)Tj
1014 0.00 0.00 0.00 rg 0 -13.2 Td(4.7.4.)Tj
1015 0.00 0.00 1.00 rg ( Use 'long' or 'short' Instead of 'int')Tj
1016 0.00 0.00 0.00 rg 0 -13.2 Td(4.7.5.)Tj
1017 0.00 0.00 1.00 rg ( Don't mix size_t and other types)Tj
1018 0.00 0.00 0.00 rg 0 -13.2 Td(4.7.6.)Tj
1019 0.00 0.00 1.00 rg ( Declare each variable and struct on its own line.)Tj
1020 0.00 0.00 0.00 rg 0 -13.2 Td(4.7.7.)Tj
1021 0.00 0.00 1.00 rg ( Use malloc/zalloc sparingly)Tj
1022 0.00 0.00 0.00 rg 0 -13.2 Td(4.7.8.)Tj
1023 0.00 0.00 1.00 rg ( The Programmer Who Uses 'malloc' is Responsible for Ensuring 'free')Tj
1024 0.00 0.00 0.00 rg 0 -13.2 Td(4.7.9.)Tj
1025 0.00 0.00 1.00 rg ( Add loaders to the `file_list' structure and in order)Tj
1026 0.00 0.00 0.00 rg 0 -13.2 Td(4.7.10.)Tj
1027 0.00 0.00 1.00 rg ( "Uncertain" new code and/or changes to existing code, use FIXME)Tj
1028 0.00 0.00 0.00 rg -36 -13.2 Td(4.8.)Tj
1029 0.00 0.00 1.00 rg ( Addendum: Template for files and function comment blocks:)Tj
1030 0.00 0.00 0.00 rg -36 -13.2 Td(5.)Tj
1031 0.00 0.00 1.00 rg ( Testing Guidelines)Tj
1032 0.00 0.00 0.00 rg 36 -13.2 Td(5.1.)Tj
1033 0.00 0.00 1.00 rg ( Testplan for releases)Tj
1034 0.00 0.00 0.00 rg 0 -13.2 Td(5.2.)Tj
1035 0.00 0.00 1.00 rg ( Test reports)Tj
1036 0.00 0.00 0.00 rg -36 -13.2 Td(6.)Tj
1037 0.00 0.00 1.00 rg ( Releasing a New Version)Tj
1038 0.00 0.00 0.00 rg 36 -13.2 Td(6.1.)Tj
1039 0.00 0.00 1.00 rg ( Version numbers)Tj
1040 0.00 0.00 0.00 rg 0 -13.2 Td(6.2.)Tj
1041 0.00 0.00 1.00 rg ( Before the Release: Freeze)Tj
1042 0.00 0.00 0.00 rg 0 -13.2 Td(6.3.)Tj
1043 0.00 0.00 1.00 rg ( Building and Releasing the Packages)Tj
1044 0.00 0.00 0.00 rg 36 -13.2 Td(6.3.1.)Tj
1045 0.00 0.00 1.00 rg ( Note on Privoxy Packaging)Tj
1046 0.00 0.00 0.00 rg 0 -13.2 Td(6.3.2.)Tj
1047 0.00 0.00 1.00 rg ( Source Tarball)Tj
1048 0.00 0.00 0.00 rg 0 -13.2 Td(6.3.3.)Tj
1049 0.00 0.00 1.00 rg ( SuSE, Conectiva or Red Hat RPM)Tj
1050 0.00 0.00 0.00 rg 0 -13.2 Td(6.3.4.)Tj
1051 0.00 0.00 1.00 rg ( OS/2)Tj
1052 0.00 0.00 0.00 rg 0 -13.2 Td(6.3.5.)Tj
1053 0.00 0.00 1.00 rg ( Solaris)Tj
1054 0.00 0.00 0.00 rg 0 -13.2 Td(6.3.6.)Tj
1055 0.00 0.00 1.00 rg ( Windows)Tj
1056 0.00 0.00 0.00 rg 0 -13.2 Td(6.3.7.)Tj
1057 0.00 0.00 1.00 rg ( Debian)Tj
1058 0.00 0.00 0.00 rg 0 -13.2 Td(6.3.8.)Tj
1059 0.00 0.00 1.00 rg ( Mac OSX)Tj
1060 0.00 0.00 0.00 rg 0 -13.2 Td(6.3.9.)Tj
1061 0.00 0.00 1.00 rg ( FreeBSD)Tj
1062 0.00 0.00 0.00 rg 0 -13.2 Td(6.3.10.)Tj
1063 0.00 0.00 1.00 rg ( HP-UX 11)Tj
1064 0.00 0.00 0.00 rg 0 -13.2 Td(6.3.11.)Tj
1065 0.00 0.00 1.00 rg ( Amiga OS)Tj
1066 0.00 0.00 0.00 rg 0 -13.2 Td(6.3.12.)Tj
1067 0.00 0.00 1.00 rg ( AIX)Tj
1068 0.00 0.00 0.00 rg -36 -13.2 Td(6.4.)Tj
1069 0.00 0.00 1.00 rg ( Uploading and Releasing Your Package)Tj
1070 0.00 0.00 0.00 rg 0 -13.2 Td(6.5.)Tj
1071 0.00 0.00 1.00 rg ( After the Release)Tj
1072 0.00 0.00 0.00 rg -36 -13.2 Td(7.)Tj
1073 0.00 0.00 1.00 rg ( Update the Webserver)Tj
1074 0.00 0.00 0.00 rg 0 -13.2 Td(8.)Tj
1075 0.00 0.00 1.00 rg ( Contacting the developers, Bug Reporting and Feature Requests)Tj
1076 0.00 0.00 0.00 rg 36 -13.2 Td(8.1.)Tj
1077 0.00 0.00 1.00 rg ( Get Support)Tj
1078 0.00 0.00 0.00 rg 0 -13.2 Td(8.2.)Tj
1079 0.00 0.00 1.00 rg ( Report Bugs)Tj
1080 0.00 0.00 0.00 rg 0 -13.2 Td(8.3.)Tj
1081 0.00 0.00 1.00 rg ( Request New Features)Tj
1082 0.00 0.00 0.00 rg 0 -13.2 Td(8.4.)Tj
1083 0.00 0.00 1.00 rg ( Report Ads or Other Actions-Related Problems)Tj
1084 0.00 0.00 0.00 rg 0 -13.2 Td(8.5.)Tj
1085 0.00 0.00 1.00 rg ( Other)Tj
1086 0.00 0.00 0.00 rg -36 -13.2 Td(9.)Tj
1087 0.00 0.00 1.00 rg ( Privoxy Copyright, License and History)Tj
1088 0.00 0.00 0.00 rg /F8 11 Tf 0 693 Td(Privoxy Developer Manual)Tj
1089 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1090 -172.463 -720 Td(2/36)Tj
1091 ET
1092 Q
1093 endstream
1094 endobj
1095 336 0 obj<</Type/Page/Parent 331 0 R/Contents 337 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R/Fc 11 0 R>>/XObject<<>>>>/Annots 118 0 R>>endobj
1096 337 0 obj<</Length 4444      >>stream
1097 q
1098 0.93 0.93 0.93 rg 0 0 612 792 re f
1099 1 0 0 1 36 36 cm
1100 0.00 0.00 1.00 RG
1101 52.5 686.0 m 88.9 686.0 l S
1102 52.5 672.8 m 88.3 672.8 l S
1103 13.8 659.6 m 31.8 659.6 l S
1104 31.8 659.6 m 52.9 659.6 l S
1105 0.00 0.00 0.00 rg 0.0 537.0 540.0 2.0 re f
1106 114.4 488.4 m 170.9 488.4 l S
1107 369.8 488.4 m 386.0 488.4 l S
1108 386.0 488.4 m 402.2 488.4 l S
1109 0.0 439.0 540.0 2.0 re f
1110 0.0 363.8 540.0 2.0 re f
1111 183.5 315.2 m 245.2 315.2 l S
1112 412.9 315.2 m 434.1 315.2 l S
1113 434.1 315.2 m 452.2 315.2 l S
1114 452.2 315.2 m 520.3 315.2 l S
1115 0.0 279.0 540.0 2.0 re f
1116 0.0 62.2 540.0 2.0 re f
1117 BT
1118 /F6 11 Tf 36 687 Td 0.000 Tc(9.1.)Tj
1119 0.00 0.00 1.00 rg ( License)Tj
1120 0.00 0.00 0.00 rg 0 -13.2 Td(9.2.)Tj
1121 0.00 0.00 1.00 rg ( History)Tj
1122 0.00 0.00 0.00 rg -36 -13.2 Td(10.)Tj
1123 0.00 0.00 1.00 rg ( See also)Tj
1124 0.00 0.00 0.00 rg /F9 17 Tf 0 -32.4 Td(1. Introduction)Tj
1125 /F4 11 Tf 0 -27.6 Td(Privoxy, as an heir to Junkbuster, is an Open Source project and licensed under the GPL. As such, Privoxy development is)Tj
1126 0 -13.2 Td(potentially open to anyone who has the time, knowledge, and desire to contribute in any capacity. Our goals are simply to)Tj
1127 0 -13.2 Td(continue the mission, to improve Privoxy, and to make it available to as wide an audience as possible.)Tj
1128 0 -26.4 Td(One does not have to be a programmer to contribute. Packaging, testing, and porting, are all important jobs as well.)Tj
1129 /F9 14 Tf 0 -31.4 Td(1.1. Quickstart to Privoxy Development)Tj
1130 /F4 11 Tf 0 -27 Td(You'll need an account on)Tj
1131 0.00 0.00 1.00 rg ( Sourceforge)Tj
1132 0.00 0.00 0.00 rg ( to support our development. Mail your ID to)Tj
1133 0.00 0.00 1.00 rg ( the list)Tj
1134 0.00 0.00 0.00 rg ( and wait until a project)Tj
1135 0 -13.2 Td(manager has added you.)Tj
1136 0 -26.4 Td(For the time being \(read, this section is under construction\), please refer to the extensive comments in the source code.)Tj
1137 /F9 17 Tf 0 -34.4 Td(2. The CVS Repository)Tj
1138 /F4 11 Tf 0 -27.6 Td(If you intend to help us with programming, documentation or packaging you will need write access to our holy grail, the)Tj
1139 0 -13.2 Td(CVS repository. Please read this chapter completely before accessing via CVS.)Tj
1140 /F9 14 Tf 0 -31.4 Td(2.1. Access to CVS)Tj
1141 /F4 11 Tf 0 -27 Td(The project's CVS repository is hosted on)Tj
1142 0.00 0.00 1.00 rg ( SourceForge.)Tj
1143 0.00 0.00 0.00 rg ( Please refer to the chapters 6 and 7 in)Tj
1144 0.00 0.00 1.00 rg ( SF's site documentation)Tj
1145 0.00 0.00 0.00 rg ( for)Tj
1146 0 -13.2 Td(the technical access details for your operating system. For historical reasons, the CVS server is called)Tj
1147 /F0 11 Tf 0 -13.2 Td(cvs.ijbswa.sourceforge.net)Tj
1148 /F4 11 Tf (, the repository is called )Tj
1149 /F0 11 Tf (ijbswa)Tj
1150 /F4 11 Tf (, and the source tree module is called )Tj
1151 /F0 11 Tf (current)Tj
1152 /F4 11 Tf (.)Tj
1153 /F9 14 Tf 0 -31.4 Td(2.2. CVS Commit Guideline)Tj
1154 /F4 11 Tf 0 -27 Td(The source tree is the heart of every software project. Every effort must be made to ensure that it is readable, compilable)Tj
1155 0 -13.2 Td(and consistent at all times. We therefore ask anyone with CVS access to strictly adhere to the following guidelines:)Tj
1156 36 -26.4 Td(Never \(read:)Tj
1157 /F6 11 Tf ( never, ever)Tj
1158 /F4 11 Tf (\) be tempted to commit that small change without testing it thoroughly first. When we're)Tj
1159 0 -13.2 Td(close to a public release, ask a fellow developer to review your changes.)Tj
1160 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
1161 /F4 11 Tf 7.81 -26.4 Td(Your commit message should give a concise overview of)Tj
1162 /F6 11 Tf ( what you changed)Tj
1163 /F4 11 Tf ( \(no big details\) and)Tj
1164 /F6 11 Tf ( why you changed)Tj
1165 0 -13.2 Td(it)Tj
1166 /F4 11 Tf ( Just check previous messages for good examples.)Tj
1167 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
1168 /F4 11 Tf 7.81 -26.4 Td(Don't use the same message on multiple files, unless it equally applies to all those files.)Tj
1169 /Fc 11 Tf -7.81 0 Td(\267 )Tj
1170 /F4 11 Tf 7.81 -13.2 Td(If your changes span multiple files, and the code won't recompile unless all changes are committed \(e.g. when)Tj
1171 -0 -13.2 Td(changing the signature of a function\), then commit all files one after another, without long delays in between. If)Tj
1172 0 -13.2 Td(necessary, prepare the commit messages in advance.)Tj
1173 /Fc 11 Tf -7.81 26.4 Td(\267 )Tj
1174 /F4 11 Tf 7.81 -39.6 Td(Before changing things on CVS, make sure that your changes are in line with the team's general consensus on)Tj
1175 -0 -13.2 Td(what should be done \(see below\).)Tj
1176 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
1177 /F8 11 Tf -28.19 633.8 Td(Privoxy Developer Manual)Tj
1178 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1179 -172.463 -720 Td(3/36)Tj
1180 ET
1181 Q
1182 endstream
1183 endobj
1184 338 0 obj<</Type/Page/Parent 331 0 R/Contents 339 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>/Annots 131 0 R>>endobj
1185 339 0 obj<</Length 5765      >>stream
1186 q
1187 0.93 0.93 0.93 rg 0 0 612 792 re f
1188 1 0 0 1 36 36 cm
1189 0.00 0.00 1.00 RG
1190 115.1 590.0 m 132.5 590.0 l S
1191 132.5 590.0 m 148.7 590.0 l S
1192 148.7 590.0 m 164.9 590.0 l S
1193 227.2 576.8 m 244.6 576.8 l S
1194 244.6 576.8 m 260.8 576.8 l S
1195 260.8 576.8 m 277.0 576.8 l S
1196 151.6 537.2 m 187.3 537.2 l S
1197 187.3 537.2 m 220.6 537.2 l S
1198 0.00 0.00 0.00 rg 0.0 527.4 540.0 2.0 re f
1199 0.0 462.0 m 40.3 462.0 l S
1200 387.1 448.8 m 449.2 448.8 l S
1201 451.9 448.8 m 476.1 448.8 l S
1202 BT
1203 /F9 14 Tf 0 684 Td 0.000 Tc(2.3. Discussing Changes First)Tj
1204 /F4 11 Tf 0 -27 Td(We don't have a too formal policy on this, just use common sense. Hints: If it is..)Tj
1205 36 -26.4 Td(..a bug-fix / clean-up / cosmetic thing: shoot)Tj
1206 -11 0 Td(1. )Tj
1207 11 -13.2 Td(..a new feature that can be turned off: shoot)Tj
1208 -11 0 Td(2. )Tj
1209 11 -13.2 Td(..a clear improvement w/o side effects on other parts of the code: shoot)Tj
1210 -11 0 Td(3. )Tj
1211 11 -13.2 Td(..a matter of taste:)Tj
1212 0.00 0.00 1.00 rg ( ask the list)Tj
1213 0.00 0.00 0.00 rg -11 0 Td(4. )Tj
1214 11 -13.2 Td(..a major redesign of some part of the code:)Tj
1215 0.00 0.00 1.00 rg ( ask the list)Tj
1216 0.00 0.00 0.00 rg -11 0 Td(5. )Tj
1217 -25 -26.4 Td(Note that near a major public release, we get a bit more cautious - if unsure, it doesn't hurt to ask first. There is always the)Tj
1218 0 -13.2 Td(possibility to submit a patch to the)Tj
1219 0.00 0.00 1.00 rg ( patches tracker)Tj
1220 0.00 0.00 0.00 rg ( instead.)Tj
1221 /F9 17 Tf 0 -34.4 Td(3. Documentation Guidelines)Tj
1222 /F4 11 Tf 0 -27.6 Td(All formal documents are maintained in Docbook SGML and located in the )Tj
1223 /F0 11 Tf (doc/source/*)Tj
1224 /F4 11 Tf ( directory. You will need)Tj
1225 0.00 0.00 1.00 rg 0 -13.2 Td(Docbook)Tj
1226 0.00 0.00 0.00 rg (, the Docbook DTD's and the Docbook modular stylesheets \(or comparable alternatives\), and either jade or)Tj
1227 0 -13.2 Td(openjade \(recommended\) installed in order to build docs from source. Currently there is)Tj
1228 0.00 0.00 1.00 rg /F6 11 Tf ( user-manual)Tj
1229 0.00 0.00 0.00 rg /F4 11 Tf (,)Tj
1230 0.00 0.00 1.00 rg /F6 11 Tf ( FAQ)Tj
1231 0.00 0.00 0.00 rg /F4 11 Tf (, and, of)Tj
1232 0 -13.2 Td(course this, the)Tj
1233 /F6 11 Tf ( developer-manual)Tj
1234 /F4 11 Tf ( in this format. The)Tj
1235 /F6 11 Tf ( README)Tj
1236 /F4 11 Tf (,)Tj
1237 /F6 11 Tf ( AUTHORS privoxy.1)Tj
1238 /F4 11 Tf ( \(man page\), and)Tj
1239 /F6 11 Tf ( config)Tj
1240 /F4 11 Tf ( files are)Tj
1241 0 -13.2 Td(also now maintained as Docbook SGML. These files, when built, in the top-level source directory are generated files!)Tj
1242 0 -13.2 Td(Also, the Privoxy )Tj
1243 /F0 11 Tf (index.html)Tj
1244 /F4 11 Tf ( \(and a variation on this file, )Tj
1245 /F0 11 Tf (privoxy-index.html)Tj
1246 /F4 11 Tf (, meant for inclusion with doc)Tj
1247 0 -13.2 Td(packages\), are maintained as SGML as well.)Tj
1248 /F6 11 Tf ( DO NOT edit these directly)Tj
1249 /F4 11 Tf (. Edit the SGML source, or contact someone)Tj
1250 0 -13.2 Td(involved in the documentation \(at present Stefan and Hal\).)Tj
1251 /F0 11 Tf 0 -26.4 Td(config)Tj
1252 /F4 11 Tf ( requires some special handling. The reason it is maintained this way is so that the extensive comments in the file)Tj
1253 0 -13.2 Td(mirror those in)Tj
1254 /F6 11 Tf ( user-manual)Tj
1255 /F4 11 Tf (. But the conversion process requires going from SGML to HTML to text to special)Tj
1256 0 -13.2 Td(formatting required for the embedded comments. Some of this does not survive so well. Especially some of the examples)Tj
1257 0 -13.2 Td(that are longer than 80 characters. The build process for this file outputs to )Tj
1258 /F0 11 Tf (config.new)Tj
1259 /F4 11 Tf (, which should be reviewed for)Tj
1260 0 -13.2 Td(errors and mis-formatting. Once satisfied that it is correct, then it should be hand copied to )Tj
1261 /F0 11 Tf (config)Tj
1262 /F4 11 Tf (.)Tj
1263 0 -26.4 Td(Other, less formal documents \(e.g. )Tj
1264 /F0 11 Tf (LICENSE)Tj
1265 /F4 11 Tf (, )Tj
1266 /F0 11 Tf (INSTALL)Tj
1267 /F4 11 Tf (\) are maintained as plain text files in the top-level source)Tj
1268 0 -13.2 Td(directory. At least for the time being.)Tj
1269 0 -26.4 Td(Packagers are encouraged to include this documentation. For those without the ability to build the docs locally, text)Tj
1270 0 -13.2 Td(versions of each are kept in CVS. HTML versions are also now being kept in CVS under )Tj
1271 /F0 11 Tf (doc/webserver/*)Tj
1272 /F4 11 Tf (.)Tj
1273 0 -26.4 Td(Formal documents are built with the Makefile targets of )Tj
1274 /F0 11 Tf (make dok)Tj
1275 /F4 11 Tf (, or alternately )Tj
1276 /F0 11 Tf (make redhat-dok)Tj
1277 /F4 11 Tf (. If you have)Tj
1278 0 -13.2 Td(problems, try both. The build process uses the document SGML sources in )Tj
1279 /F0 11 Tf (doc/source/*/*)Tj
1280 /F4 11 Tf ( to update all text files in)Tj
1281 /F0 11 Tf 0 -13.2 Td(doc/text/)Tj
1282 /F4 11 Tf ( and to update all HTML documents in )Tj
1283 /F0 11 Tf (doc/webserver/)Tj
1284 /F4 11 Tf (.)Tj
1285 0 -26.4 Td(Documentation writers should please make sure documents build successfully before committing to CVS, if possible.)Tj
1286 0 -26.4 Td(How do you update the webserver \(i.e. the pages on privoxy.org\)?)Tj
1287 36 -26.4 Td(First, build the docs by running )Tj
1288 /F0 11 Tf (make dok)Tj
1289 /F4 11 Tf ( \(or alternately )Tj
1290 /F0 11 Tf (make redhat-dok)Tj
1291 /F4 11 Tf (\).)Tj
1292 -11 0 Td(1. )Tj
1293 11 -13.2 Td(Run )Tj
1294 /F0 11 Tf (make webserver)Tj
1295 /F4 11 Tf ( which copies all files from )Tj
1296 /F0 11 Tf (doc/webserver)Tj
1297 /F4 11 Tf ( to the sourceforge webserver via scp.)Tj
1298 -11 0 Td(2. )Tj
1299 -25 -26.4 Td(Finished docs should be occasionally submitted to CVS \()Tj
1300 /F0 11 Tf (doc/webserver/*/*.html)Tj
1301 /F4 11 Tf (\) so that those without the)Tj
1302 0 -13.2 Td(ability to build them locally, have access to them if needed. This is especially important just prior to a new release! Please)Tj
1303 0 -13.2 Td(do this)Tj
1304 /F6 11 Tf ( after)Tj
1305 /F4 11 Tf ( the )Tj
1306 /F0 11 Tf ($VERSION)Tj
1307 /F4 11 Tf ( and other release specific data in )Tj
1308 /F0 11 Tf (configure.in)Tj
1309 /F4 11 Tf ( has been updated \(this is done just prior)Tj
1310 /F8 11 Tf 0 692.6 Td(Privoxy Developer Manual)Tj
1311 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1312 -172.463 -720 Td(4/36)Tj
1313 ET
1314 Q
1315 endstream
1316 endobj
1317 340 0 obj<</Type/Page/Parent 331 0 R/Contents 341 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R/Fc 11 0 R>>/XObject<<>>>>/Annots 134 0 R>>endobj
1318 341 0 obj<</Length 4396      >>stream
1319 q
1320 0.93 0.93 0.93 rg 0 0 612 792 re f
1321 1 0 0 1 36 36 cm
1322 0.00 0.00 0.00 rg 0.0 676.2 540.0 2.0 re f
1323 0.00 0.00 1.00 RG
1324 95.5 173.4 m 129.8 173.4 l S
1325 129.8 173.4 m 200.3 173.4 l S
1326 200.3 173.4 m 229.4 173.4 l S
1327 229.4 173.4 m 274.3 173.4 l S
1328 274.3 173.4 m 283.2 173.4 l S
1329 283.2 173.4 m 293.9 173.4 l S
1330 293.9 173.4 m 322.3 173.4 l S
1331 322.3 173.4 m 356.3 173.4 l S
1332 0.0 163.6 540.0 2.0 re f
1333 BT
1334 /F4 11 Tf 0 687 Td 0.000 Tc(to a new release\).)Tj
1335 /F9 14 Tf 0 -31.4 Td(3.1. Quickstart to Docbook and SGML)Tj
1336 /F4 11 Tf 0 -27 Td(If you are not familiar with SGML, it is a markup language similar to HTML. Actually, not a mark up language per se, but)Tj
1337 0 -13.2 Td(a language used to define markup languages. In fact, HTML is an SGML application. Both will use "tags" to format text)Tj
1338 0 -13.2 Td(and other content. SGML tags can be much more varied, and flexible, but do much of the same kinds of things. The tags,)Tj
1339 0 -13.2 Td(or "elements", are definable in SGML. There is no set "standards". Since we are using Docbook, our tags are those that)Tj
1340 0 -13.2 Td(are defined by Docbook. Much of how the finish document is rendered is determined by the "stylesheets". The stylesheets)Tj
1341 0 -13.2 Td(determine how each tag gets translated to HTML, or other formats.)Tj
1342 0 -26.4 Td(Tags in Docbook SGML need to be always "closed". If not, you will likely generate errors. Example: )Tj
1343 /F0 11 Tf (<title>My)Tj
1344 0 -13.2 Td(Title</title>)Tj
1345 /F4 11 Tf (. They are also case-insensitive, but we strongly suggest using all lower case. This keeps compatibility)Tj
1346 0 -13.2 Td(with [Docbook] XML.)Tj
1347 0 -26.4 Td(Our documents use "sections" for the most part. Sections will be processed into HTML headers \(e.g. )Tj
1348 /F0 11 Tf (h1)Tj
1349 /F4 11 Tf ( for )Tj
1350 /F0 11 Tf (sect1)Tj
1351 /F4 11 Tf (\). The)Tj
1352 0 -13.2 Td(Docbook stylesheets will use these to also generate the Table of Contents for each doc. Our TOC's are set to a depth of)Tj
1353 0 -13.2 Td(three. Meaning )Tj
1354 /F0 11 Tf (sect1)Tj
1355 /F4 11 Tf (, )Tj
1356 /F0 11 Tf (sect2)Tj
1357 /F4 11 Tf (, and )Tj
1358 /F0 11 Tf (sect3)Tj
1359 /F4 11 Tf ( will have TOC entries, but )Tj
1360 /F0 11 Tf (sect4)Tj
1361 /F4 11 Tf ( will not. Each section requires a)Tj
1362 /F0 11 Tf 0 -13.2 Td(<title>)Tj
1363 /F4 11 Tf ( element, and at least one )Tj
1364 /F0 11 Tf (<para>)Tj
1365 /F4 11 Tf (. There is a limit of five section levels in Docbook, but generally three)Tj
1366 0 -13.2 Td(should be sufficient for our purposes.)Tj
1367 0 -26.4 Td(Some common elements that you likely will use:)Tj
1368 /F6 11 Tf 1.588 -27.988 Td(<para></para>)Tj
1369 /F4 11 Tf (, paragraph delimiter. Most text needs to be within paragraph elements \(there are some exceptions\).)Tj
1370 /F6 11 Tf 0 -16.376 Td(<emphasis></emphasis>)Tj
1371 /F4 11 Tf (, the stylesheets make this italics.)Tj
1372 /F6 11 Tf 0 -16.376 Td(<filename></filename>)Tj
1373 /F4 11 Tf (, files and directories.)Tj
1374 /F6 11 Tf 0 -16.376 Td(<command></command>)Tj
1375 /F4 11 Tf (, command examples.)Tj
1376 /F6 11 Tf 0 -16.376 Td(<literallayout></literallayout>)Tj
1377 /F4 11 Tf (, like )Tj
1378 /F0 11 Tf (<pre>)Tj
1379 /F4 11 Tf (, more or less.)Tj
1380 /F6 11 Tf 0 -16.376 Td(<itemizedlist></itemizedlist>)Tj
1381 /F4 11 Tf (, list with bullets.)Tj
1382 /F6 11 Tf -0 -16.376 Td(<listitem></listitem>)Tj
1383 /F4 11 Tf (, member of the above.)Tj
1384 /F6 11 Tf 0 -16.376 Td(<screen></screen>)Tj
1385 /F4 11 Tf (, screen output, implies )Tj
1386 /F0 11 Tf (<literallayout>)Tj
1387 /F4 11 Tf (.)Tj
1388 /F6 11 Tf -0 -16.376 Td(<ulink url="example.com"></ulink>)Tj
1389 /F4 11 Tf (, like HTML )Tj
1390 /F0 11 Tf (<a>)Tj
1391 /F4 11 Tf ( tag.)Tj
1392 /F6 11 Tf 0 -16.376 Td(<quote></quote>)Tj
1393 /F4 11 Tf (, for, doh, quoting text.)Tj
1394 -1.588 -27.988 Td(Look at any of the existing docs for examples of all these and more.)Tj
1395 0 -26.4 Td(You might also find ")Tj
1396 0.00 0.00 1.00 rg (Writing Documentation Using DocBook - A Crash Course)Tj
1397 0.00 0.00 0.00 rg (" useful.)Tj
1398 /F9 14 Tf 0 -31.4 Td(3.2. Privoxy Documentation Style)Tj
1399 /F4 11 Tf 0 -27 Td(It will be easier if everyone follows a similar writing style. This just makes it easier to read what someone else has written)Tj
1400 0 -13.2 Td(if it is all done in a similar fashion.)Tj
1401 0 -26.4 Td(Here it is:)Tj
1402 36 -26.4 Td(All tags should be lower case.)Tj
1403 /Fc 11 Tf -7.81 0 Td(\267 )Tj
1404 /F4 11 Tf 7.81 -13.2 Td(Tags delimiting a)Tj
1405 /F6 11 Tf ( block)Tj
1406 /F4 11 Tf ( of text \(even small blocks\) should be on their own line. Like:)Tj
1407 /Fc 11 Tf -7.81 0 Td(\267 )Tj
1408 /F8 11 Tf -28.19 683.165 Td(Privoxy Developer Manual)Tj
1409 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1410 -172.463 -720 Td(5/36)Tj
1411 ET
1412 Q
1413 endstream
1414 endobj
1415 342 0 obj<</Type/Page/Parent 331 0 R/Contents 343 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R/Fc 11 0 R>>/XObject<<>>>>>>endobj
1416 343 0 obj<</Length 3351      >>stream
1417 q
1418 0.93 0.93 0.93 rg 0 0 612 792 re f
1419 1 0 0 1 36 36 cm
1420 0.00 0.00 0.00 rg 0.0 148.2 540.0 2.0 re f
1421 BT
1422 /F4 11 Tf 36 687 Td 0.000 Tc( <para>)Tj
1423 -0 -13.2 Td(  Some text goes here.)Tj
1424 0 -13.2 Td( </para>)Tj
1425 -0 -39.6 Td(Tags marking individual words, or few words, should be in-line:)Tj
1426 0 -26.4 Td(  Just to <emphasis>emphasize</emphasis>, some text goes here.)Tj
1427 0 -26.4 Td(Tags should be nested and step indented for block text like: \(except in-line tags\))Tj
1428 0 -26.4 Td( <para>)Tj
1429 -0 -13.2 Td(  <itemizedlist>)Tj
1430 0 -13.2 Td(   <para>)Tj
1431 -0 -13.2 Td(    <listitem>)Tj
1432 0 -13.2 Td(      Some text goes here in our list example.)Tj
1433 0 -13.2 Td(     </listitem>)Tj
1434 0 -13.2 Td(   </para>)Tj
1435 -0 -13.2 Td(  </itemizedlist>)Tj
1436 0 -13.2 Td( </para>)Tj
1437 -0 -39.6 Td(This makes it easier to find the text amongst the tags ;-\))Tj
1438 /Fc 11 Tf -7.81 171.6 Td(\267 )Tj
1439 /F4 11 Tf 7.81 -184.8 Td(Use white space to separate logical divisions within a document, like between sections. Running everything)Tj
1440 -0 -13.2 Td(together consistently makes it harder to read and work on.)Tj
1441 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
1442 /F4 11 Tf 7.81 -26.4 Td(Do not hesitate to make comments. Comments can either use the <comment> element, or the <!-- --> style)Tj
1443 -0 -13.2 Td(comment familiar from HTML. \(Note in Docbook v4.x <comment> is replaced by <remark>.\))Tj
1444 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
1445 /F4 11 Tf 7.81 -26.4 Td(We have an international audience. Refrain from slang, or English idiosyncrasies \(too many to list :\). Humor also)Tj
1446 0 -13.2 Td(does not translate well sometimes.)Tj
1447 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
1448 /F4 11 Tf 7.81 -26.4 Td(Try to keep overall line lengths in source files to 80 characters or less for obvious reasons. This is not always)Tj
1449 -0 -13.2 Td(possible, with lengthy URLs for instance.)Tj
1450 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
1451 /F4 11 Tf 7.81 -26.4 Td(Our documents are available in differing formats. Right now, they are just plain text, and HTML, but PDF, and)Tj
1452 0 -13.2 Td(others is always a future possibility. Be careful with URLs \(<ulink>\), and avoid this mistake:)Tj
1453 -0 -26.4 Td(My favorite site is <ulink url="http://example.com">here</ulink>.)Tj
1454 0 -26.4 Td(This will render as "My favorite site is here", which is not real helpful in a text doc. Better like this:)Tj
1455 -0 -26.4 Td(My favorite site is <ulink url="http://example.com">example.com</ulink>.)Tj
1456 /Fc 11 Tf -7.81 92.4 Td(\267 )Tj
1457 /F4 11 Tf 7.81 -105.6 Td(All documents should be spell checked occasionally. aspell can check SGML with the )Tj
1458 /F0 11 Tf (-H)Tj
1459 /F4 11 Tf ( option. \(ispell I think)Tj
1460 0 -13.2 Td(too.\))Tj
1461 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
1462 /F9 14 Tf -28.19 -44.6 Td(3.3. Privoxy Custom Entities)Tj
1463 /F4 11 Tf 0 -27 Td(Privoxy documentation is using a number of customized "entities" to facilitate documentation maintenance.)Tj
1464 0 -26.4 Td(We are using a set of "boilerplate" files with generic text, that is used by multiple docs. This way we can write something)Tj
1465 0 -13.2 Td(once, and use it repeatedly without having to re-write the same content over and over again. If editing such a file, keep in)Tj
1466 0 -13.2 Td(mind that it should be)Tj
1467 /F6 11 Tf ( generic)Tj
1468 /F4 11 Tf (. That is the purpose; so it can be used in varying contexts without additional modifications.)Tj
1469 /F8 11 Tf 0 672.2 Td(Privoxy Developer Manual)Tj
1470 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1471 -172.463 -720 Td(6/36)Tj
1472 ET
1473 Q
1474 endstream
1475 endobj
1476 344 0 obj<</Type/Page/Parent 331 0 R/Contents 345 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R/Fc 11 0 R>>/XObject<<>>>>>>endobj
1477 345 0 obj<</Length 3629      >>stream
1478 q
1479 0.93 0.93 0.93 rg 0 0 612 792 re f
1480 1 0 0 1 36 36 cm
1481 0.00 0.00 0.00 rg 0.0 396.3 540.0 2.0 re f
1482 0.0 238.3 540.0 2.0 re f
1483 BT
1484 /F4 11 Tf 0 687 Td 0.000 Tc(We are also using what Docbook calls "internal entities". These are like variables in programming. Well, sort of. For)Tj
1485 0 -13.2 Td(instance, we have the )Tj
1486 /F0 11 Tf (p-version)Tj
1487 /F4 11 Tf ( entity that contains the current Privoxy version string. You are strongly encouraged to)Tj
1488 0 -13.2 Td(use these where possible. Some of these obviously require re-setting with each release \(done by the Makefile\). A)Tj
1489 0 -13.2 Td(sampling of custom entities are listed below. See any of the main docs for examples.)Tj
1490 36 -26.4 Td(Re- "boilerplate" text entities are defined like:)Tj
1491 /F0 11 Tf 0 -26.4 Td(<!entity supported SYSTEM "supported.sgml">)Tj
1492 /F4 11 Tf -0 -26.4 Td(In this example, the contents of the file, )Tj
1493 /F0 11 Tf (supported.sgml)Tj
1494 /F4 11 Tf ( is available for inclusion anywhere in the doc. To)Tj
1495 0 -13.2 Td(make this happen, just reference the now defined entity: )Tj
1496 /F0 11 Tf (&supported;)Tj
1497 /F4 11 Tf ( \(starts with an ampersand and ends with)Tj
1498 -0 -13.2 Td(a semi-colon\), and the contents will be dumped into the finished doc at that point.)Tj
1499 /Fc 11 Tf -7.81 79.2 Td(\267 )Tj
1500 /F4 11 Tf 7.81 -92.4 Td(Commonly used "internal entities":)Tj
1501 /F6 11 Tf 1.588 -27.988 Td(p-version)Tj
1502 /F4 11 Tf (: the Privoxy version string, e.g. "2.9.18".)Tj
1503 /F6 11 Tf 0 -16.376 Td(p-status)Tj
1504 /F4 11 Tf (: the project status, either "alpha", "beta", or "stable".)Tj
1505 /F6 11 Tf 0 -16.376 Td(p-not-stable)Tj
1506 /F4 11 Tf (: use to conditionally include text in "not stable" releases \(e.g. "beta"\).)Tj
1507 /F6 11 Tf 0 -16.376 Td(p-stable)Tj
1508 /F4 11 Tf (: just the opposite.)Tj
1509 /F6 11 Tf -0 -16.376 Td(p-text)Tj
1510 /F4 11 Tf (: this doc is only generated as text.)Tj
1511 /Fc 11 Tf -9.398 93.494 Td(\267 )Tj
1512 /F4 11 Tf -28.19 -121.482 Td(There are others in various places that are defined for a specific purpose. Read the source!)Tj
1513 /F9 17 Tf 0 -34.4 Td(4. Coding Guidelines)Tj
1514 /F9 14 Tf 0 -30.6 Td(4.1. Introduction)Tj
1515 /F4 11 Tf 0 -27 Td(This set of standards is designed to make our lives easier. It is developed with the simple goal of helping us keep the "new)Tj
1516 0 -13.2 Td(and improved Privoxy" consistent and reliable. Thus making maintenance easier and increasing chances of success of the)Tj
1517 0 -13.2 Td(project.)Tj
1518 0 -26.4 Td(And that of course comes back to us as individuals. If we can increase our development and product efficiencies then we)Tj
1519 0 -13.2 Td(can solve more of the request for changes/improvements and in general feel good about ourselves. ;->)Tj
1520 /F9 14 Tf 0 -31.4 Td(4.2. Using Comments)Tj
1521 /F9 11 Tf 0 -27 Td(4.2.1. Comment, Comment, Comment)Tj
1522 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1523 /F4 11 Tf 0 -26.4 Td(Comment as much as possible without commenting the obvious. For example do not comment "aVariable is equal to)Tj
1524 0 -13.2 Td(bVariable". Instead explain why aVariable should be equal to the bVariable. Just because a person can read code does not)Tj
1525 0 -13.2 Td(mean they will understand why or what is being done. A reader may spend a lot more time figuring out what is going on)Tj
1526 0 -13.2 Td(when a simple comment or explanation would have prevented the extra research. Please help your brother IJB'ers out!)Tj
1527 0 -26.4 Td(The comments will also help justify the intent of the code. If the comment describes something different than what the)Tj
1528 0 -13.2 Td(code is doing then maybe a programming error is occurring.)Tj
1529 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1530 /F8 11 Tf 0 687.683 Td(Privoxy Developer Manual)Tj
1531 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1532 -172.463 -720 Td(7/36)Tj
1533 ET
1534 Q
1535 endstream
1536 endobj
1537 346 0 obj<</Type/Page/Parent 331 0 R/Contents 347 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
1538 347 0 obj<</Length 2351      >>stream
1539 q
1540 0.93 0.93 0.93 rg 0 0 612 792 re f
1541 1 0 0 1 36 36 cm
1542 0.88 0.88 0.88 rg 0.0 532.8 540.0 165.2 re f
1543 0.00 0.00 0.00 rg 0.0 524.2 540.0 2.0 re f
1544 0.88 0.88 0.88 rg 0.0 166.4 540.0 219.2 re f
1545 0.00 0.00 0.00 rg 0.0 91.8 540.0 2.0 re f
1546 BT
1547 /F0 9 Tf 1.588 687.412 Td 0.000 Tc(/* if page size greater than 1k ... */)Tj
1548 0 -10.8 Td(if \( PageLength\(\) > 1024 \))Tj
1549 0 -10.8 Td({)Tj
1550 0 -10.8 Td(    ... "block" the page up ...)Tj
1551 0 -10.8 Td(})Tj
1552 0 -21.6 Td(/* if page size is small, send it in blocks */)Tj
1553 0 -10.8 Td(if \( PageLength\(\) > 1024 \))Tj
1554 0 -10.8 Td({)Tj
1555 0 -10.8 Td(    ... "block" the page up ...)Tj
1556 0 -10.8 Td(})Tj
1557 0 -21.6 Td(This demonstrates 2 cases of "what not to do".  The first is a)Tj
1558 0 -10.8 Td("syntax comment".  The second is a comment that does not fit what)Tj
1559 0 -10.8 Td(is actually being done.)Tj
1560 /F9 11 Tf -1.588 -29.588 Td(4.2.2. Use blocks for comments)Tj
1561 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1562 /F4 11 Tf 0 -26.4 Td(Comments can help or they can clutter. They help when they are differentiated from the code they describe. One line)Tj
1563 0 -13.2 Td(comments do not offer effective separation between the comment and the code. Block identifiers do, by surrounding the)Tj
1564 0 -13.2 Td(code with a clear, definable pattern.)Tj
1565 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1566 /F0 9 Tf 1.588 -25.988 Td(/*********************************************************************)Tj
1567 0 -10.8 Td( * This will stand out clearly in your code!)Tj
1568 0 -10.8 Td( *********************************************************************/)Tj
1569 0 -10.8 Td(if \( thisVariable == thatVariable \))Tj
1570 0 -10.8 Td({)Tj
1571 0 -10.8 Td(   DoSomethingVeryImportant\(\);)Tj
1572 0 -10.8 Td(})Tj
1573 0 -32.4 Td(/* unfortunately, this may not */)Tj
1574 0 -10.8 Td(if \( thisVariable == thatVariable \))Tj
1575 0 -10.8 Td({)Tj
1576 0 -10.8 Td(   DoSomethingVeryImportant\(\);)Tj
1577 0 -10.8 Td(})Tj
1578 0 -32.4 Td(if \( thisVariable == thatVariable \) /* this may not either */)Tj
1579 0 -10.8 Td({)Tj
1580 0 -10.8 Td(   DoSomethingVeryImportant\(\);)Tj
1581 0 -10.8 Td(})Tj
1582 /F6 11 Tf -1.588 -27.588 Td(Exception:)Tj
1583 /F4 11 Tf 0 -26.4 Td(If you are trying to add a small logic comment and do not wish to "disrupt" the flow of the code, feel free to use a 1 line)Tj
1584 0 -13.2 Td(comment which is NOT on the same line as the code.)Tj
1585 /F8 11 Tf 0 617.353 Td(Privoxy Developer Manual)Tj
1586 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1587 -172.463 -720 Td(8/36)Tj
1588 ET
1589 Q
1590 endstream
1591 endobj
1592 348 0 obj<</Type/Page/Parent 331 0 R/Contents 349 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
1593 349 0 obj<</Length 2696      >>stream
1594 q
1595 0.93 0.93 0.93 rg 0 0 612 792 re f
1596 1 0 0 1 36 36 cm
1597 0.88 0.88 0.88 rg 0.0 169.2 540.0 370.4 re f
1598 0.00 0.00 0.00 rg 0.0 160.6 540.0 2.0 re f
1599 BT
1600 /F9 11 Tf 0 687 Td 0.000 Tc(4.2.3. Keep Comments on their own line)Tj
1601 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1602 /F4 11 Tf 0 -26.4 Td(It goes back to the question of readability. If the comment is on the same line as the code it will be harder to read than the)Tj
1603 0 -13.2 Td(comment that is on its own line.)Tj
1604 0 -26.4 Td(There are three exceptions to this rule, which should be violated freely and often: during the definition of variables, at the)Tj
1605 0 -13.2 Td(end of closing braces, when used to comment parameters.)Tj
1606 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1607 /F0 9 Tf 1.588 -25.988 Td(/*********************************************************************)Tj
1608 0 -10.8 Td( * This will stand out clearly in your code,)Tj
1609 0 -10.8 Td( * But the second example won't.)Tj
1610 0 -10.8 Td( *********************************************************************/)Tj
1611 0 -10.8 Td(if \( thisVariable == thatVariable \))Tj
1612 0 -10.8 Td({)Tj
1613 0 -10.8 Td(   DoSomethingVeryImportant\(\);)Tj
1614 0 -10.8 Td(})Tj
1615 0 -21.6 Td(if \( thisVariable == thatVariable \) /*can you see me?*/)Tj
1616 0 -10.8 Td({)Tj
1617 0 -10.8 Td(   DoSomethingVeryImportant\(\); /*not easily*/)Tj
1618 0 -10.8 Td(})Tj
1619 0 -32.4 Td(/*********************************************************************)Tj
1620 0 -10.8 Td( * But, the encouraged exceptions:)Tj
1621 0 -10.8 Td( *********************************************************************/)Tj
1622 0 -10.8 Td(int urls_read     = 0;     /* # of urls read + rejected */)Tj
1623 0 -10.8 Td(int urls_rejected = 0;     /* # of urls rejected */)Tj
1624 0 -21.6 Td(if \( 1 == X \))Tj
1625 0 -10.8 Td({)Tj
1626 0 -10.8 Td(   DoSomethingVeryImportant\(\);)Tj
1627 0 -10.8 Td(})Tj
1628 0 -32.4 Td(short DoSomethingVeryImportant\()Tj
1629 0 -10.8 Td(   short firstparam,   /* represents something */)Tj
1630 0 -10.8 Td(   short nextparam     /* represents something else */ \))Tj
1631 0 -10.8 Td({)Tj
1632 0 -10.8 Td(   ...code here...)Tj
1633 0 -21.6 Td(}   /* -END- DoSomethingVeryImportant */)Tj
1634 /F9 11 Tf -1.588 -29.588 Td(4.2.4. Comment each logical step)Tj
1635 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1636 /F4 11 Tf 0 -26.4 Td(Logical steps should be commented to help others follow the intent of the written code and comments will make the code)Tj
1637 0 -13.2 Td(more readable.)Tj
1638 0 -26.4 Td(If you have 25 lines of code without a comment, you should probably go back into it to see where you forgot to put one.)Tj
1639 0 -26.4 Td(Most "for", "while", "do", etc... loops _probably_ need a comment. After all, these are usually major logic containers.)Tj
1640 /F8 11 Tf 0 695.776 Td(Privoxy Developer Manual)Tj
1641 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1642 -172.463 -720 Td(9/36)Tj
1643 ET
1644 Q
1645 endstream
1646 endobj
1647 350 0 obj<</Type/Page/Parent 331 0 R/Contents 351 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
1648 351 0 obj<</Length 2890      >>stream
1649 q
1650 0.93 0.93 0.93 rg 0 0 612 792 re f
1651 1 0 0 1 36 36 cm
1652 0.00 0.00 0.00 rg 0.0 689.4 540.0 2.0 re f
1653 0.0 542.2 540.0 2.0 re f
1654 0.88 0.88 0.88 rg 0.0 207.2 540.0 143.6 re f
1655 0.00 0.00 0.00 rg 0.0 198.6 540.0 2.0 re f
1656 BT
1657 /F9 11 Tf 0 671.8 Td 0.000 Tc(4.2.5. Comment All Functions Thoroughly)Tj
1658 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1659 /F4 11 Tf 0 -26.4 Td(A reader of the code should be able to look at the comments just prior to the beginning of a function and discern the)Tj
1660 0 -13.2 Td(reason for its existence and the consequences of using it. The reader should not have to read through the code to determine)Tj
1661 0 -13.2 Td(if a given function is safe for a desired use. The proper information thoroughly presented at the introduction of a function)Tj
1662 0 -13.2 Td(not only saves time for subsequent maintenance or debugging, it more importantly aids in code reuse by allowing a user to)Tj
1663 0 -13.2 Td(determine the safety and applicability of any function for the problem at hand. As a result of such benefits, all functions)Tj
1664 0 -13.2 Td(should contain the information presented in the addendum section of this document.)Tj
1665 /F9 11 Tf 0 -28.4 Td(4.2.6. Comment at the end of braces if the content is more than one screen length)Tj
1666 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1667 /F4 11 Tf 0 -26.4 Td(Each closing brace should be followed on the same line by a comment that describes the origination of the brace if the)Tj
1668 0 -13.2 Td(original brace is off of the screen, or otherwise far away from the closing brace. This will simplify the debugging,)Tj
1669 0 -13.2 Td(maintenance, and readability of the code.)Tj
1670 0 -26.4 Td(As a suggestion , use the following flags to make the comment and its brace more readable:)Tj
1671 0 -26.4 Td(use following a closing brace: } /* -END- if\(\) or while \(\) or etc... */)Tj
1672 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1673 /F0 9 Tf 1.588 -25.988 Td(if \( 1 == X \))Tj
1674 0 -10.8 Td({)Tj
1675 0 -10.8 Td(   DoSomethingVeryImportant\(\);)Tj
1676 0 -10.8 Td(   ...some long list of commands...)Tj
1677 0 -10.8 Td(} /* -END- if x is 1 */)Tj
1678 0 -21.6 Td(or:)Tj
1679 0 -21.6 Td(if \( 1 == X \))Tj
1680 0 -10.8 Td({)Tj
1681 0 -10.8 Td(   DoSomethingVeryImportant\(\);)Tj
1682 0 -10.8 Td(   ...some long list of commands...)Tj
1683 0 -10.8 Td(} /* -END- if \( 1 == X \) */)Tj
1684 /F9 14 Tf -1.588 -32.588 Td(4.3. Naming Conventions)Tj
1685 /F9 11 Tf 0 -27 Td(4.3.1. Variable Names)Tj
1686 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1687 /F4 11 Tf 0 -26.4 Td(Use all lowercase, and separate words via an underscore \('_'\). Do not start an identifier with an underscore. \(ANSI C)Tj
1688 0 -13.2 Td(reserves these for use by the compiler and system headers.\) Do not use identifiers which are reserved in ANSI C++. \(E.g.)Tj
1689 0 -13.2 Td(template, class, true, false, ...\). This is in case we ever decide to port Privoxy to C++.)Tj
1690 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1691 /F8 11 Tf 0 674.577 Td(Privoxy Developer Manual)Tj
1692 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1693 -175.521 -720 Td(10/36)Tj
1694 ET
1695 Q
1696 endstream
1697 endobj
1698 352 0 obj<</Type/Page/Parent 331 0 R/Contents 353 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
1699 353 0 obj<</Length 2535      >>stream
1700 q
1701 0.93 0.93 0.93 rg 0 0 612 792 re f
1702 1 0 0 1 36 36 cm
1703 0.88 0.88 0.88 rg 0.0 684.0 540.0 14.0 re f
1704 0.0 630.4 540.0 14.0 re f
1705 0.00 0.00 0.00 rg 0.0 621.8 540.0 2.0 re f
1706 0.88 0.88 0.88 rg 0.0 469.3 540.0 14.0 re f
1707 0.0 404.9 540.0 24.8 re f
1708 0.00 0.00 0.00 rg 0.0 396.3 540.0 2.0 re f
1709 0.88 0.88 0.88 rg 0.0 246.1 540.0 24.8 re f
1710 0.0 170.9 540.0 35.6 re f
1711 0.00 0.00 0.00 rg 0.0 162.3 540.0 2.0 re f
1712 BT
1713 /F0 9 Tf 1.588 687.412 Td 0.000 Tc(int ms_iis5_hack = 0;)Tj
1714 /F6 11 Tf -1.588 -27.588 Td(Instead of:)Tj
1715 /F0 9 Tf 1.588 -25.988 Td(int msiis5hack = 0; int msIis5Hack = 0;)Tj
1716 /F9 11 Tf -1.588 -29.588 Td(4.3.2. Function Names)Tj
1717 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1718 /F4 11 Tf 0 -26.4 Td(Use all lowercase, and separate words via an underscore \('_'\). Do not start an identifier with an underscore. \(ANSI C)Tj
1719 0 -13.2 Td(reserves these for use by the compiler and system headers.\) Do not use identifiers which are reserved in ANSI C++. \(E.g.)Tj
1720 0 -13.2 Td(template, class, true, false, ...\). This is in case we ever decide to port Privoxy to C++.)Tj
1721 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1722 /F0 9 Tf 1.588 -25.988 Td(int load_some_file\( struct client_state *csp \))Tj
1723 /F6 11 Tf -1.588 -27.588 Td(Instead of:)Tj
1724 /F0 9 Tf 1.588 -25.988 Td(int loadsomefile\( struct client_state *csp \))Tj
1725 0 -10.8 Td(int loadSomeFile\( struct client_state *csp \))Tj
1726 /F9 11 Tf -1.588 -29.588 Td(4.3.3. Header file prototypes)Tj
1727 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1728 /F4 11 Tf 0 -26.4 Td(Use a descriptive parameter name in the function prototype in header files. Use the same parameter name in the header)Tj
1729 0 -13.2 Td(file that you use in the c file.)Tj
1730 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1731 /F0 9 Tf 1.588 -25.988 Td(\(.h\) extern int load_aclfile\( struct client_state *csp \);)Tj
1732 0 -10.8 Td(\(.c\) int load_aclfile\( struct client_state *csp \))Tj
1733 /F6 11 Tf -1.588 -27.588 Td(Instead of:)Tj
1734 /F0 9 Tf 1.588 -25.988 Td(\(.h\) extern int load_aclfile\( struct client_state * \); or )Tj
1735 0 -10.8 Td(\(.h\) extern int load_aclfile\(\); )Tj
1736 0 -10.8 Td(\(.c\) int load_aclfile\( struct client_state *csp \))Tj
1737 /F9 11 Tf -1.588 -29.588 Td(4.3.4. Enumerations, and #defines)Tj
1738 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1739 /F4 11 Tf 0 -26.4 Td(Use all capital letters, with underscores between words. Do not start an identifier with an underscore. \(ANSI C reserves)Tj
1740 0 -13.2 Td(these for use by the compiler and system headers.\))Tj
1741 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1742 /F8 11 Tf 0 667.659 Td(Privoxy Developer Manual)Tj
1743 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1744 -175.521 -720 Td(11/36)Tj
1745 ET
1746 Q
1747 endstream
1748 endobj
1749 354 0 obj<</Type/Page/Parent 331 0 R/Contents 355 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
1750 355 0 obj<</Length 2360      >>stream
1751 q
1752 0.93 0.93 0.93 rg 0 0 612 792 re f
1753 1 0 0 1 36 36 cm
1754 0.88 0.88 0.88 rg 0.0 673.2 540.0 24.8 re f
1755 0.0 536.8 540.0 57.2 re f
1756 0.00 0.00 0.00 rg 0.0 528.2 540.0 2.0 re f
1757 0.88 0.88 0.88 rg 0.0 349.3 540.0 14.0 re f
1758 0.0 252.5 540.0 57.2 re f
1759 0.00 0.00 0.00 rg 0.0 243.9 540.0 2.0 re f
1760 0.88 0.88 0.88 rg 0.0 42.1 540.0 46.4 re f
1761 BT
1762 0.00 0.00 0.00 rg /F0 9 Tf 1.588 687.412 Td 0.000 Tc(\(enumeration\) : enum Boolean { FALSE, TRUE };)Tj
1763 0 -10.8 Td(\(#define\) : #define DEFAULT_SIZE 100;)Tj
1764 /F6 11 Tf -1.588 -27.588 Td(Note:)Tj
1765 /F4 11 Tf ( We have a standard naming scheme for #defines that toggle a feature in the preprocessor: FEATURE_>, where > is)Tj
1766 0 -13.2 Td(a short \(preferably 1 or 2 word\) description.)Tj
1767 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1768 /F0 9 Tf 1.588 -25.988 Td(#define FEATURE_FORCE 1)Tj
1769 0 -21.6 Td(#ifdef FEATURE_FORCE)Tj
1770 0 -10.8 Td(#define FORCE_PREFIX blah)Tj
1771 0 -10.8 Td(#endif /* def FEATURE_FORCE */)Tj
1772 /F9 11 Tf -1.588 -29.588 Td(4.3.5. Constants)Tj
1773 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1774 /F4 11 Tf 0 -26.4 Td(Spell common words out entirely \(do not remove vowels\).)Tj
1775 0 -26.4 Td(Use only widely-known domain acronyms and abbreviations. Capitalize all letters of an acronym.)Tj
1776 0 -26.4 Td(Use underscore \(_\) to separate adjacent acronyms and abbreviations. Never terminate a name with an underscore.)Tj
1777 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1778 /F0 9 Tf 1.588 -25.988 Td(#define USE_IMAGE_LIST 1)Tj
1779 /F6 11 Tf -1.588 -27.588 Td(Instead of:)Tj
1780 /F0 9 Tf 1.588 -25.988 Td(#define USE_IMG_LST 1 or )Tj
1781 0 -10.8 Td(#define _USE_IMAGE_LIST 1 or)Tj
1782 0 -10.8 Td(#define USE_IMAGE_LIST_ 1 or )Tj
1783 0 -10.8 Td(#define use_image_list 1 or)Tj
1784 0 -10.8 Td(#define UseImageList 1)Tj
1785 /F9 14 Tf -1.588 -32.588 Td(4.4. Using Space)Tj
1786 /F9 11 Tf 0 -27 Td(4.4.1. Put braces on a line by themselves.)Tj
1787 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1788 /F4 11 Tf 0 -26.4 Td(The brace needs to be on a line all by itself, not at the end of the statement. Curly braces should line up with the construct)Tj
1789 0 -13.2 Td(that they're associated with. This practice makes it easier to identify the opening and closing braces for a block.)Tj
1790 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1791 /F0 9 Tf 1.588 -25.988 Td(if \( this == that \))Tj
1792 0 -10.8 Td({)Tj
1793 0 -10.8 Td(   ...)Tj
1794 0 -10.8 Td(})Tj
1795 /F8 11 Tf -1.588 674.494 Td(Privoxy Developer Manual)Tj
1796 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1797 -175.521 -720 Td(12/36)Tj
1798 ET
1799 Q
1800 endstream
1801 endobj
1802 356 0 obj<</Type/Page/Parent 331 0 R/Contents 357 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
1803 357 0 obj<</Length 2184      >>stream
1804 q
1805 0.93 0.93 0.93 rg 0 0 612 792 re f
1806 1 0 0 1 36 36 cm
1807 0.88 0.88 0.88 rg 0.0 421.2 540.0 78.8 re f
1808 0.00 0.00 0.00 rg 0.0 412.6 540.0 2.0 re f
1809 0.88 0.88 0.88 rg 0.0 230.0 540.0 57.2 re f
1810 0.00 0.00 0.00 rg 0.0 63.0 540.0 2.0 re f
1811 BT
1812 /F6 11 Tf 0 687 Td 0.000 Tc(Instead of:)Tj
1813 /F4 11 Tf 0 -26.4 Td(if \( this == that \) { ... })Tj
1814 0 -26.4 Td(or)Tj
1815 0 -26.4 Td(if \( this == that \) { ... })Tj
1816 /F6 11 Tf 0 -26.4 Td(Note:)Tj
1817 /F4 11 Tf ( 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)Tj
1818 0 -13.2 Td(from the purpose of the block, one-liners as above may optically preserve the loop structure and make it easier to read.)Tj
1819 /F6 11 Tf 0 -26.4 Td(Status:)Tj
1820 /F4 11 Tf ( developer-discretion.)Tj
1821 /F6 11 Tf 0 -26.4 Td(Example exception:)Tj
1822 /F0 9 Tf 1.588 -25.988 Td(while \( more lines are read \))Tj
1823 0 -10.8 Td({)Tj
1824 0 -10.8 Td(   /* Please document what is/is not a comment line here */)Tj
1825 0 -10.8 Td(   if \( it's a comment \) continue;)Tj
1826 0 -21.6 Td(   do_something\( line \);)Tj
1827 0 -10.8 Td(})Tj
1828 /F9 11 Tf -1.588 -29.588 Td(4.4.2. ALL control statements should have a block)Tj
1829 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1830 /F4 11 Tf 0 -26.4 Td(Using braces to make a block will make your code more readable and less prone to error. All control statements should)Tj
1831 0 -13.2 Td(have a block defined.)Tj
1832 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1833 /F0 9 Tf 1.588 -25.988 Td(if \( this == that \))Tj
1834 0 -10.8 Td({)Tj
1835 0 -10.8 Td(   DoSomething\(\);)Tj
1836 0 -10.8 Td(   DoSomethingElse\(\);)Tj
1837 0 -10.8 Td(})Tj
1838 /F6 11 Tf -1.588 -27.588 Td(Instead of:)Tj
1839 /F4 11 Tf 0 -26.4 Td(if \( this == that \) DoSomething\(\); DoSomethingElse\(\);)Tj
1840 0 -26.4 Td(or)Tj
1841 0 -26.4 Td(if \( this == that \) DoSomething\(\);)Tj
1842 /F6 11 Tf 0 -26.4 Td(Note:)Tj
1843 /F4 11 Tf ( The first example in "Instead of" will execute in a manner other than that which the developer desired \(per)Tj
1844 0 -13.2 Td(indentation\). Using code braces would have prevented this "feature". The "explanation" and "exception" from the point)Tj
1845 0 -13.2 Td(above also applies.)Tj
1846 /F8 11 Tf 0 646.153 Td(Privoxy Developer Manual)Tj
1847 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1848 -175.521 -720 Td(13/36)Tj
1849 ET
1850 Q
1851 endstream
1852 endobj
1853 358 0 obj<</Type/Page/Parent 331 0 R/Contents 359 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
1854 359 0 obj<</Length 2427      >>stream
1855 q
1856 0.93 0.93 0.93 rg 0 0 612 792 re f
1857 1 0 0 1 36 36 cm
1858 0.88 0.88 0.88 rg 0.0 631.2 540.0 14.0 re f
1859 0.00 0.00 0.00 rg 0.0 530.2 540.0 2.0 re f
1860 0.88 0.88 0.88 rg 0.0 328.4 540.0 89.6 re f
1861 0.00 0.00 0.00 rg 0.0 319.8 540.0 2.0 re f
1862 0.88 0.88 0.88 rg 0.0 132.5 540.0 35.6 re f
1863 0.00 0.00 0.00 rg 0.0 97.5 540.0 2.0 re f
1864 BT
1865 /F9 11 Tf 0 687 Td 0.000 Tc(4.4.3. Do not belabor/blow-up boolean expressions)Tj
1866 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1867 /F0 9 Tf 1.588 -25.988 Td(structure->flag = \( condition \);)Tj
1868 /F6 11 Tf -1.588 -27.588 Td(Instead of:)Tj
1869 /F4 11 Tf 0 -26.4 Td(if \( condition \) { structure->flag = 1; } else { structure->flag = 0; })Tj
1870 /F6 11 Tf 0 -26.4 Td(Note:)Tj
1871 /F4 11 Tf ( The former is readable and concise. The later is wordy and inefficient. Please assume that any developer new to the)Tj
1872 0 -13.2 Td(project has at least a "good" knowledge of C/C++. \(Hope I do not offend by that last comment ... 8-\))Tj
1873 /F9 11 Tf 0 -28.4 Td(4.4.4. Use white space freely because it is free)Tj
1874 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1875 /F4 11 Tf 0 -26.4 Td(Make it readable. The notable exception to using white space freely is listed in the next guideline.)Tj
1876 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1877 /F0 9 Tf 1.588 -25.988 Td(int firstValue   = 0;)Tj
1878 0 -10.8 Td(int someValue    = 0;)Tj
1879 0 -10.8 Td(int anotherValue = 0;)Tj
1880 0 -10.8 Td(int thisVariable = 0;)Tj
1881 0 -21.6 Td(if \( thisVariable == thatVariable \))Tj
1882 0 -21.6 Td(firstValue = oldValue + \( \( someValue - anotherValue \) - whatever \))Tj
1883 /F9 11 Tf -1.588 -29.588 Td(4.4.5. Don't use white space around structure operators)Tj
1884 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1885 /F4 11 Tf 0 -26.4 Td(- structure pointer operator \( "->" \) - member operator \( "." \) - functions and parentheses)Tj
1886 0 -26.4 Td(It is a general coding practice to put pointers, references, and function parentheses next to names. With spaces, the)Tj
1887 0 -13.2 Td(connection between the object and variable/function name is not as clear.)Tj
1888 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1889 /F0 9 Tf 1.588 -25.988 Td(aStruct->aMember;)Tj
1890 0 -10.8 Td(aStruct.aMember;)Tj
1891 0 -10.8 Td(FunctionName\(\);)Tj
1892 /F6 11 Tf -1.588 -27.588 Td(Instead of:)Tj
1893 /F4 11 Tf ( aStruct -> aMember; aStruct . aMember; FunctionName \(\);)Tj
1894 /F9 11 Tf 0 -28.4 Td(4.4.6. Make the last brace of a function stand out)Tj
1895 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1896 /F8 11 Tf 0 666.53 Td(Privoxy Developer Manual)Tj
1897 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1898 -175.521 -720 Td(14/36)Tj
1899 ET
1900 Q
1901 endstream
1902 endobj
1903 360 0 obj<</Type/Page/Parent 331 0 R/Contents 361 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
1904 361 0 obj<</Length 2250      >>stream
1905 q
1906 0.93 0.93 0.93 rg 0 0 612 792 re f
1907 1 0 0 1 36 36 cm
1908 0.88 0.88 0.88 rg 0.0 576.0 540.0 122.0 re f
1909 0.00 0.00 0.00 rg 0.0 435.4 540.0 2.0 re f
1910 0.88 0.88 0.88 rg 0.0 77.6 540.0 219.2 re f
1911 0.00 0.00 0.00 rg 0.0 69.0 540.0 2.0 re f
1912 BT
1913 /F0 9 Tf 1.588 687.412 Td 0.000 Tc(int function1\( ... \))Tj
1914 0 -10.8 Td({)Tj
1915 0 -10.8 Td(   ...code...)Tj
1916 0 -10.8 Td(   return\( retCode \);)Tj
1917 0 -21.6 Td(}   /* -END- function1 */)Tj
1918 0 -32.4 Td(int function2\( ... \))Tj
1919 0 -10.8 Td({)Tj
1920 0 -10.8 Td(}   /* -END- function2 */)Tj
1921 /F6 11 Tf -1.588 -27.588 Td(Instead of:)Tj
1922 /F4 11 Tf 0 -26.4 Td(int function1\( ... \) { ...code... return\( retCode \); } int function2\( ... \) { })Tj
1923 /F6 11 Tf 0 -26.4 Td(Note:)Tj
1924 /F4 11 Tf ( Use 1 blank line before the closing brace and 2 lines afterward. This makes the end of function standout to the most)Tj
1925 0 -13.2 Td(casual viewer. Although function comments help separate functions, this is still a good coding practice. In fact, I follow)Tj
1926 0 -13.2 Td(these rules when using blocks in "for", "while", "do" loops, and long if {} statements too. After all whitespace is free!)Tj
1927 /F6 11 Tf 0 -26.4 Td(Status:)Tj
1928 /F4 11 Tf ( developer-discretion on the number of blank lines. Enforced is the end of function comments.)Tj
1929 /F9 11 Tf 0 -28.4 Td(4.4.7. Use 3 character indentions)Tj
1930 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1931 /F4 11 Tf 0 -26.4 Td(If some use 8 character TABs and some use 3 character TABs, the code can look *very* ragged. So use 3 character)Tj
1932 0 -13.2 Td(indentions only. If you like to use TABs, pass your code through a filter such as "expand -t3" before checking in your)Tj
1933 0 -13.2 Td(code.)Tj
1934 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1935 /F0 9 Tf 1.588 -25.988 Td(static const char * const url_code_map[256] =)Tj
1936 0 -10.8 Td({)Tj
1937 0 -10.8 Td(   NULL, ...)Tj
1938 0 -10.8 Td(};)Tj
1939 0 -32.4 Td(int function1\( ... \))Tj
1940 0 -10.8 Td({)Tj
1941 0 -10.8 Td(   if \( 1 \))Tj
1942 0 -10.8 Td(   {)Tj
1943 0 -10.8 Td(      return\( ALWAYS_TRUE \);)Tj
1944 0 -10.8 Td(   })Tj
1945 0 -10.8 Td(   else)Tj
1946 0 -10.8 Td(   {)Tj
1947 0 -10.8 Td(      return\( HOW_DID_YOU_GET_HERE \);)Tj
1948 0 -10.8 Td(   })Tj
1949 0 -21.6 Td(   return\( NEVER_GETS_HERE \);)Tj
1950 0 -21.6 Td(})Tj
1951 /F8 11 Tf -1.588 638.965 Td(Privoxy Developer Manual)Tj
1952 431.76 0 Td(08/06/02 10:11:29 PM)Tj
1953 -175.521 -720 Td(15/36)Tj
1954 ET
1955 Q
1956 endstream
1957 endobj
1958 362 0 obj<</Type/Page/Parent 331 0 R/Contents 363 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
1959 363 0 obj<</Length 2543      >>stream
1960 q
1961 0.93 0.93 0.93 rg 0 0 612 792 re f
1962 1 0 0 1 36 36 cm
1963 0.88 0.88 0.88 rg 0.0 513.6 540.0 35.6 re f
1964 0.00 0.00 0.00 rg 0.0 439.0 540.0 2.0 re f
1965 0.88 0.88 0.88 rg 0.0 261.2 540.0 35.6 re f
1966 0.00 0.00 0.00 rg 0.0 252.6 540.0 2.0 re f
1967 0.0 158.2 540.0 2.0 re f
1968 0.88 0.88 0.88 rg 0.0 22.0 540.0 24.0 re f
1969 BT
1970 0.00 0.00 0.00 rg /F9 14 Tf 0 684 Td 0.000 Tc(4.5. Initializing)Tj
1971 /F9 11 Tf 0 -27 Td(4.5.1. Initialize all variables)Tj
1972 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1973 /F4 11 Tf 0 -26.4 Td(Do not assume that the variables declared will not be used until after they have been assigned a value somewhere else in)Tj
1974 0 -13.2 Td(the code. Remove the chance of accidentally using an unassigned variable.)Tj
1975 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1976 /F0 9 Tf 1.588 -25.988 Td(short anShort = 0;)Tj
1977 0 -10.8 Td(float aFloat  = 0;)Tj
1978 0 -10.8 Td(struct *ptr = NULL;)Tj
1979 /F6 11 Tf -1.588 -27.588 Td(Note:)Tj
1980 /F4 11 Tf ( It is much easier to debug a SIGSEGV if the message says you are trying to access memory address 00000000 and)Tj
1981 0 -13.2 Td(not 129FA012; or arrayPtr[20] causes a SIGSEV vs. arrayPtr[0].)Tj
1982 /F6 11 Tf 0 -26.4 Td(Status:)Tj
1983 /F4 11 Tf ( developer-discretion if and only if the variable is assigned a value "shortly after" declaration.)Tj
1984 /F9 14 Tf 0 -31.4 Td(4.6. Functions)Tj
1985 /F9 11 Tf 0 -27 Td(4.6.1. Name functions that return a boolean as a question.)Tj
1986 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1987 /F4 11 Tf 0 -26.4 Td(Value should be phrased as a question that would logically be answered as a true or false statement)Tj
1988 /F6 11 Tf 0 -26.4 Td(Example:)Tj
1989 /F0 9 Tf 1.588 -25.988 Td(ShouldWeBlockThis\(\);)Tj
1990 0 -10.8 Td(ContainsAnImage\(\);)Tj
1991 0 -10.8 Td(IsWebPageBlank\(\);)Tj
1992 /F9 11 Tf -1.588 -29.588 Td(4.6.2. Always specify a return type for a function.)Tj
1993 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1994 /F4 11 Tf 0 -26.4 Td(The default return for a function is an int. To avoid ambiguity, create a return for a function when the return has a)Tj
1995 0 -13.2 Td(purpose, and create a void return type if the function does not need to return anything.)Tj
1996 /F9 11 Tf 0 -28.4 Td(4.6.3. Minimize function calls when iterating by using variables)Tj
1997 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
1998 /F4 11 Tf 0 -26.4 Td(It is easy to write the following code, and a clear argument can be made that the code is easy to understand:)Tj
1999 /F6 11 Tf 0 -26.4 Td(Example:)Tj
2000 /F0 9 Tf 1.588 -25.988 Td(for \( size_t cnt = 0; cnt < blockListLength\(\); cnt ++ \))Tj
2001 0 -10.8 Td({)Tj
2002 /F8 11 Tf -1.588 695.341 Td(Privoxy Developer Manual)Tj
2003 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2004 -175.521 -720 Td(16/36)Tj
2005 ET
2006 Q
2007 endstream
2008 endobj
2009 364 0 obj<</Type/Page/Parent 331 0 R/Contents 365 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
2010 365 0 obj<</Length 3160      >>stream
2011 q
2012 0.93 0.93 0.93 rg 0 0 612 792 re f
2013 1 0 0 1 36 36 cm
2014 0.88 0.88 0.88 rg 0.0 673.2 540.0 24.8 re f
2015 0.0 460.0 540.0 68.0 re f
2016 0.00 0.00 0.00 rg 0.0 411.8 540.0 2.0 re f
2017 0.0 264.6 540.0 2.0 re f
2018 0.0 130.6 540.0 2.0 re f
2019 BT
2020 /F0 9 Tf 1.588 687.412 Td 0.000 Tc(   ....)Tj
2021 0 -10.8 Td(})Tj
2022 /F6 11 Tf -1.588 -27.588 Td(Note:)Tj
2023 /F4 11 Tf ( Unfortunately, this makes a function call for each and every iteration. This increases the overhead in the program,)Tj
2024 0 -13.2 Td(because the compiler has to look up the function each time, call it, and return a value. Depending on what occurs in the)Tj
2025 0 -13.2 Td(blockListLength\(\) call, it might even be creating and destroying structures with each iteration, even though in each case it)Tj
2026 0 -13.2 Td(is comparing "cnt" to the same value, over and over. Remember too - even a call to blockListLength\(\) is a function call,)Tj
2027 0 -13.2 Td(with the same overhead.)Tj
2028 0 -26.4 Td(Instead of using a function call during the iterations, assign the value to a variable, and evaluate using the variable.)Tj
2029 /F6 11 Tf 0 -26.4 Td(Example:)Tj
2030 /F0 9 Tf 1.588 -25.988 Td(size_t len = blockListLength\(\);)Tj
2031 0 -21.6 Td(for \( size_t cnt = 0; cnt < len; cnt ++ \))Tj
2032 0 -10.8 Td({)Tj
2033 0 -10.8 Td(   ....)Tj
2034 0 -10.8 Td(})Tj
2035 /F6 11 Tf -1.588 -27.588 Td(Exceptions:)Tj
2036 /F4 11 Tf ( if the value of blockListLength\(\) *may* change or could *potentially* change, then you must code the)Tj
2037 0 -13.2 Td(function call in the for/while loop.)Tj
2038 /F9 11 Tf 0 -28.4 Td(4.6.4. Pass and Return by Const Reference)Tj
2039 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2040 /F4 11 Tf 0 -26.4 Td(This allows a developer to define a const pointer and call your function. If your function does not have the const keyword,)Tj
2041 0 -13.2 Td(we may not be able to use your function. Consider strcmp, if it were defined as: extern int strcmp\( char *s1, char *s2 \);)Tj
2042 0 -26.4 Td(I could then not use it to compare argv's in main: int main\( int argc, const char *argv[] \) { strcmp\( argv[0], "privoxy" \); })Tj
2043 0 -26.4 Td(Both these pointers are *const*! If the c runtime library maintainers do it, we should too.)Tj
2044 /F9 11 Tf 0 -28.4 Td(4.6.5. Pass and Return by Value)Tj
2045 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2046 /F4 11 Tf 0 -26.4 Td(Most structures cannot fit onto a normal stack entry \(i.e. they are not 4 bytes or less\). Aka, a function declaration like: int)Tj
2047 0 -13.2 Td(load_aclfile\( struct client_state csp \))Tj
2048 0 -26.4 Td(would not work. So, to be consistent, we should declare all prototypes with "pass by value": int load_aclfile\( struct)Tj
2049 0 -13.2 Td(client_state *csp \))Tj
2050 /F9 11 Tf 0 -28.4 Td(4.6.6. Names of include files)Tj
2051 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2052 /F4 11 Tf 0 -26.4 Td(Your include statements should contain the file name without a path. The path should be listed in the Makefile, using -I as)Tj
2053 0 -13.2 Td(processor directive to search the indicated paths. An exception to this would be for some proprietary software that utilizes)Tj
2054 0 -13.2 Td(a partial path to distinguish their header files from system or other header files.)Tj
2055 /F8 11 Tf 0 686.153 Td(Privoxy Developer Manual)Tj
2056 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2057 -175.521 -720 Td(17/36)Tj
2058 ET
2059 Q
2060 endstream
2061 endobj
2062 366 0 obj<</Type/Page/Parent 331 0 R/Contents 367 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
2063 367 0 obj<</Length 2264      >>stream
2064 q
2065 0.93 0.93 0.93 rg 0 0 612 792 re f
2066 1 0 0 1 36 36 cm
2067 0.88 0.88 0.88 rg 0.0 646.8 540.0 24.8 re f
2068 0.0 582.4 540.0 24.8 re f
2069 0.00 0.00 0.00 rg 0.0 534.2 540.0 2.0 re f
2070 0.88 0.88 0.88 rg 0.0 336.1 540.0 46.4 re f
2071 0.00 0.00 0.00 rg 0.0 327.5 540.0 2.0 re f
2072 0.88 0.88 0.88 rg 0.0 90.9 540.0 111.2 re f
2073 0.00 0.00 0.00 rg 0.0 82.3 540.0 2.0 re f
2074 BT
2075 /F6 11 Tf 0 687 Td 0.000 Tc(Example:)Tj
2076 /F0 9 Tf 1.588 -25.988 Td(#include <iostream.h>     /* This is not a local include */)Tj
2077 0 -10.8 Td(#include "config.h"       /* This IS a local include */)Tj
2078 /F6 11 Tf -1.588 -27.588 Td(Exception:)Tj
2079 /F0 9 Tf 1.588 -25.988 Td(/* This is not a local include, but requires a path element. */ )Tj
2080 0 -10.8 Td(#include <sys/fileName.h>)Tj
2081 /F6 11 Tf -1.588 -27.588 Td(Note:)Tj
2082 /F4 11 Tf ( Please! do not add "-I." to the Makefile without a _very_ good reason. This duplicates the #include "file.h")Tj
2083 0 -13.2 Td(behavior.)Tj
2084 /F9 11 Tf 0 -28.4 Td(4.6.7. Provide multiple inclusion protection)Tj
2085 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2086 /F4 11 Tf 0 -26.4 Td(Prevents compiler and linker errors resulting from redefinition of items.)Tj
2087 0 -26.4 Td(Wrap each header file with the following syntax to prevent multiple inclusions of the file. Of course, replace)Tj
2088 0 -13.2 Td(PROJECT_H with your file name, with "." Changed to "_", and make it uppercase.)Tj
2089 /F6 11 Tf 0 -26.4 Td(Example:)Tj
2090 /F0 9 Tf 1.588 -25.988 Td(#ifndef PROJECT_H_INCLUDED)Tj
2091 0 -10.8 Td(#define PROJECT_H_INCLUDED)Tj
2092 0 -10.8 Td( ...)Tj
2093 0 -10.8 Td(#endif /* ndef PROJECT_H_INCLUDED */)Tj
2094 /F9 11 Tf -1.588 -29.588 Td(4.6.8. Use `extern "C"` when appropriate)Tj
2095 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2096 /F4 11 Tf 0 -26.4 Td(If our headers are included from C++, they must declare our functions as `extern "C"`. This has no cost in C, but increases)Tj
2097 0 -13.2 Td(the potential re-usability of our code.)Tj
2098 /F6 11 Tf 0 -26.4 Td(Example:)Tj
2099 /F0 9 Tf 1.588 -25.988 Td(#ifdef __cplusplus)Tj
2100 0 -10.8 Td(extern "C")Tj
2101 0 -10.8 Td({)Tj
2102 0 -10.8 Td(#endif /* def __cplusplus */)Tj
2103 0 -21.6 Td(... function definitions here ...)Tj
2104 0 -21.6 Td(#ifdef __cplusplus)Tj
2105 0 -10.8 Td(})Tj
2106 0 -10.8 Td(#endif /* def __cplusplus */)Tj
2107 /F8 11 Tf -1.588 625.718 Td(Privoxy Developer Manual)Tj
2108 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2109 -175.521 -720 Td(18/36)Tj
2110 ET
2111 Q
2112 endstream
2113 endobj
2114 368 0 obj<</Type/Page/Parent 331 0 R/Contents 369 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
2115 369 0 obj<</Length 2601      >>stream
2116 q
2117 0.93 0.93 0.93 rg 0 0 612 792 re f
2118 1 0 0 1 36 36 cm
2119 0.88 0.88 0.88 rg 0.0 535.2 540.0 57.2 re f
2120 0.00 0.00 0.00 rg 0.0 460.6 540.0 2.0 re f
2121 0.0 336.2 540.0 2.0 re f
2122 0.88 0.88 0.88 rg 0.0 34.8 540.0 176.0 re f
2123 BT
2124 0.00 0.00 0.00 rg /F9 11 Tf 0 687 Td 0.000 Tc(4.6.9. Where Possible, Use Forward Struct Declaration Instead of Includes)Tj
2125 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2126 /F4 11 Tf 0 -26.4 Td(Useful in headers that include pointers to other struct's. Modifications to excess header files may cause needless compiles.)Tj
2127 /F6 11 Tf 0 -26.4 Td(Example:)Tj
2128 /F0 9 Tf 1.588 -25.988 Td(/*********************************************************************)Tj
2129 0 -10.8 Td( * We're avoiding an include statement here!)Tj
2130 0 -10.8 Td( *********************************************************************/)Tj
2131 0 -10.8 Td(struct file_list;)Tj
2132 0 -10.8 Td(extern file_list *xyz;)Tj
2133 /F6 11 Tf -1.588 -27.588 Td(Note:)Tj
2134 /F4 11 Tf ( If you declare "file_list xyz;" \(without the pointer\), then including the proper header file is necessary. If you only)Tj
2135 0 -13.2 Td(want to prototype a pointer, however, the header file is unnecessary.)Tj
2136 /F6 11 Tf 0 -26.4 Td(Status:)Tj
2137 /F4 11 Tf ( Use with discretion.)Tj
2138 /F9 14 Tf 0 -31.4 Td(4.7. General Coding Practices)Tj
2139 /F9 11 Tf 0 -27 Td(4.7.1. Turn on warnings)Tj
2140 /F6 11 Tf 0 -26.4 Td(Explanation)Tj
2141 /F4 11 Tf 0 -26.4 Td(Compiler warnings are meant to help you find bugs. You should turn on as many as possible. With GCC, the switch is)Tj
2142 0 -13.2 Td("-Wall". Try and fix as many warnings as possible.)Tj
2143 /F9 11 Tf 0 -28.4 Td(4.7.2. Provide a default case for all switch statements)Tj
2144 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2145 /F4 11 Tf 0 -26.4 Td(What you think is guaranteed is never really guaranteed. The value that you don't think you need to check is the one that)Tj
2146 0 -13.2 Td(someday will be passed. So, to protect yourself from the unknown, always have a default step in a switch statement.)Tj
2147 /F6 11 Tf 0 -26.4 Td(Example:)Tj
2148 /F0 9 Tf 1.588 -25.988 Td(switch\( hash_string\( cmd \) \))Tj
2149 0 -10.8 Td({)Tj
2150 0 -10.8 Td(   case hash_actions_file :)Tj
2151 0 -10.8 Td(      ... code ...)Tj
2152 0 -10.8 Td(      break;)Tj
2153 0 -21.6 Td(   case hash_confdir :)Tj
2154 0 -10.8 Td(      ... code ...)Tj
2155 0 -10.8 Td(      break;)Tj
2156 0 -21.6 Td(   default :)Tj
2157 0 -10.8 Td(      log_error\( ... \);)Tj
2158 0 -10.8 Td(      ... anomaly code goes here ...)Tj
2159 0 -10.8 Td(      continue; / break; / exit\( 1 \); / etc ...)Tj
2160 0 -21.6 Td(} /* end switch\( hash_string\( cmd \) \) */)Tj
2161 /F8 11 Tf -1.588 681.765 Td(Privoxy Developer Manual)Tj
2162 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2163 -175.521 -720 Td(19/36)Tj
2164 ET
2165 Q
2166 endstream
2167 endobj
2168 370 0 obj<</Type/Page/Parent 331 0 R/Contents 371 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
2169 371 0 obj<</Length 3242      >>stream
2170 q
2171 0.93 0.93 0.93 rg 0 0 612 792 re f
2172 1 0 0 1 36 36 cm
2173 0.00 0.00 0.00 rg 0.0 597.0 540.0 2.0 re f
2174 0.0 397.0 540.0 2.0 re f
2175 0.0 263.0 540.0 2.0 re f
2176 0.0 155.4 540.0 2.0 re f
2177 0.88 0.88 0.88 rg 0.0 22.0 540.0 21.2 re f
2178 BT
2179 0.00 0.00 0.00 rg /F6 11 Tf 0 687 Td 0.000 Tc(Note:)Tj
2180 /F4 11 Tf ( If you already have a default condition, you are obviously exempt from this point. Of note, most of the WIN32 code)Tj
2181 0 -13.2 Td(calls `DefWindowProc' after the switch statement. This API call *should* be included in a default statement.)Tj
2182 /F6 11 Tf 0 -26.4 Td(Another Note:)Tj
2183 /F4 11 Tf ( This is not so much a readability issue as a robust programming issue. The "anomaly code goes here" may)Tj
2184 0 -13.2 Td(be no more than a print to the STDERR stream \(as in load_config\). Or it may really be an ABEND condition.)Tj
2185 /F6 11 Tf 0 -26.4 Td(Status:)Tj
2186 /F4 11 Tf ( Programmer discretion is advised.)Tj
2187 /F9 11 Tf 0 -28.4 Td(4.7.3. Try to avoid falling through cases in a switch statement.)Tj
2188 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2189 /F4 11 Tf 0 -26.4 Td(In general, you will want to have a 'break' statement within each 'case' of a switch statement. This allows for the code to)Tj
2190 0 -13.2 Td(be more readable and understandable, and furthermore can prevent unwanted surprises if someone else later gets creative)Tj
2191 0 -13.2 Td(and moves the code around.)Tj
2192 0 -26.4 Td(The language allows you to plan the fall through from one case statement to another simply by omitting the break)Tj
2193 0 -13.2 Td(statement within the case statement. This feature does have benefits, but should only be used in rare cases. In general, use)Tj
2194 0 -13.2 Td(a break statement for each case statement.)Tj
2195 0 -26.4 Td(If you choose to allow fall through, you should comment both the fact of the fall through and reason why you felt it was)Tj
2196 0 -13.2 Td(necessary.)Tj
2197 /F9 11 Tf 0 -28.4 Td(4.7.4. Use 'long' or 'short' Instead of 'int')Tj
2198 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2199 /F4 11 Tf 0 -26.4 Td(On 32-bit platforms, int usually has the range of long. On 16-bit platforms, int has the range of short.)Tj
2200 /F6 11 Tf 0 -26.4 Td(Status:)Tj
2201 /F4 11 Tf ( open-to-debate. In the case of most FSF projects \(including X/GNU-Emacs\), there are typedefs to int4, int8,)Tj
2202 0 -13.2 Td(int16, \(or equivalence ... I forget the exact typedefs now\). Should we add these to IJB now that we have a "configure")Tj
2203 0 -13.2 Td(script?)Tj
2204 /F9 11 Tf 0 -28.4 Td(4.7.5. Don't mix size_t and other types)Tj
2205 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2206 /F4 11 Tf 0 -26.4 Td(The type of size_t varies across platforms. Do not make assumptions about whether it is signed or unsigned, or about how)Tj
2207 0 -13.2 Td(long it is. Do not compare a size_t against another variable of a different type \(or even against a constant\) without casting)Tj
2208 0 -13.2 Td(one of the values. Try to avoid using size_t if you can.)Tj
2209 /F9 11 Tf 0 -28.4 Td(4.7.6. Declare each variable and struct on its own line.)Tj
2210 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2211 /F4 11 Tf 0 -26.4 Td(It can be tempting to declare a series of variables all on one line. Don't.)Tj
2212 /F6 11 Tf 0 -26.4 Td(Example:)Tj
2213 /F0 9 Tf 1.588 -25.988 Td(long a = 0;)Tj
2214 /F8 11 Tf -1.588 687.389 Td(Privoxy Developer Manual)Tj
2215 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2216 -175.521 -720 Td(20/36)Tj
2217 ET
2218 Q
2219 endstream
2220 endobj
2221 372 0 obj<</Type/Page/Parent 331 0 R/Contents 373 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
2222 373 0 obj<</Length 2944      >>stream
2223 q
2224 0.93 0.93 0.93 rg 0 0 612 792 re f
2225 1 0 0 1 36 36 cm
2226 0.88 0.88 0.88 rg 0.0 673.2 540.0 24.8 re f
2227 0.00 0.00 0.00 rg 0.0 506.2 540.0 2.0 re f
2228 0.88 0.88 0.88 rg 0.0 342.8 540.0 24.8 re f
2229 0.00 0.00 0.00 rg 0.0 334.2 540.0 2.0 re f
2230 0.88 0.88 0.88 rg 0.0 157.7 540.0 24.8 re f
2231 0.00 0.00 0.00 rg 0.0 56.7 540.0 2.0 re f
2232 BT
2233 /F0 9 Tf 1.588 687.412 Td 0.000 Tc(long b = 0;)Tj
2234 0 -10.8 Td(long c = 0;)Tj
2235 /F6 11 Tf -1.588 -27.588 Td(Instead of:)Tj
2236 /F4 11 Tf 0 -26.4 Td(long a, b, c;)Tj
2237 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2238 /F4 11 Tf ( - there is more room for comments on the individual variables - easier to add new variables without)Tj
2239 0 -13.2 Td(messing up the original ones - when searching on a variable to find its type, there is less clutter to "visually" eliminate)Tj
2240 /F6 11 Tf 0 -26.4 Td(Exceptions:)Tj
2241 /F4 11 Tf ( when you want to declare a bunch of loop variables or other trivial variables; feel free to declare them on 1)Tj
2242 0 -13.2 Td(line. You should, although, provide a good comment on their functions.)Tj
2243 /F6 11 Tf 0 -26.4 Td(Status:)Tj
2244 /F4 11 Tf ( developer-discretion.)Tj
2245 /F9 11 Tf 0 -28.4 Td(4.7.7. Use malloc/zalloc sparingly)Tj
2246 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2247 /F4 11 Tf 0 -26.4 Td(Create a local struct \(on the stack\) if the variable will live and die within the context of one function call.)Tj
2248 0 -26.4 Td(Only "malloc" a struct \(on the heap\) if the variable's life will extend beyond the context of one function call.)Tj
2249 /F6 11 Tf 0 -26.4 Td(Example:)Tj
2250 /F0 9 Tf 1.588 -25.988 Td(If a function creates a struct and stores a pointer to it in a)Tj
2251 0 -10.8 Td(list, then it should definitely be allocated via `malloc'.)Tj
2252 /F9 11 Tf -1.588 -29.588 Td(4.7.8. The Programmer Who Uses 'malloc' is Responsible for Ensuring 'free')Tj
2253 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2254 /F4 11 Tf 0 -26.4 Td(If you have to "malloc" an instance, you are responsible for insuring that the instance is `free'd, even if the deallocation)Tj
2255 0 -13.2 Td(event falls within some other programmer's code. You are also responsible for ensuring that deletion is timely \(i.e. not too)Tj
2256 0 -13.2 Td(soon, not too late\). This is known as "low-coupling" and is a "good thing \(tm\)". You may need to offer a)Tj
2257 0 -13.2 Td(free/unload/destructor type function to accommodate this.)Tj
2258 /F6 11 Tf 0 -26.4 Td(Example:)Tj
2259 /F0 9 Tf 1.588 -25.988 Td(int load_re_filterfile\( struct client_state *csp \) { ... })Tj
2260 0 -10.8 Td(static void unload_re_filterfile\( void *f \) { ... })Tj
2261 /F6 11 Tf -1.588 -27.588 Td(Exceptions:)Tj
2262 /F4 11 Tf 0 -26.4 Td(The developer cannot be expected to provide `free'ing functions for C run-time library functions ... such as `strdup'.)Tj
2263 /F6 11 Tf 0 -26.4 Td(Status:)Tj
2264 /F4 11 Tf ( developer-discretion. The "main" use of this standard is for allocating and freeing data structures \(complex or)Tj
2265 0 -13.2 Td(nested\).)Tj
2266 /F8 11 Tf 0 652.53 Td(Privoxy Developer Manual)Tj
2267 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2268 -175.521 -720 Td(21/36)Tj
2269 ET
2270 Q
2271 endstream
2272 endobj
2273 374 0 obj<</Type/Page/Parent 331 0 R/Contents 375 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
2274 375 0 obj<</Length 3070      >>stream
2275 q
2276 0.93 0.93 0.93 rg 0 0 612 792 re f
2277 1 0 0 1 36 36 cm
2278 0.00 0.00 0.00 rg 0.0 570.6 540.0 2.0 re f
2279 0.0 291.4 540.0 2.0 re f
2280 0.88 0.88 0.88 rg 0.0 22.0 549.6 206.4 re f
2281 BT
2282 0.00 0.00 0.00 rg /F9 11 Tf 0 687 Td 0.000 Tc(4.7.9. Add loaders to the `file_list' structure and in order)Tj
2283 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2284 /F4 11 Tf 0 -26.4 Td(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)Tj
2285 0 -13.2 Td(certain order.)Tj
2286 /F6 11 Tf 0 -26.4 Td(Note:)Tj
2287 /F4 11 Tf ( It may appear that the alpha order is broken in places by POPUP tests coming before PCRS tests. But since)Tj
2288 0 -13.2 Td(POPUPs can also be referred to as KILLPOPUPs, it is clear that it should come first.)Tj
2289 /F9 11 Tf 0 -28.4 Td(4.7.10. "Uncertain" new code and/or changes to existing code, use FIXME)Tj
2290 /F6 11 Tf 0 -26.4 Td(Explanation:)Tj
2291 /F4 11 Tf 0 -26.4 Td(If you have enough confidence in new code or confidence in your changes, but are not *quite* sure of the repercussions,)Tj
2292 0 -13.2 Td(add this:)Tj
2293 0 -26.4 Td(/* FIXME: this code has a logic error on platform XYZ, * attempting to fix */ #ifdef PLATFORM ...changed code here...)Tj
2294 0 -13.2 Td(#endif)Tj
2295 0 -26.4 Td(or:)Tj
2296 0 -26.4 Td(/* FIXME: I think the original author really meant this... */ ...changed code here...)Tj
2297 0 -26.4 Td(or:)Tj
2298 0 -26.4 Td(/* FIXME: new code that *may* break something else... */ ...new code here...)Tj
2299 /F6 11 Tf 0 -26.4 Td(Note:)Tj
2300 /F4 11 Tf ( 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)Tj
2301 0 -13.2 Td(project \(or conversely exclude from the project\).)Tj
2302 /F9 14 Tf 0 -31.4 Td(4.8. Addendum: Template for files and function comment blocks:)Tj
2303 /F6 11 Tf 0 -27 Td(Example for file comments:)Tj
2304 /F0 9 Tf 1.588 -25.988 Td(const char FILENAME_rcs[] = "$Id: developer-manual.sgml,v 1.46.2.4 2002/05/29 00:30:59 mal0rd Exp $";)Tj
2305 0 -10.8 Td(/*********************************************************************)Tj
2306 0 -10.8 Td( *)Tj
2307 0 -10.8 Td( * File        :  $Source$)Tj
2308 0 -10.8 Td( *)Tj
2309 0 -10.8 Td( * Purpose     :  \(Fill me in with a good description!\))Tj
2310 0 -10.8 Td( *)Tj
2311 0 -10.8 Td( * Copyright   :  Written by and Copyright \(C\) 2001 the SourceForge)Tj
2312 0 -10.8 Td( *                Privoxy team. http://www.privoxy.org/)Tj
2313 0 -10.8 Td( *)Tj
2314 0 -10.8 Td( *                Based on the Internet Junkbuster originally written)Tj
2315 0 -10.8 Td( *                by and Copyright \(C\) 1997 Anonymous Coders and)Tj
2316 0 -10.8 Td( *                Junkbusters Corporation.  http://www.junkbusters.com)Tj
2317 0 -10.8 Td( *)Tj
2318 0 -10.8 Td( *                This program is free software; you can redistribute it)Tj
2319 0 -10.8 Td( *                and/or modify it under the terms of the GNU General)Tj
2320 0 -10.8 Td( *                Public License as published by the Free Software)Tj
2321 0 -10.8 Td( *                Foundation; either version 2 of the License, or \(at)Tj
2322 /F8 11 Tf -1.588 685.789 Td(Privoxy Developer Manual)Tj
2323 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2324 -175.521 -720 Td(22/36)Tj
2325 ET
2326 Q
2327 endstream
2328 endobj
2329 376 0 obj<</Type/Page/Parent 331 0 R/Contents 377 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R>>/XObject<<>>>>>>endobj
2330 377 0 obj<</Length 3802      >>stream
2331 q
2332 0.93 0.93 0.93 rg 0 0 612 792 re f
2333 1 0 0 1 36 36 cm
2334 0.88 0.88 0.88 rg 0.0 424.8 549.6 273.2 re f
2335 0.0 22.0 540.0 284.0 re f
2336 BT
2337 0.00 0.00 0.00 rg /F0 9 Tf 1.588 687.412 Td 0.000 Tc( *                your option\) any later version.)Tj
2338 0 -10.8 Td( *)Tj
2339 0 -10.8 Td( *                This program is distributed in the hope that it will)Tj
2340 0 -10.8 Td( *                be useful, but WITHOUT ANY WARRANTY; without even the)Tj
2341 0 -10.8 Td( *                implied warranty of MERCHANTABILITY or FITNESS FOR A)Tj
2342 0 -10.8 Td( *                PARTICULAR PURPOSE.  See the GNU General Public)Tj
2343 0 -10.8 Td( *                License for more details.)Tj
2344 0 -10.8 Td( *)Tj
2345 0 -10.8 Td( *                The GNU General Public License should be included with)Tj
2346 0 -10.8 Td( *                this file.  If not, you can view it at)Tj
2347 0 -10.8 Td( *                http://www.gnu.org/copyleft/gpl.html)Tj
2348 0 -10.8 Td( *                or write to the Free Software Foundation, Inc., 59)Tj
2349 0 -10.8 Td( *                Temple Place - Suite 330, Boston, MA  02111-1307, USA.)Tj
2350 0 -10.8 Td( *)Tj
2351 0 -10.8 Td( * Revisions   :)Tj
2352 0 -10.8 Td( *    $Log$)Tj
2353 0 -10.8 Td( *)Tj
2354 0 -10.8 Td( *********************************************************************/)Tj
2355 0 -32.4 Td(#include "config.h")Tj
2356 0 -21.6 Td(   ...necessary include files for us to do our work...)Tj
2357 0 -21.6 Td(const char FILENAME_h_rcs[] = FILENAME_H_VERSION;)Tj
2358 /F6 11 Tf -1.588 -27.588 Td(Note:)Tj
2359 /F4 11 Tf ( This declares the rcs variables that should be added to the "show-proxy-args" page. If this is a brand new creation)Tj
2360 0 -13.2 Td(by you, you are free to change the "Copyright" section to represent the rights you wish to maintain.)Tj
2361 /F6 11 Tf 0 -26.4 Td(Note:)Tj
2362 /F4 11 Tf ( The formfeed character that is present right after the comment flower box is handy for \(X|GNU\)Emacs users to skip)Tj
2363 0 -13.2 Td(the verbiage and get to the heart of the code \(via `forward-page' and `backward-page'\). Please include it if you can.)Tj
2364 /F6 11 Tf 0 -26.4 Td(Example for file header comments:)Tj
2365 /F0 9 Tf 1.588 -25.988 Td(#ifndef _FILENAME_H)Tj
2366 0 -10.8 Td(#define _FILENAME_H)Tj
2367 0 -10.8 Td(#define FILENAME_H_VERSION "$Id: developer-manual.sgml,v 1.46.2.4 2002/05/29 00:30:59 mal0rd Exp $")Tj
2368 0 -10.8 Td(/*********************************************************************)Tj
2369 0 -10.8 Td( *)Tj
2370 0 -10.8 Td( * File        :  $Source$)Tj
2371 0 -10.8 Td( *)Tj
2372 0 -10.8 Td( * Purpose     :  \(Fill me in with a good description!\))Tj
2373 0 -10.8 Td( *)Tj
2374 0 -10.8 Td( * Copyright   :  Written by and Copyright \(C\) 2001 the SourceForge)Tj
2375 0 -10.8 Td( *                Privoxy team. http://www.privoxy.org/)Tj
2376 0 -10.8 Td( *)Tj
2377 0 -10.8 Td( *                Based on the Internet Junkbuster originally written)Tj
2378 0 -10.8 Td( *                by and Copyright \(C\) 1997 Anonymous Coders and)Tj
2379 0 -10.8 Td( *                Junkbusters Corporation.  http://www.junkbusters.com)Tj
2380 0 -10.8 Td( *)Tj
2381 0 -10.8 Td( *                This program is free software; you can redistribute it)Tj
2382 0 -10.8 Td( *                and/or modify it under the terms of the GNU General)Tj
2383 0 -10.8 Td( *                Public License as published by the Free Software)Tj
2384 0 -10.8 Td( *                Foundation; either version 2 of the License, or \(at)Tj
2385 0 -10.8 Td( *                your option\) any later version.)Tj
2386 0 -10.8 Td( *)Tj
2387 0 -10.8 Td( *                This program is distributed in the hope that it will)Tj
2388 0 -10.8 Td( *                be useful, but WITHOUT ANY WARRANTY; without even the)Tj
2389 0 -10.8 Td( *                implied warranty of MERCHANTABILITY or FITNESS FOR A)Tj
2390 0 -10.8 Td( *                PARTICULAR PURPOSE.  See the GNU General Public)Tj
2391 /F8 11 Tf -1.588 694.565 Td(Privoxy Developer Manual)Tj
2392 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2393 -175.521 -720 Td(23/36)Tj
2394 ET
2395 Q
2396 endstream
2397 endobj
2398 378 0 obj<</Type/Page/Parent 331 0 R/Contents 379 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F6 7 0 R/F8 9 0 R>>/XObject<<>>>>>>endobj
2399 379 0 obj<</Length 2376      >>stream
2400 q
2401 0.93 0.93 0.93 rg 0 0 612 792 re f
2402 1 0 0 1 36 36 cm
2403 0.88 0.88 0.88 rg 0.0 273.6 540.0 424.4 re f
2404 0.0 25.6 540.0 208.4 re f
2405 BT
2406 0.00 0.00 0.00 rg /F0 9 Tf 1.588 687.412 Td 0.000 Tc( *                License for more details.)Tj
2407 0 -10.8 Td( *)Tj
2408 0 -10.8 Td( *                The GNU General Public License should be included with)Tj
2409 0 -10.8 Td( *                this file.  If not, you can view it at)Tj
2410 0 -10.8 Td( *                http://www.gnu.org/copyleft/gpl.html)Tj
2411 0 -10.8 Td( *                or write to the Free Software Foundation, Inc., 59)Tj
2412 0 -10.8 Td( *                Temple Place - Suite 330, Boston, MA  02111-1307, USA.)Tj
2413 0 -10.8 Td( *)Tj
2414 0 -10.8 Td( * Revisions   :)Tj
2415 0 -10.8 Td( *    $Log$)Tj
2416 0 -10.8 Td( *)Tj
2417 0 -10.8 Td( *********************************************************************/)Tj
2418 0 -32.4 Td(#include "project.h")Tj
2419 0 -21.6 Td(#ifdef __cplusplus)Tj
2420 0 -10.8 Td(extern "C" {)Tj
2421 0 -10.8 Td(#endif)Tj
2422 0 -21.6 Td(   ... function headers here ...)Tj
2423 0 -32.4 Td(/* Revision control strings from this header and associated .c file */)Tj
2424 0 -10.8 Td(extern const char FILENAME_rcs[];)Tj
2425 0 -10.8 Td(extern const char FILENAME_h_rcs[];)Tj
2426 0 -32.4 Td(#ifdef __cplusplus)Tj
2427 0 -10.8 Td(} /* extern "C" */)Tj
2428 0 -10.8 Td(#endif)Tj
2429 0 -21.6 Td(#endif /* ndef _FILENAME_H */)Tj
2430 0 -21.6 Td(/*)Tj
2431 0 -10.8 Td(  Local Variables:)Tj
2432 0 -10.8 Td(  tab-width: 3)Tj
2433 0 -10.8 Td(  end:)Tj
2434 0 -10.8 Td(*/)Tj
2435 /F6 11 Tf -1.588 -27.588 Td(Example for function comments:)Tj
2436 /F0 9 Tf 1.588 -25.988 Td(/*********************************************************************)Tj
2437 0 -10.8 Td( *)Tj
2438 0 -10.8 Td( * Function    :  FUNCTION_NAME)Tj
2439 0 -10.8 Td( *)Tj
2440 0 -10.8 Td( * Description :  \(Fill me in with a good description!\))Tj
2441 0 -10.8 Td( *)Tj
2442 0 -10.8 Td( * parameters  :)Tj
2443 0 -10.8 Td( *          1  :  param1 = pointer to an important thing)Tj
2444 0 -10.8 Td( *          2  :  x      = pointer to something else)Tj
2445 0 -10.8 Td( *)Tj
2446 0 -10.8 Td( * Returns     :  0 => Ok, everything else is an error.)Tj
2447 0 -10.8 Td( *)Tj
2448 0 -10.8 Td( *********************************************************************/)Tj
2449 0 -10.8 Td(int FUNCTION_NAME\( void *param1, const char *x \))Tj
2450 0 -10.8 Td({)Tj
2451 0 -10.8 Td(   ...)Tj
2452 0 -10.8 Td(   return\( 0 \);)Tj
2453 0 -21.6 Td(})Tj
2454 /F8 11 Tf -1.588 690.964 Td(Privoxy Developer Manual)Tj
2455 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2456 -175.521 -720 Td(24/36)Tj
2457 ET
2458 Q
2459 endstream
2460 endobj
2461 380 0 obj<</Type/Page/Parent 331 0 R/Contents 381 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R/Fc 11 0 R>>/XObject<<>>>>/Annots 137 0 R>>endobj
2462 381 0 obj<</Length 3224      >>stream
2463 q
2464 0.93 0.93 0.93 rg 0 0 612 792 re f
2465 1 0 0 1 36 36 cm
2466 0.00 0.00 0.00 rg 0.0 676.2 540.0 2.0 re f
2467 0.0 614.2 540.0 2.0 re f
2468 0.0 371.0 540.0 2.0 re f
2469 0.00 0.00 1.00 RG
2470 172.9 322.4 m 191.0 322.4 l S
2471 191.0 322.4 m 215.1 322.4 l S
2472 0.0 233.4 540.0 2.0 re f
2473 0.0 79.0 540.0 2.0 re f
2474 BT
2475 /F6 11 Tf 0 687 Td 0.000 Tc(Note:)Tj
2476 /F4 11 Tf ( If we all follow this practice, we should be able to parse our code to create a "self-documenting" web page.)Tj
2477 /F9 17 Tf 0 -34.4 Td(5. Testing Guidelines)Tj
2478 /F4 11 Tf 0 -27.6 Td(To be filled.)Tj
2479 /F9 14 Tf 0 -31.4 Td(5.1. Testplan for releases)Tj
2480 /F4 11 Tf 0 -27 Td(Explain release numbers. major, minor. developer releases. etc.)Tj
2481 36 -26.4 Td(Remove any existing rpm with rpm -e)Tj
2482 -11 0 Td(1. )Tj
2483 11 -13.2 Td(Remove any file that was left over. This includes \(but is not limited to\))Tj
2484 36 -26.4 Td(/var/log/privoxy)Tj
2485 /Fc 11 Tf -11.033 0 Td(\250 )Tj
2486 /F4 11 Tf 11.033 -13.2 Td(/etc/privoxy)Tj
2487 /Fc 11 Tf -11.033 0 Td(\250 )Tj
2488 /F4 11 Tf 11.033 -13.2 Td(/usr/sbin/privoxy)Tj
2489 /Fc 11 Tf -11.033 0 Td(\250 )Tj
2490 /F4 11 Tf 11.033 -13.2 Td(/etc/init.d/privoxy)Tj
2491 /Fc 11 Tf -11.033 0 Td(\250 )Tj
2492 /F4 11 Tf 11.033 -13.2 Td(/usr/doc/privoxy*)Tj
2493 /Fc 11 Tf -11.033 0 Td(\250 )Tj
2494 /F4 11 Tf -35.967 79.2 Td(2. )Tj
2495 11 -92.4 Td(Install the rpm. Any error messages?)Tj
2496 -11 0 Td(3. )Tj
2497 11 -13.2 Td(start,stop,status Privoxy with the specific script \(e.g. /etc/rc.d/init/privoxy stop\). Reboot your machine. Does)Tj
2498 0 -13.2 Td(autostart work?)Tj
2499 -11 13.2 Td(4. )Tj
2500 11 -26.4 Td(Start browsing. Does Privoxy work? Logfile written?)Tj
2501 -11 0 Td(5. )Tj
2502 11 -13.2 Td(Remove the rpm. Any error messages? All files removed?)Tj
2503 -11 0 Td(6. )Tj
2504 /F9 14 Tf -25 -31.4 Td(5.2. Test reports)Tj
2505 /F4 11 Tf 0 -27 Td(Please submit test reports only with the)Tj
2506 0.00 0.00 1.00 rg ( test form)Tj
2507 0.00 0.00 0.00 rg ( at sourceforge. Three simple steps:)Tj
2508 36 -26.4 Td(Select category: the distribution you test on.)Tj
2509 /Fc 11 Tf -7.81 0 Td(\267 )Tj
2510 /F4 11 Tf 7.81 -13.2 Td(Select group: the version of Privoxy that we are about to release.)Tj
2511 /Fc 11 Tf -7.81 0 Td(\267 )Tj
2512 /F4 11 Tf 7.81 -13.2 Td(Fill the Summary and Detailed Description with something intelligent \(keep it short and precise\).)Tj
2513 /Fc 11 Tf -7.81 0 Td(\267 )Tj
2514 /F4 11 Tf -28.19 -26.4 Td(Do not mail to the mailing list \(we cannot keep track on issues there\).)Tj
2515 /F9 17 Tf 0 -34.4 Td(6. Releasing a New Version)Tj
2516 /F4 11 Tf 0 -27.6 Td(When we release versions of Privoxy, our work leaves our cozy secret lab and has to work in the cold RealWorld[tm].)Tj
2517 0 -13.2 Td(Once it is released, there is no way to call it back, so it is very important that great care is taken to ensure that everything)Tj
2518 0 -13.2 Td(runs fine, and not to introduce problems in the very last minute.)Tj
2519 0 -26.4 Td(So when releasing a new version, please adhere exactly to the procedure outlined in this chapter.)Tj
2520 0 -26.4 Td(The following programs are required to follow this process: )Tj
2521 /F0 11 Tf (ncftpput)Tj
2522 /F4 11 Tf ( \(ncftp\), )Tj
2523 /F0 11 Tf (scp, ssh)Tj
2524 /F4 11 Tf ( \(ssh\), )Tj
2525 /F0 11 Tf (gmake)Tj
2526 /F4 11 Tf ( \(GNU's)Tj
2527 0 -13.2 Td(version of make\), autoconf, cvs.)Tj
2528 /F8 11 Tf 0 630.2 Td(Privoxy Developer Manual)Tj
2529 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2530 -175.521 -720 Td(25/36)Tj
2531 ET
2532 Q
2533 endstream
2534 endobj
2535 382 0 obj<</Type/Page/Parent 331 0 R/Contents 383 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R/Fc 11 0 R>>/XObject<<>>>>>>endobj
2536 383 0 obj<</Length 5355      >>stream
2537 q
2538 0.93 0.93 0.93 rg 0 0 612 792 re f
2539 1 0 0 1 36 36 cm
2540 0.00 0.00 0.00 rg 0.0 382.2 540.0 2.0 re f
2541 0.88 0.88 0.88 rg 36.0 212.8 453.6 14.0 re f
2542 0.00 0.00 0.00 rg 0.0 45.8 540.0 2.0 re f
2543 BT
2544 /F9 14 Tf 0 684 Td 0.000 Tc(6.1. Version numbers)Tj
2545 /F4 11 Tf 0 -27 Td(First you need to determine which version number the release will have. Privoxy version numbers consist of three)Tj
2546 0 -13.2 Td(numbers, separated by dots, like in X.Y.Z, where:)Tj
2547 36 -26.4 Td(X, the version major, is rarely ever changed. It is increased by one if turning a development branch into stable)Tj
2548 0 -13.2 Td(substantially changes the functionality, user interface or configuration syntax. Majors 1 and 2 were Junkbuster,)Tj
2549 -0 -13.2 Td(and 3 will be the first stable Privoxy release.)Tj
2550 /Fc 11 Tf -7.81 26.4 Td(\267 )Tj
2551 /F4 11 Tf 7.81 -39.6 Td(Y, the version minor, represents the branch within the major version. At any point in time, there are two branches)Tj
2552 -0 -13.2 Td(being maintained: The stable branch, with an even minor, say, 2N, in which no functionality is being added and)Tj
2553 0 -13.2 Td(only bug-fixes are made, and 2N+1, the development branch, in which the further development of Privoxy takes)Tj
2554 0 -13.2 Td(place. This enables us to turn the code upside down and inside out, while at the same time providing and)Tj
2555 0 -13.2 Td(maintaining a stable version. The minor is reset to zero \(and one\) when the major is incremented. When a)Tj
2556 0 -13.2 Td(development branch has matured to the point where it can be turned into stable, the old stable branch 2N is given)Tj
2557 -0 -13.2 Td(up \(i.e. no longer maintained\), the former development branch 2N+1 becomes the new stable branch 2N+2, and a)Tj
2558 0 -13.2 Td(new development branch 2N+3 is opened.)Tj
2559 /Fc 11 Tf -7.81 92.4 Td(\267 )Tj
2560 /F4 11 Tf 7.81 -105.6 Td(Z, the point or sub version, represents a release of the software within a branch. It is therefore incremented)Tj
2561 -0 -13.2 Td(immediately before each code freeze. In development branches, only the even point versions correspond to actual)Tj
2562 0 -13.2 Td(releases, while the odd ones denote the evolving state of the sources on CVS in between. It follows that Z is odd)Tj
2563 0 -13.2 Td(on CVS in development branches most of the time. There, it gets increased to an even number immediately before)Tj
2564 0 -13.2 Td(a code freeze, and is increased to an odd number again immediately thereafter. This ensures that builds from CVS)Tj
2565 -0 -13.2 Td(snapshots are easily distinguished from released versions. The point version is reset to zero when the minor)Tj
2566 0 -13.2 Td(changes.)Tj
2567 /Fc 11 Tf -7.81 79.2 Td(\267 )Tj
2568 /F9 14 Tf -28.19 -110.6 Td(6.2. Before the Release: Freeze)Tj
2569 /F4 11 Tf 0 -27 Td(The following)Tj
2570 /F6 11 Tf ( must be done by one of the developers)Tj
2571 /F4 11 Tf ( prior to each new release.)Tj
2572 36 -26.4 Td(Make sure that everybody who has worked on the code in the last couple of days has had a chance to yell "no!" in)Tj
2573 0 -13.2 Td(case they have pending changes/fixes in their pipelines. Announce the freeze so that nobody will interfere with)Tj
2574 0 -13.2 Td(last minute changes.)Tj
2575 /Fc 11 Tf -7.81 26.4 Td(\267 )Tj
2576 /F4 11 Tf 7.81 -39.6 Td(Increment the version number \(point from odd to even in development branches!\) in )Tj
2577 /F0 11 Tf (configure.in)Tj
2578 /F4 11 Tf (.)Tj
2579 /Fc 11 Tf -7.81 0 Td(\267 )Tj
2580 /F4 11 Tf 7.81 -13.2 Td(If )Tj
2581 /F0 11 Tf (default.action)Tj
2582 /F4 11 Tf ( has changed since last release \(i.e. software release or standalone actions file release\),)Tj
2583 0 -13.2 Td(bump up its version info to A.B in this line:)Tj
2584 /F0 9 Tf 1.588 -25.988 Td(  {+add-header{X-Actions-File-Version: A.B} -filter -no-popups})Tj
2585 /F4 11 Tf -1.588 -27.588 Td(Then change the version info in doc/webserver/actions/index.php, line: '$required_actions_file_version = "A.B";')Tj
2586 /Fc 11 Tf -7.81 66.776 Td(\267 )Tj
2587 /F4 11 Tf 7.81 -79.976 Td(If the HTML documentation is not in sync with the SGML sources you need to regenerate and upload it to the)Tj
2588 0 -13.2 Td(webserver. \(If in doubt, just do it.\) See the Section "Updating the webserver" in this manual for details.)Tj
2589 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
2590 /F6 11 Tf 7.81 -26.4 Td(Commit all files that were changed in the above steps!)Tj
2591 /Fc 11 Tf -7.81 0 Td(\267 )Tj
2592 /F4 11 Tf 7.81 -13.2 Td(Tag all files in CVS with the version number with ")Tj
2593 /F5 11 Tf (cvs tag v_X_Y_Z)Tj
2594 /F4 11 Tf (". Don't use vX_Y_Z, ver_X_Y_Z,)Tj
2595 -0 -13.2 Td(v_X.Y.Z \(won't work\) etc.)Tj
2596 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
2597 /F4 11 Tf 7.81 -26.4 Td(If the release was in a development branch, increase the point version from even to odd \(X.Y.\(Z+1\)\) again in)Tj
2598 /F0 11 Tf 0 -13.2 Td(configure.in)Tj
2599 /F4 11 Tf ( and commit your change.)Tj
2600 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
2601 /F4 11 Tf 7.81 -26.4 Td(On the webserver, copy the user manual to a new top-level directory called )Tj
2602 /F0 11 Tf (X.Y.Z)Tj
2603 /F4 11 Tf (. This ensures that help links)Tj
2604 -0 -13.2 Td(from the CGI pages, which have the version as a prefix, will go into the right version of the manual. If this is a)Tj
2605 0 -13.2 Td(development branch release, also symlink )Tj
2606 /F0 11 Tf (X.Y.\(Z-1\))Tj
2607 /F4 11 Tf ( to )Tj
2608 /F0 11 Tf (X.Y.Z)Tj
2609 /F4 11 Tf ( and )Tj
2610 /F0 11 Tf (X.Y.\(Z+1\))Tj
2611 /F4 11 Tf ( to )Tj
2612 /F0 11 Tf (.)Tj
2613 /F4 11 Tf ( \(i.e. dot\).)Tj
2614 /Fc 11 Tf -7.81 26.4 Td(\267 )Tj
2615 /F8 11 Tf -28.19 636.977 Td(Privoxy Developer Manual)Tj
2616 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2617 -175.521 -720 Td(26/36)Tj
2618 ET
2619 Q
2620 endstream
2621 endobj
2622 384 0 obj<</Type/Page/Parent 331 0 R/Contents 385 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R/Fc 11 0 R>>/XObject<<>>>>>>endobj
2623 385 0 obj<</Length 3985      >>stream
2624 q
2625 0.93 0.93 0.93 rg 0 0 612 792 re f
2626 1 0 0 1 36 36 cm
2627 0.88 0.88 0.88 rg 0.0 542.4 540.0 46.4 re f
2628 0.00 0.00 0.00 rg 0.0 454.6 540.0 2.0 re f
2629 BT
2630 /F9 14 Tf 0 684 Td 0.000 Tc(6.3. Building and Releasing the Packages)Tj
2631 /F4 11 Tf 0 -27 Td(Now the individual packages can be built and released. Note that for GPL reasons the first package to be released is)Tj
2632 0 -13.2 Td(always the source tarball.)Tj
2633 0 -26.4 Td(For)Tj
2634 /F6 11 Tf ( all)Tj
2635 /F4 11 Tf ( types of packages, including the source tarball,)Tj
2636 /F6 11 Tf ( you must make sure that you build from clean sources by exporting)Tj
2637 0 -13.2 Td(the right version from CVS into an empty directory:)Tj
2638 /F4 11 Tf (.)Tj
2639 /F0 9 Tf 1.588 -25.988 Td(  mkdir dist # delete or choose different name if it already exists)Tj
2640 0 -10.8 Td(  cd dist)Tj
2641 0 -10.8 Td(  cvs -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa login)Tj
2642 0 -10.8 Td(  cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa export -r v_X_Y_Z current)Tj
2643 /F6 11 Tf -1.588 -27.588 Td(Do NOT change)Tj
2644 /F4 11 Tf ( a single bit, including, but not limited to version information after export from CVS. This is to make sure)Tj
2645 0 -13.2 Td(that all release packages, and with them, all future bug reports, are based on exactly the same code.)Tj
2646 0 -26.4 Td(Please find additional instructions for the source tarball and the individual platform dependent binary packages below.)Tj
2647 0 -13.2 Td(And details on the Sourceforge release process below that.)Tj
2648 /F9 11 Tf 0 -28.4 Td(6.3.1. Note on Privoxy Packaging)Tj
2649 /F4 11 Tf 0 -26.4 Td(Please keep these general guidelines in mind when putting together your package. These apply to)Tj
2650 /F6 11 Tf ( all)Tj
2651 /F4 11 Tf ( platforms!)Tj
2652 36 -26.4 Td(Privoxy)Tj
2653 /F6 11 Tf ( requires)Tj
2654 /F4 11 Tf ( write access to: all )Tj
2655 /F0 11 Tf (*.action)Tj
2656 /F4 11 Tf ( files, all logfiles, and the )Tj
2657 /F0 11 Tf (trust)Tj
2658 /F4 11 Tf ( file. You will need to)Tj
2659 -0 -13.2 Td(determine the best way to do this for your platform.)Tj
2660 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
2661 /F4 11 Tf 7.81 -26.4 Td(Please include up to date documentation. At a bare minimum:)Tj
2662 /F0 11 Tf 1.588 -27.988 Td(LICENSE)Tj
2663 /F4 11 Tf ( \(top-level directory\))Tj
2664 /F0 11 Tf 0 -29.576 Td(README)Tj
2665 /F4 11 Tf ( \(top-level directory\))Tj
2666 /F0 11 Tf 0 -29.576 Td(AUTHORS)Tj
2667 /F4 11 Tf ( \(top-level directory\))Tj
2668 /F0 11 Tf 0 -29.576 Td(man page)Tj
2669 /F4 11 Tf ( \(top-level directory, Unix-like platforms only\))Tj
2670 /F0 11 Tf -0 -29.576 Td(The User Manual)Tj
2671 /F4 11 Tf ( \(doc/webserver/user-manual/\))Tj
2672 /F0 11 Tf 0 -29.576 Td(FAQ)Tj
2673 /F4 11 Tf ( \(doc/webserver/faq/\))Tj
2674 -1.588 -27.988 Td(Also suggested: )Tj
2675 /F0 11 Tf (Developer Manual)Tj
2676 /F4 11 Tf ( \(doc/webserver/developer-manual\) and )Tj
2677 /F0 11 Tf (ChangeLog)Tj
2678 /F4 11 Tf ( \(top-level)Tj
2679 -0 -13.2 Td(directory\). )Tj
2680 /F0 11 Tf (FAQ)Tj
2681 /F4 11 Tf ( and the manuals are HTML docs. There are also text versions in )Tj
2682 /F0 11 Tf (doc/text/)Tj
2683 /F4 11 Tf ( which could)Tj
2684 -0 -13.2 Td(conceivably also be included.)Tj
2685 -0 -26.4 Td(The documentation has been designed such that the manuals are linked to each other from parallel directories, and)Tj
2686 0 -13.2 Td(should be packaged that way. )Tj
2687 /F0 11 Tf (privoxy-index.html)Tj
2688 /F4 11 Tf ( can also be included and can serve as a focal point for)Tj
2689 0 -13.2 Td(docs and other links of interest \(and possibly renamed to )Tj
2690 /F0 11 Tf (index.html)Tj
2691 /F4 11 Tf (\). This should be one level up from the)Tj
2692 -0 -13.2 Td(manuals. There is a link also on this page to an HTMLized version of the man page. To avoid 404 for this, it is in)Tj
2693 0 -13.2 Td(CVS as )Tj
2694 /F0 11 Tf (doc/webserver/man-page/privoxy-man-page.html)Tj
2695 /F4 11 Tf (, and should be included along with the)Tj
2696 -0 -13.2 Td(manuals. There is also a css stylesheets that can be included for better presentation: )Tj
2697 /F0 11 Tf (p_doc.css)Tj
2698 /F4 11 Tf (. This should be)Tj
2699 /Fc 11 Tf -7.81 322.659 Td(\267 )Tj
2700 /F8 11 Tf -28.19 362.177 Td(Privoxy Developer Manual)Tj
2701 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2702 -175.521 -720 Td(27/36)Tj
2703 ET
2704 Q
2705 endstream
2706 endobj
2707 386 0 obj<</Type/Page/Parent 331 0 R/Contents 387 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 4 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R/Fc 11 0 R>>/XObject<<>>>>/Annots 140 0 R>>endobj
2708 387 0 obj<</Length 3650      >>stream
2709 q
2710 0.93 0.93 0.93 rg 0 0 612 792 re f
2711 1 0 0 1 36 36 cm
2712 0.00 0.00 0.00 rg 0.0 597.0 540.0 2.0 re f
2713 0.88 0.88 0.88 rg 0.0 499.6 540.0 24.8 re f
2714 0.0 446.0 540.0 14.0 re f
2715 0.0 392.5 540.0 14.0 re f
2716 0.00 0.00 0.00 rg 0.0 344.3 540.0 2.0 re f
2717 0.00 0.00 1.00 RG
2718 44.3 193.7 m 61.7 193.7 l S
2719 61.7 193.7 m 77.9 193.7 l S
2720 0.88 0.88 0.88 rg 0.0 114.9 540.0 24.8 re f
2721 0.0 61.3 540.0 14.0 re f
2722 BT
2723 0.00 0.00 0.00 rg /F4 11 Tf 36 687 Td 0.000 Tc(in the same directory with )Tj
2724 /F0 11 Tf (privoxy-index.html)Tj
2725 /F4 11 Tf (, \(i.e. one level up from the manual directories\).)Tj
2726 /F0 11 Tf 0 -13.2 Td(user.action)Tj
2727 /F4 11 Tf ( is designed for local preferences. Make sure this does not get overwritten!)Tj
2728 /Fc 11 Tf -7.81 0 Td(\267 )Tj
2729 /F4 11 Tf 7.81 -13.2 Td(Other configuration files should be installed as the new defaults, but all previously installed configuration files)Tj
2730 0 -13.2 Td(should be preserved as backups. This is just good manners :-\))Tj
2731 /Fc 11 Tf -7.81 13.2 Td(\267 )Tj
2732 /F4 11 Tf 7.81 -26.4 Td(Please check platform specific notes in this doc, if you haven't done "Privoxy" packaging before for other)Tj
2733 0 -13.2 Td(platform specific issues. Conversely, please add any notes that you know are important for your platform \(or)Tj
2734 -0 -13.2 Td(contact one of the doc maintainers to do this if you can't\).)Tj
2735 /Fc 11 Tf -7.81 26.4 Td(\267 )Tj
2736 /F9 11 Tf -28.19 -54.8 Td(6.3.2. Source Tarball)Tj
2737 /F4 11 Tf 0 -26.4 Td(First,)Tj
2738 /F6 11 Tf ( make sure that you have freshly exported the right version into an empty directory)Tj
2739 /F4 11 Tf (. \(See "Building and releasing)Tj
2740 0 -13.2 Td(packages" above\). Then run:)Tj
2741 /F0 9 Tf 1.588 -25.988 Td(  cd current)Tj
2742 0 -10.8 Td(  autoheader && autoconf && ./configure)Tj
2743 /F4 11 Tf -1.588 -27.588 Td(Then do:)Tj
2744 /F0 9 Tf 1.588 -25.988 Td(  make tarball-dist)Tj
2745 /F4 11 Tf -1.588 -27.588 Td(To upload the package to Sourceforge, simply issue)Tj
2746 /F0 9 Tf 1.588 -25.988 Td(  make tarball-upload)Tj
2747 /F4 11 Tf -1.588 -27.588 Td(Go to the displayed URL and release the file publicly on Sourceforge. For the change log field, use the relevant section of)Tj
2748 0 -13.2 Td(the )Tj
2749 /F0 11 Tf (ChangeLog)Tj
2750 /F4 11 Tf ( file.)Tj
2751 /F9 11 Tf 0 -28.4 Td(6.3.3. SuSE, Conectiva or Red Hat RPM)Tj
2752 /F4 11 Tf 0 -26.4 Td(In following text, replace )Tj
2753 /F2 11 Tf (dist)Tj
2754 /F4 11 Tf ( with either "rh" for Red Hat or "suse" for SuSE.)Tj
2755 0 -26.4 Td(First,)Tj
2756 /F6 11 Tf ( make sure that you have freshly exported the right version into an empty directory)Tj
2757 /F4 11 Tf (. \(See "Building and releasing)Tj
2758 0 -13.2 Td(packages" above\).)Tj
2759 0 -26.4 Td(As the only exception to not changing anything after export from CVS, now examine the file )Tj
2760 /F0 11 Tf (privoxy-)Tj
2761 /F2 11 Tf (dist)Tj
2762 /F0 11 Tf (.spec)Tj
2763 /F4 11 Tf 0 -13.2 Td(and make sure that the version information and the RPM release number are correct. The RPM release numbers for each)Tj
2764 0 -13.2 Td(version start at one. Hence it must be reset to one if this is the first RPM for )Tj
2765 /F2 11 Tf (dist)Tj
2766 /F4 11 Tf ( which is built from version X.Y.Z.)Tj
2767 0 -13.2 Td(Check the)Tj
2768 0.00 0.00 1.00 rg ( file list)Tj
2769 0.00 0.00 0.00 rg ( if unsure. Else, it must be set to the highest already available RPM release number for that version plus)Tj
2770 0 -13.2 Td(one.)Tj
2771 0 -26.4 Td(Then run:)Tj
2772 /F0 9 Tf 1.588 -25.988 Td(  cd current)Tj
2773 0 -10.8 Td(  autoheader && autoconf && ./configure)Tj
2774 /F4 11 Tf -1.588 -27.588 Td(Then do)Tj
2775 /F0 9 Tf 1.588 -25.988 Td(  make )Tj
2776 /F2 9 Tf (dist)Tj
2777 /F0 9 Tf (-dist)Tj
2778 /F4 11 Tf -1.588 -27.588 Td(To upload the package to Sourceforge, simply issue)Tj
2779 /F8 11 Tf 0 682.883 Td(Privoxy Developer Manual)Tj
2780 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2781 -175.521 -720 Td(28/36)Tj
2782 ET
2783 Q
2784 endstream
2785 endobj
2786 388 0 obj<</Type/Page/Parent 331 0 R/Contents 389 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 4 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>/Annots 143 0 R>>endobj
2787 389 0 obj<</Length 3581      >>stream
2788 q
2789 0.93 0.93 0.93 rg 0 0 612 792 re f
2790 1 0 0 1 36 36 cm
2791 0.88 0.88 0.88 rg 0.0 684.0 540.0 14.0 re f
2792 0.00 0.00 0.00 rg 0.0 635.8 540.0 2.0 re f
2793 0.88 0.88 0.88 rg 0.0 549.2 540.0 14.0 re f
2794 0.00 0.00 1.00 RG
2795 108.5 484.4 m 162.5 484.4 l S
2796 0.0 416.5 540.0 14.0 re f
2797 0.0 362.9 540.0 14.0 re f
2798 0.0 309.3 540.0 14.0 re f
2799 0.00 0.00 0.00 rg 0.0 247.9 540.0 2.0 re f
2800 0.88 0.88 0.88 rg 0.0 174.5 540.0 14.0 re f
2801 0.0 97.0 540.0 24.8 re f
2802 0.0 43.4 540.0 14.0 re f
2803 BT
2804 0.00 0.00 0.00 rg /F0 9 Tf 1.588 687.412 Td 0.000 Tc(  make )Tj
2805 /F2 9 Tf (dist)Tj
2806 /F0 9 Tf (-upload )Tj
2807 /F2 9 Tf (rpm_packagerev)Tj
2808 /F4 11 Tf -1.588 -27.588 Td(where )Tj
2809 /F2 11 Tf (rpm_packagerev)Tj
2810 /F4 11 Tf ( is the RPM release number as determined above. Go to the displayed URL and release the file)Tj
2811 0 -13.2 Td(publicly on Sourceforge. Use the release notes and change log from the source tarball package.)Tj
2812 /F9 11 Tf 0 -28.4 Td(6.3.4. OS/2)Tj
2813 /F4 11 Tf 0 -26.4 Td(First,)Tj
2814 /F6 11 Tf ( make sure that you have freshly exported the right version into an empty directory)Tj
2815 /F4 11 Tf (. \(See "Building and releasing)Tj
2816 0 -13.2 Td(packages" above\). Then get the OS/2 Setup module:)Tj
2817 /F0 9 Tf 1.588 -25.988 Td(  cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co os2setup)Tj
2818 /F4 11 Tf -1.588 -27.588 Td(You will need a mix of development tools. The main compilation takes place with IBM Visual Age C++. Some ancillary)Tj
2819 0 -13.2 Td(work takes place with GNU tools, available from various sources like hobbes.nmsu.edu. Specificially, you will need)Tj
2820 /F0 11 Tf 0 -13.2 Td(autoheader)Tj
2821 /F4 11 Tf (, )Tj
2822 /F0 11 Tf (autoconf)Tj
2823 /F4 11 Tf ( and )Tj
2824 /F0 11 Tf (sh)Tj
2825 /F4 11 Tf ( tools. The packaging takes place with WarpIN, available from various sources,)Tj
2826 0 -13.2 Td(including its home page:)Tj
2827 0.00 0.00 1.00 rg ( xworkplace)Tj
2828 0.00 0.00 0.00 rg (.)Tj
2829 0 -26.4 Td(Change directory to the )Tj
2830 /F0 11 Tf (os2setup)Tj
2831 /F4 11 Tf ( directory. Edit the os2build.cmd file to set the final executable filename. For)Tj
2832 0 -13.2 Td(example,)Tj
2833 /F0 9 Tf 1.588 -25.988 Td(  installExeName='privoxyos2_setup_X.Y.Z.exe')Tj
2834 /F4 11 Tf -1.588 -27.588 Td(Next, edit the )Tj
2835 /F0 11 Tf (IJB.wis)Tj
2836 /F4 11 Tf ( file so the release number matches in the )Tj
2837 /F0 11 Tf (PACKAGEID)Tj
2838 /F4 11 Tf ( section:)Tj
2839 /F0 9 Tf 1.588 -25.988 Td(  PACKAGEID="Privoxy Team\\Privoxy\\Privoxy Package\\X\\Y\\Z")Tj
2840 /F4 11 Tf -1.588 -27.588 Td(You're now ready to build. Run:)Tj
2841 /F0 9 Tf 1.588 -25.988 Td(  os2build)Tj
2842 /F4 11 Tf -1.588 -27.588 Td(You will find the WarpIN-installable executable in the )Tj
2843 /F0 11 Tf (./files)Tj
2844 /F4 11 Tf ( directory. Upload this anonymously to)Tj
2845 /F0 11 Tf 0 -13.2 Td(uploads.sourceforge.net/incoming)Tj
2846 /F4 11 Tf (, create a release for it, and you're done. Use the release notes and Change)Tj
2847 0 -13.2 Td(Log from the source tarball package.)Tj
2848 /F9 11 Tf 0 -28.4 Td(6.3.5. Solaris)Tj
2849 /F4 11 Tf 0 -26.4 Td(Login to Sourceforge's compilefarm via ssh:)Tj
2850 /F0 9 Tf 1.588 -25.988 Td(  ssh cf.sourceforge.net)Tj
2851 /F4 11 Tf -1.588 -27.588 Td(Choose the right operating system \(not the Debian one\). When logged in,)Tj
2852 /F6 11 Tf ( make sure that you have freshly exported the)Tj
2853 0 -13.2 Td(right version into an empty directory)Tj
2854 /F4 11 Tf (. \(See "Building and releasing packages" above\). Then run:)Tj
2855 /F0 9 Tf 1.588 -25.988 Td(  cd current)Tj
2856 0 -10.8 Td(  autoheader && autoconf && ./configure)Tj
2857 /F4 11 Tf -1.588 -27.588 Td(Then run)Tj
2858 /F0 9 Tf 1.588 -25.988 Td(  gmake solaris-dist)Tj
2859 /F8 11 Tf -1.588 673.224 Td(Privoxy Developer Manual)Tj
2860 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2861 -175.521 -720 Td(29/36)Tj
2862 ET
2863 Q
2864 endstream
2865 endobj
2866 390 0 obj<</Type/Page/Parent 331 0 R/Contents 391 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>/Annots 146 0 R>>endobj
2867 391 0 obj<</Length 3515      >>stream
2868 q
2869 0.93 0.93 0.93 rg 0 0 612 792 re f
2870 1 0 0 1 36 36 cm
2871 0.00 0.00 0.00 rg 0.0 649.8 540.0 2.0 re f
2872 0.00 0.00 1.00 RG
2873 279.9 604.8 m 392.6 604.8 l S
2874 0.88 0.88 0.88 rg 0.0 523.6 540.0 14.0 re f
2875 0.0 446.0 540.0 24.8 re f
2876 0.00 0.00 0.00 rg 0.0 384.6 540.0 2.0 re f
2877 0.88 0.88 0.88 rg 0.0 298.1 540.0 14.0 re f
2878 0.0 244.5 540.0 14.0 re f
2879 0.0 177.7 540.0 14.0 re f
2880 0.00 0.00 0.00 rg 0.0 169.1 540.0 2.0 re f
2881 0.88 0.88 0.88 rg 0.0 82.5 540.0 14.0 re f
2882 0.0 22.0 540.0 20.9 re f
2883 BT
2884 0.00 0.00 0.00 rg /F4 11 Tf 0 687 Td 0.000 Tc(which creates a gzip'ed tar archive. Sadly, you cannot use)Tj
2885 /F5 11 Tf ( make solaris-upload)Tj
2886 /F4 11 Tf ( on the Sourceforge machine \(no)Tj
2887 0 -13.2 Td(ncftpput\). You now have to manually upload the archive to Sourceforge's ftp server and release the file publicly. Use the)Tj
2888 0 -13.2 Td(release notes and Change Log from the source tarball package.)Tj
2889 /F9 11 Tf 0 -28.4 Td(6.3.6. Windows)Tj
2890 /F4 11 Tf 0 -26.4 Td(You should ensure you have the latest version of Cygwin \(from)Tj
2891 0.00 0.00 1.00 rg ( http://www.cygwin.com/)Tj
2892 0.00 0.00 0.00 rg (\). Run the following commands)Tj
2893 0 -13.2 Td(from within a Cygwin bash shell.)Tj
2894 0 -26.4 Td(First,)Tj
2895 /F6 11 Tf ( make sure that you have freshly exported the right version into an empty directory)Tj
2896 /F4 11 Tf (. \(See "Building and releasing)Tj
2897 0 -13.2 Td(packages" above\). Then get the Windows setup module:)Tj
2898 /F0 9 Tf 1.588 -25.988 Td(  cvs -z3  -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co winsetup)Tj
2899 /F4 11 Tf -1.588 -27.588 Td(Then you can build the package. This is fully automated, and is controlled by )Tj
2900 /F0 11 Tf (winsetup/GNUmakefile)Tj
2901 /F4 11 Tf (. All you need)Tj
2902 0 -13.2 Td(to do is:)Tj
2903 /F0 9 Tf 1.588 -25.988 Td(  cd winsetup)Tj
2904 0 -10.8 Td(  make)Tj
2905 /F4 11 Tf -1.588 -27.588 Td(Now you can manually rename )Tj
2906 /F0 11 Tf (privoxy_setup.exe)Tj
2907 /F4 11 Tf ( to )Tj
2908 /F0 11 Tf (privoxy_setup_X_Y_Z.exe)Tj
2909 /F4 11 Tf (, and upload it to)Tj
2910 0 -13.2 Td(SourceForge. When releasing the package on SourceForge, use the release notes and Change Log from the source tarball)Tj
2911 0 -13.2 Td(package.)Tj
2912 /F9 11 Tf 0 -28.4 Td(6.3.7. Debian)Tj
2913 /F4 11 Tf 0 -26.4 Td(First,)Tj
2914 /F6 11 Tf ( make sure that you have freshly exported the right version into an empty directory)Tj
2915 /F4 11 Tf (. \(See "Building and releasing)Tj
2916 0 -13.2 Td(packages" above\). Then add a log entry to )Tj
2917 /F0 11 Tf (debian/changelog)Tj
2918 /F4 11 Tf (, if it is not already there, for example by running:)Tj
2919 /F0 9 Tf 1.588 -25.988 Td(  debchange -v 2.9.18-beta-1 "New upstream version")Tj
2920 /F4 11 Tf -1.588 -27.588 Td(Then, run:)Tj
2921 /F0 9 Tf 1.588 -25.988 Td(  dpkg-buildpackage -rfakeroot -us -uc -b)Tj
2922 /F4 11 Tf -1.588 -27.588 Td(This will create )Tj
2923 /F0 11 Tf (../privoxy_2.9.18-beta-1_i386.deb)Tj
2924 /F4 11 Tf ( which can be uploaded. To upload the package to)Tj
2925 0 -13.2 Td(Sourceforge, simply issue)Tj
2926 /F0 9 Tf 1.588 -25.988 Td(  make debian-upload)Tj
2927 /F9 11 Tf -1.588 -29.588 Td(6.3.8. Mac OSX)Tj
2928 /F4 11 Tf 0 -26.4 Td(First,)Tj
2929 /F6 11 Tf ( make sure that you have freshly exported the right version into an empty directory)Tj
2930 /F4 11 Tf (. \(See "Building and releasing)Tj
2931 0 -13.2 Td(packages" above\). Then get the Mac OSX setup module:)Tj
2932 /F0 9 Tf 1.588 -25.988 Td(  cvs -z3 -d:pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa co osxsetup)Tj
2933 /F4 11 Tf -1.588 -27.588 Td(Then run:)Tj
2934 /F0 9 Tf 1.588 -25.988 Td(  cd osxsetup)Tj
2935 /F8 11 Tf -1.588 687.647 Td(Privoxy Developer Manual)Tj
2936 431.76 0 Td(08/06/02 10:11:29 PM)Tj
2937 -175.521 -720 Td(30/36)Tj
2938 ET
2939 Q
2940 endstream
2941 endobj
2942 392 0 obj<</Type/Page/Parent 331 0 R/Contents 393 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>>>endobj
2943 393 0 obj<</Length 3319      >>stream
2944 q
2945 0.93 0.93 0.93 rg 0 0 612 792 re f
2946 1 0 0 1 36 36 cm
2947 0.88 0.88 0.88 rg 0.0 684.0 540.0 14.0 re f
2948 0.0 564.4 540.0 14.0 re f
2949 0.00 0.00 0.00 rg 0.0 503.0 540.0 2.0 re f
2950 0.88 0.88 0.88 rg 0.0 429.7 540.0 14.0 re f
2951 0.0 352.1 540.0 24.8 re f
2952 0.0 298.5 540.0 14.0 re f
2953 0.00 0.00 0.00 rg 0.0 237.1 540.0 2.0 re f
2954 0.88 0.88 0.88 rg 0.0 139.7 540.0 24.8 re f
2955 0.00 0.00 0.00 rg 0.0 104.7 540.0 2.0 re f
2956 BT
2957 /F0 9 Tf 1.588 687.412 Td 0.000 Tc(  build)Tj
2958 /F4 11 Tf -1.588 -27.588 Td(This will run )Tj
2959 /F0 11 Tf (autoheader)Tj
2960 /F4 11 Tf (, )Tj
2961 /F0 11 Tf (autoconf)Tj
2962 /F4 11 Tf ( and )Tj
2963 /F0 11 Tf (configure)Tj
2964 /F4 11 Tf ( as well as )Tj
2965 /F0 11 Tf (make)Tj
2966 /F4 11 Tf (. Finally, it will copy over the necessary files)Tj
2967 0 -13.2 Td(to the ./osxsetup/files directory for further processing by )Tj
2968 /F0 11 Tf (PackageMaker)Tj
2969 /F4 11 Tf (.)Tj
2970 0 -26.4 Td(Bring up PackageMaker with the PrivoxyPackage.pmsp definition file, modify the package name to match the release, and)Tj
2971 0 -13.2 Td(hit the "Create package" button. If you specify ./Privoxy.pkg as the output package name, you can then create the)Tj
2972 0 -13.2 Td(distributable zip file with the command:)Tj
2973 /F0 9 Tf 1.588 -25.988 Td(  zip -r privoxyosx_setup_x.y.z.zip Privoxy.pkg)Tj
2974 /F4 11 Tf -1.588 -27.588 Td(You can then upload )Tj
2975 /F0 11 Tf (privoxyosx_setup_x.y.z.zip)Tj
2976 /F4 11 Tf ( anonymously to)Tj
2977 /F0 11 Tf 0 -13.2 Td(uploads.sourceforge.net/incoming)Tj
2978 /F4 11 Tf (, create a release for it, and you're done. Use the release notes and Change)Tj
2979 0 -13.2 Td(Log from the source tarball package.)Tj
2980 /F9 11 Tf 0 -28.4 Td(6.3.9. FreeBSD)Tj
2981 /F4 11 Tf 0 -26.4 Td(Login to Sourceforge's compile-farm via ssh:)Tj
2982 /F0 9 Tf 1.588 -25.988 Td(  ssh cf.sourceforge.net)Tj
2983 /F4 11 Tf -1.588 -27.588 Td(Choose the right operating system. When logged in,)Tj
2984 /F6 11 Tf ( make sure that you have freshly exported the right version into an)Tj
2985 0 -13.2 Td(empty directory)Tj
2986 /F4 11 Tf (. \(See "Building and releasing packages" above\). Then run:)Tj
2987 /F0 9 Tf 1.588 -25.988 Td(  cd current)Tj
2988 0 -10.8 Td(  autoheader && autoconf && ./configure)Tj
2989 /F4 11 Tf -1.588 -27.588 Td(Then run:)Tj
2990 /F0 9 Tf 1.588 -25.988 Td(  gmake freebsd-dist)Tj
2991 /F4 11 Tf -1.588 -27.588 Td(which creates a gzip'ed tar archive. Sadly, you cannot use)Tj
2992 /F5 11 Tf ( make freebsd-upload)Tj
2993 /F4 11 Tf ( on the Sourceforge machine \(no)Tj
2994 0 -13.2 Td(ncftpput\). You now have to manually upload the archive to Sourceforge's ftp server and release the file publicly. Use the)Tj
2995 0 -13.2 Td(release notes and Change Log from the source tarball package.)Tj
2996 /F9 11 Tf 0 -28.4 Td(6.3.10. HP-UX 11)Tj
2997 /F4 11 Tf 0 -26.4 Td(First,)Tj
2998 /F6 11 Tf ( make sure that you have freshly exported the right version into an empty directory)Tj
2999 /F4 11 Tf (. \(See "Building and releasing)Tj
3000 0 -13.2 Td(packages" above\). Then run:)Tj
3001 /F0 9 Tf 1.588 -25.988 Td(  cd current)Tj
3002 0 -10.8 Td(  autoheader && autoconf && ./configure)Tj
3003 /F4 11 Tf -1.588 -27.588 Td(Then do FIXME.)Tj
3004 /F9 11 Tf 0 -28.4 Td(6.3.11. Amiga OS)Tj
3005 /F4 11 Tf 0 -26.4 Td(First,)Tj
3006 /F6 11 Tf ( make sure that you have freshly exported the right version into an empty directory)Tj
3007 /F4 11 Tf (. \(See "Building and releasing)Tj
3008 0 -13.2 Td(packages" above\). Then run:)Tj
3009 /F8 11 Tf 0 672.459 Td(Privoxy Developer Manual)Tj
3010 431.76 0 Td(08/06/02 10:11:29 PM)Tj
3011 -175.521 -720 Td(31/36)Tj
3012 ET
3013 Q
3014 endstream
3015 endobj
3016 394 0 obj<</Type/Page/Parent 331 0 R/Contents 395 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R/Fc 11 0 R>>/XObject<<>>>>/Annots 151 0 R>>endobj
3017 395 0 obj<</Length 3679      >>stream
3018 q
3019 0.93 0.93 0.93 rg 0 0 612 792 re f
3020 1 0 0 1 36 36 cm
3021 0.88 0.88 0.88 rg 0.0 673.2 540.0 24.8 re f
3022 0.00 0.00 0.00 rg 0.0 638.2 540.0 2.0 re f
3023 0.88 0.88 0.88 rg 0.0 564.8 540.0 14.0 re f
3024 0.0 487.3 540.0 24.8 re f
3025 0.0 433.7 540.0 14.0 re f
3026 0.00 0.00 0.00 rg 0.0 372.3 540.0 2.0 re f
3027 0.00 0.00 1.00 RG
3028 82.8 284.1 m 252.3 284.1 l S
3029 91.0 204.9 m 409.8 204.9 l S
3030 0.0 49.9 540.0 2.0 re f
3031 BT
3032 /F0 9 Tf 1.588 687.412 Td 0.000 Tc(  cd current)Tj
3033 0 -10.8 Td(  autoheader && autoconf && ./configure)Tj
3034 /F4 11 Tf -1.588 -27.588 Td(Then do FIXME.)Tj
3035 /F9 11 Tf 0 -28.4 Td(6.3.12. AIX)Tj
3036 /F4 11 Tf 0 -26.4 Td(Login to Sourceforge's compilefarm via ssh:)Tj
3037 /F0 9 Tf 1.588 -25.988 Td(  ssh cf.sourceforge.net)Tj
3038 /F4 11 Tf -1.588 -27.588 Td(Choose the right operating system. When logged in,)Tj
3039 /F6 11 Tf ( make sure that you have freshly exported the right version into an)Tj
3040 0 -13.2 Td(empty directory)Tj
3041 /F4 11 Tf (. \(See "Building and releasing packages" above\). Then run:)Tj
3042 /F0 9 Tf 1.588 -25.988 Td(  cd current)Tj
3043 0 -10.8 Td(  autoheader && autoconf && ./configure)Tj
3044 /F4 11 Tf -1.588 -27.588 Td(Then run:)Tj
3045 /F0 9 Tf 1.588 -25.988 Td(  make aix-dist)Tj
3046 /F4 11 Tf -1.588 -27.588 Td(which creates a gzip'ed tar archive. Sadly, you cannot use)Tj
3047 /F5 11 Tf ( make aix-upload)Tj
3048 /F4 11 Tf ( on the Sourceforge machine \(no ncftpput\).)Tj
3049 0 -13.2 Td(You now have to manually upload the archive to Sourceforge's ftp server and release the file publicly. Use the release)Tj
3050 0 -13.2 Td(notes and Change Log from the source tarball package.)Tj
3051 /F9 14 Tf 0 -31.4 Td(6.4. Uploading and Releasing Your Package)Tj
3052 /F4 11 Tf 0 -27 Td(After the package is ready, it is time to upload it to SourceForge, and go through the release steps. The upload is done via)Tj
3053 0 -13.2 Td(FTP:)Tj
3054 36 -26.4 Td(Upload to:)Tj
3055 0.00 0.00 1.00 rg ( ftp://upload.sourceforge.net/incoming)Tj
3056 0.00 0.00 0.00 rg /Fc 11 Tf -7.81 0 Td(\267 )Tj
3057 /F4 11 Tf 7.81 -13.2 Td(user: )Tj
3058 /F0 11 Tf (anonymous)Tj
3059 /Fc 11 Tf -7.81 0 Td(\267 )Tj
3060 /F4 11 Tf 7.81 -13.2 Td(password: )Tj
3061 /F0 11 Tf (ijbswa-developers@lists.sourceforge.net)Tj
3062 /Fc 11 Tf -7.81 0 Td(\267 )Tj
3063 /F4 11 Tf -28.19 -26.4 Td(Or use the)Tj
3064 /F5 11 Tf ( make)Tj
3065 /F4 11 Tf ( targets as described above.)Tj
3066 0 -26.4 Td(Once this done go to)Tj
3067 0.00 0.00 1.00 rg ( http://sourceforge.net/project/admin/editpackages.php?group_id=11118)Tj
3068 0.00 0.00 0.00 rg (, making sure you are logged)Tj
3069 0 -13.2 Td(in. Find your target platform in the second column, and click )Tj
3070 /F0 11 Tf (Add Release)Tj
3071 /F4 11 Tf (. You will then need to create a new release)Tj
3072 0 -13.2 Td(for your package, using the format of )Tj
3073 /F0 11 Tf ($VERSION \($CODE_STATUS\))Tj
3074 /F4 11 Tf (, e.g.)Tj
3075 /F6 11 Tf ( 2.9.18 \(beta\))Tj
3076 /F4 11 Tf (.)Tj
3077 0 -26.4 Td(Now just follow the prompts. Be sure to add any appropriate Release notes. You should see your freshly uploaded)Tj
3078 0 -13.2 Td(packages in "Step 2. Add Files To This Release". Check the appropriate box\(es\). Remember at each step to hit the)Tj
3079 0 -13.2 Td("Refresh/Submit" buttons! You should now see your file\(s\) listed in Step 3. Fill out the forms with the appropriate)Tj
3080 0 -13.2 Td(information for your platform, being sure to hit "Update" for each file. If anyone is monitoring your platform, check the)Tj
3081 0 -13.2 Td("email" box at the very bottom to notify them of the new package. This should do it!)Tj
3082 0 -26.4 Td(If you have made errors, or need to make changes, you can go through essentially the same steps, but select )Tj
3083 /F0 11 Tf (Edit)Tj
3084 0 -13.2 Td(Release)Tj
3085 /F4 11 Tf (, instead of )Tj
3086 /F0 11 Tf (Add Release)Tj
3087 /F4 11 Tf (.)Tj
3088 /F8 11 Tf 0 659.306 Td(Privoxy Developer Manual)Tj
3089 431.76 0 Td(08/06/02 10:11:29 PM)Tj
3090 -175.521 -720 Td(32/36)Tj
3091 ET
3092 Q
3093 endstream
3094 endobj
3095 396 0 obj<</Type/Page/Parent 331 0 R/Contents 397 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>/Annots 164 0 R>>endobj
3096 397 0 obj<</Length 3775      >>stream
3097 q
3098 0.93 0.93 0.93 rg 0 0 612 792 re f
3099 1 0 0 1 36 36 cm
3100 0.00 0.00 1.00 RG
3101 428.9 656.0 m 473.8 656.0 l S
3102 473.8 656.0 m 510.2 656.0 l S
3103 510.2 656.0 m 526.4 656.0 l S
3104 319.1 642.8 m 365.2 642.8 l S
3105 365.2 642.8 m 403.4 642.8 l S
3106 0.00 0.00 0.00 rg 0.0 619.8 540.0 2.0 re f
3107 0.88 0.88 0.88 rg 0.0 499.6 540.0 14.0 re f
3108 0.0 314.0 540.0 14.0 re f
3109 113.4 288.8 m 129.6 288.8 l S
3110 129.6 288.8 m 177.5 288.8 l S
3111 0.00 0.00 0.00 rg 0.0 252.6 540.0 2.0 re f
3112 0.0 157.0 540.0 2.0 re f
3113 167.1 108.4 m 226.1 108.4 l S
3114 0.0 95.2 m 273.6 95.2 l S
3115 269.1 68.8 m 294.5 68.8 l S
3116 294.5 68.8 m 330.9 68.8 l S
3117 330.9 68.8 m 347.1 68.8 l S
3118 0.0 59.0 540.0 2.0 re f
3119 BT
3120 /F9 14 Tf 0 684 Td 0.000 Tc(6.5. After the Release)Tj
3121 /F4 11 Tf 0 -27 Td(When all \(or: most of the\) packages have been uploaded and made available, send an email to the)Tj
3122 0.00 0.00 1.00 rg ( announce mailing list)Tj
3123 0.00 0.00 0.00 rg (,)Tj
3124 0 -13.2 Td(Subject: "Version X.Y.Z available for download". Be sure to include the)Tj
3125 0.00 0.00 1.00 rg ( download location)Tj
3126 0.00 0.00 0.00 rg (, the release notes and the)Tj
3127 0 -13.2 Td(change log.)Tj
3128 /F9 17 Tf 0 -34.4 Td(7. Update the Webserver)Tj
3129 /F4 11 Tf 0 -27.6 Td(When updating the webserver, please follow these steps to make sure that no broken links, inconsistent contents or)Tj
3130 0 -13.2 Td(permission problems will occur:)Tj
3131 0 -26.4 Td(If you have changed anything in the documentation source SGML files, do:)Tj
3132 /F0 9 Tf 1.588 -25.988 Td(  make dok # \(or make redhat-dok if make dok doesn't work for you\))Tj
3133 /F4 11 Tf -1.588 -27.588 Td(That will generate )Tj
3134 /F0 11 Tf (doc/webserver/user-manual)Tj
3135 /F4 11 Tf (, )Tj
3136 /F0 11 Tf (doc/webserver/developer-manual)Tj
3137 /F4 11 Tf (,)Tj
3138 /F0 11 Tf 0 -13.2 Td(doc/webserver/faq)Tj
3139 /F4 11 Tf ( and )Tj
3140 /F0 11 Tf (doc/webserver/index.html)Tj
3141 /F4 11 Tf ( automatically.)Tj
3142 0 -26.4 Td(If you changed the manual page source, generate )Tj
3143 /F0 11 Tf (doc/webserver/man-page/privoxy-man-page.html)Tj
3144 /F4 11 Tf ( by)Tj
3145 0 -13.2 Td(running ")Tj
3146 /F5 11 Tf (make man)Tj
3147 /F4 11 Tf (". \(This is a separate target due to dependencies on some obscure perl scripts. See comments in)Tj
3148 /F0 11 Tf 0 -13.2 Td(GNUmakefile)Tj
3149 /F4 11 Tf (.\))Tj
3150 0 -26.4 Td(If you want to add new files to the webserver, create them locally in the )Tj
3151 /F0 11 Tf (doc/webserver/*)Tj
3152 /F4 11 Tf ( directory \(or create new)Tj
3153 0 -13.2 Td(directories under )Tj
3154 /F0 11 Tf (doc/webserver)Tj
3155 /F4 11 Tf (\).)Tj
3156 0 -26.4 Td(Next, commit any changes from the above steps to CVS. All set? Then do)Tj
3157 /F0 9 Tf 1.588 -25.988 Td(  make webserver)Tj
3158 /F4 11 Tf -1.588 -27.588 Td(This will do the upload to)Tj
3159 0.00 0.00 1.00 rg ( the webserver)Tj
3160 0.00 0.00 0.00 rg ( \(www.privoxy.org\) and ensure all files and directories there are group writable.)Tj
3161 0 -26.4 Td(Please do)Tj
3162 /F6 11 Tf ( NOT)Tj
3163 /F4 11 Tf ( use any other means of transferring files to the webserver to avoid permission problems.)Tj
3164 /F9 17 Tf 0 -34.4 Td(8. Contacting the developers, Bug Reporting and Feature)Tj
3165 0 -20.4 Td(Requests)Tj
3166 /F4 11 Tf 0 -27.6 Td(We value your feedback. In fact, we rely on it to improve Privoxy and its configuration. However, please note the)Tj
3167 0 -13.2 Td(following hints, so we can provide you with the best support:)Tj
3168 /F9 14 Tf 0 -31.4 Td(8.1. Get Support)Tj
3169 /F4 11 Tf 0 -27 Td(For casual users, our support forum at)Tj
3170 0.00 0.00 1.00 rg ( SourceForge)Tj
3171 0.00 0.00 0.00 rg ( is probably best suited:)Tj
3172 0.00 0.00 1.00 rg 0 -13.2 Td(http://sourceforge.net/tracker/?group_id=11118&atid=211118)Tj
3173 0.00 0.00 0.00 rg 0 -26.4 Td(All users are of course welcome to discuss their issues on the)Tj
3174 0.00 0.00 1.00 rg ( users mailing list)Tj
3175 0.00 0.00 0.00 rg (, where the developers also hang around.)Tj
3176 /F8 11 Tf 0 650.153 Td(Privoxy Developer Manual)Tj
3177 431.76 0 Td(08/06/02 10:11:29 PM)Tj
3178 -175.521 -720 Td(33/36)Tj
3179 ET
3180 Q
3181 endstream
3182 endobj
3183 398 0 obj<</Type/Page/Parent 331 0 R/Contents 399 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>/Annots 189 0 R>>endobj
3184 399 0 obj<</Length 4811      >>stream
3185 q
3186 0.93 0.93 0.93 rg 0 0 612 792 re f
3187 1 0 0 1 36 36 cm
3188 0.00 0.00 1.00 RG
3189 226.1 656.0 m 502.4 656.0 l S
3190 25.4 616.4 m 58.1 616.4 l S
3191 58.1 616.4 m 82.2 616.4 l S
3192 402.4 590.0 m 441.8 590.0 l S
3193 441.8 590.0 m 457.4 590.0 l S
3194 120.7 576.8 m 163.8 576.8 l S
3195 163.8 576.8 m 175.7 576.8 l S
3196 175.7 576.8 m 191.9 576.8 l S
3197 191.9 576.8 m 212.9 576.8 l S
3198 212.9 576.8 m 248.1 576.8 l S
3199 114.6 524.0 m 152.8 524.0 l S
3200 152.8 524.0 m 164.1 524.0 l S
3201 164.1 524.0 m 180.3 524.0 l S
3202 180.3 524.0 m 206.2 524.0 l S
3203 206.2 524.0 m 241.4 524.0 l S
3204 0.00 0.00 0.00 rg 0.0 501.0 540.0 2.0 re f
3205 7.9 439.2 m 284.3 439.2 l S
3206 0.0 429.4 540.0 2.0 re f
3207 354.8 367.6 m 499.3 367.6 l S
3208 77.6 314.8 m 157.4 314.8 l S
3209 292.5 314.8 m 314.1 314.8 l S
3210 314.1 314.8 m 348.1 314.8 l S
3211 377.4 314.8 m 410.7 314.8 l S
3212 410.7 314.8 m 434.2 314.8 l S
3213 0.0 305.0 540.0 2.0 re f
3214 113.7 230.0 m 314.8 230.0 l S
3215 0.0 220.2 540.0 2.0 re f
3216 221.5 168.0 m 366.7 168.0 l S
3217 0.0 118.6 540.0 2.0 re f
3218 BT
3219 /F9 14 Tf 0 684 Td 0.000 Tc(8.2. Report Bugs)Tj
3220 /F4 11 Tf 0 -27 Td(Please report all bugs)Tj
3221 /F6 11 Tf ( only)Tj
3222 /F4 11 Tf ( through our bug tracker:)Tj
3223 0.00 0.00 1.00 rg ( http://sourceforge.net/tracker/?group_id=11118&atid=111118)Tj
3224 0.00 0.00 0.00 rg (.)Tj
3225 0 -26.4 Td(Before doing so, please make sure that the bug has not already been submitted and observe the additional hints at the top)Tj
3226 0 -13.2 Td(of the)Tj
3227 0.00 0.00 1.00 rg ( submit form)Tj
3228 0.00 0.00 0.00 rg (.)Tj
3229 0 -26.4 Td(Please try to verify that it is a Privoxy bug, and not a browser or site bug first. If unsure, try)Tj
3230 0.00 0.00 1.00 rg ( toggling off)Tj
3231 0.00 0.00 0.00 rg ( Privoxy, and see)Tj
3232 0 -13.2 Td(if the problem persists. The)Tj
3233 0.00 0.00 1.00 rg ( appendix of the user manual)Tj
3234 0.00 0.00 0.00 rg ( also has helpful information on action debugging. If you are)Tj
3235 0 -13.2 Td(using your own custom configuration, please try the stock configs to see if the problem is configuration related.)Tj
3236 0 -26.4 Td(If not using the latest version, chances are that the bug has been found and fixed in the meantime. We would appreciate if)Tj
3237 0 -13.2 Td(you could take the time to)Tj
3238 0.00 0.00 1.00 rg ( upgrade to the latest version)Tj
3239 0.00 0.00 0.00 rg ( \(or even the latest CVS snapshot\) and verify your bug, but this is)Tj
3240 0 -13.2 Td(not required for reporting.)Tj
3241 /F9 14 Tf 0 -31.4 Td(8.3. Request New Features)Tj
3242 /F4 11 Tf 0 -27 Td(You are welcome to submit ideas on new features or other proposals for improvement through our feature request tracker)Tj
3243 0 -13.2 Td(at)Tj
3244 0.00 0.00 1.00 rg ( http://sourceforge.net/tracker/?atid=361118&group_id=11118)Tj
3245 0.00 0.00 0.00 rg (.)Tj
3246 /F9 14 Tf 0 -31.4 Td(8.4. Report Ads or Other Actions-Related Problems)Tj
3247 /F4 11 Tf 0 -27 Td(Please send feedback on ads that slipped through, innocent images that were blocked, and any other problems relating to)Tj
3248 0 -13.2 Td(the )Tj
3249 /F0 11 Tf (default.action)Tj
3250 /F4 11 Tf ( file through our actions feedback mechanism located at)Tj
3251 0.00 0.00 1.00 rg ( http://www.privoxy.org/actions/)Tj
3252 0.00 0.00 0.00 rg (. On this)Tj
3253 0 -13.2 Td(page, you will also find a bookmark which will take you back there from any troubled site and even pre-fill the form!)Tj
3254 0 -26.4 Td(New, improved )Tj
3255 /F0 11 Tf (default.action)Tj
3256 /F4 11 Tf ( files will occasionally be made available based on your feedback. These will be)Tj
3257 0 -13.2 Td(announced on the)Tj
3258 0.00 0.00 1.00 rg ( ijbswa-announce)Tj
3259 0.00 0.00 0.00 rg ( list and available from our the)Tj
3260 0.00 0.00 1.00 rg ( files section)Tj
3261 0.00 0.00 0.00 rg ( of our)Tj
3262 0.00 0.00 1.00 rg ( project page)Tj
3263 0.00 0.00 0.00 rg (.)Tj
3264 /F9 14 Tf 0 -31.4 Td(8.5. Other)Tj
3265 /F4 11 Tf 0 -27 Td(For any other issues, feel free to use the mailing lists. Technically interested users and people who wish to contribute to)Tj
3266 0 -13.2 Td(the project are also welcome on the developers list! You can find an overview of all Privoxy-related mailing lists,)Tj
3267 0 -13.2 Td(including list archives, at:)Tj
3268 0.00 0.00 1.00 rg ( http://sourceforge.net/mail/?group_id=11118)Tj
3269 0.00 0.00 0.00 rg (.)Tj
3270 /F9 17 Tf 0 -34.4 Td(9. Privoxy Copyright, License and History)Tj
3271 /F4 11 Tf 0 -27.6 Td(Copyright \251 2001, 2002 by Privoxy Developers )Tj
3272 /F0 11 Tf (<)Tj
3273 0.00 0.00 1.00 rg (developers@privoxy.org)Tj
3274 0.00 0.00 0.00 rg (>)Tj
3275 /F4 11 Tf 0 -26.4 Td(Some source code is based on code Copyright \251 1997 by Anonymous Coders and Junkbusters, Inc. and licensed under the)Tj
3276 /F6 11 Tf 0 -13.2 Td(GNU General Public License)Tj
3277 /F4 11 Tf (.)Tj
3278 /F9 14 Tf 0 -31.4 Td(9.1. License)Tj
3279 /F4 11 Tf 0 -27 Td(Privoxy is free software; you can redistribute it and/or modify it under the terms of the)Tj
3280 /F6 11 Tf ( GNU General Public License)Tj
3281 /F4 11 Tf (,)Tj
3282 0 -13.2 Td(version 2, as published by the Free Software Foundation.)Tj
3283 /F8 11 Tf 0 662.2 Td(Privoxy Developer Manual)Tj
3284 431.76 0 Td(08/06/02 10:11:29 PM)Tj
3285 -175.521 -720 Td(34/36)Tj
3286 ET
3287 Q
3288 endstream
3289 endobj
3290 400 0 obj<</Type/Page/Parent 331 0 R/Contents 401 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 9 0 R/F9 10 0 R>>/XObject<<>>>>/Annots 224 0 R>>endobj
3291 401 0 obj<</Length 4858      >>stream
3292 q
3293 0.93 0.93 0.93 rg 0 0 612 792 re f
3294 1 0 0 1 36 36 cm
3295 0.00 0.00 1.00 RG
3296 174.4 620.0 m 200.4 620.0 l S
3297 200.4 620.0 m 239.2 620.0 l S
3298 239.2 620.0 m 270.7 620.0 l S
3299 270.7 620.0 m 307.0 620.0 l S
3300 0.00 0.00 0.00 rg 0.0 544.2 540.0 2.0 re f
3301 135.6 495.6 m 172.6 495.6 l S
3302 172.6 495.6 m 223.0 495.6 l S
3303 348.6 495.6 m 403.3 495.6 l S
3304 403.3 495.6 m 459.2 495.6 l S
3305 206.2 429.6 m 239.5 429.6 l S
3306 306.1 429.6 m 360.8 429.6 l S
3307 360.8 429.6 m 416.7 429.6 l S
3308 106.6 416.4 m 130.1 416.4 l S
3309 187.3 390.0 m 232.2 390.0 l S
3310 232.2 390.0 m 267.3 390.0 l S
3311 267.3 390.0 m 279.2 390.0 l S
3312 279.2 390.0 m 295.4 390.0 l S
3313 295.4 390.0 m 336.1 390.0 l S
3314 51.3 324.0 m 101.7 324.0 l S
3315 125.9 310.8 m 146.9 310.8 l S
3316 146.9 310.8 m 184.5 310.8 l S
3317 0.0 274.6 540.0 2.0 re f
3318 1.6 194.4 m 109.1 194.4 l S
3319 1.6 164.8 m 126.3 164.8 l S
3320 1.6 135.3 m 168.7 135.3 l S
3321 312.6 135.3 m 371.6 135.3 l S
3322 1.6 105.7 m 113.4 105.7 l S
3323 478.3 105.7 m 524.2 105.7 l S
3324 1.6 76.1 m 143.4 76.1 l S
3325 1.6 46.5 m 211.5 46.5 l S
3326 BT
3327 /F4 11 Tf 0 687 Td 0.000 Tc(This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the)Tj
3328 0 -13.2 Td(implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the)Tj
3329 /F6 11 Tf ( GNU General)Tj
3330 0 -13.2 Td(Public License)Tj
3331 /F4 11 Tf ( for more details, which is available from the Free Software Foundation, Inc, 59 Temple Place - Suite 330,)Tj
3332 0 -13.2 Td(Boston, MA 02111-1307, USA.)Tj
3333 0 -26.4 Td(You should have received a copy of the)Tj
3334 0.00 0.00 1.00 rg /F6 11 Tf ( GNU General Public License)Tj
3335 0.00 0.00 0.00 rg /F4 11 Tf ( along with this program; if not, write to the)Tj
3336 0 -26.4 Td( Free Software)Tj
3337 0 -13.2 Td( Foundation, Inc. 59 Temple Place - Suite 330)Tj
3338 0 -13.2 Td( Boston, MA 02111-1307)Tj
3339 0 -13.2 Td( USA )Tj
3340 /F9 14 Tf 0 -31.4 Td(9.2. History)Tj
3341 /F4 11 Tf 0 -27 Td(In the beginning, there was the)Tj
3342 0.00 0.00 1.00 rg ( Internet Junkbuster)Tj
3343 0.00 0.00 0.00 rg (, by Anonymous Coders and)Tj
3344 0.00 0.00 1.00 rg ( Junkbusters Corporation)Tj
3345 0.00 0.00 0.00 rg (. It saved many)Tj
3346 0 -13.2 Td(users a lot of pain in the early days of web advertising and user tracking.)Tj
3347 0 -26.4 Td(But the web, its protocols and standards, and with it, the techniques for forcing users to consume ads, give up autonomy)Tj
3348 0 -13.2 Td(over their browsing, and for spying on them, kept evolving. Unfortunately, the Internet Junkbuster did not. Version 2.0.2,)Tj
3349 0 -13.2 Td(published in 1998, was \(and is\) the last official)Tj
3350 0.00 0.00 1.00 rg ( release)Tj
3351 0.00 0.00 0.00 rg ( available from)Tj
3352 0.00 0.00 1.00 rg ( Junkbusters Corporation)Tj
3353 0.00 0.00 0.00 rg (. Fortunately, it had been)Tj
3354 0 -13.2 Td(released under the GNU)Tj
3355 0.00 0.00 1.00 rg ( GPL)Tj
3356 0.00 0.00 0.00 rg (, which allowed further development by others.)Tj
3357 0 -26.4 Td(So Stefan Waldherr started maintaining an)Tj
3358 0.00 0.00 1.00 rg ( improved version of the software)Tj
3359 0.00 0.00 0.00 rg (, to which eventually a number of people)Tj
3360 0 -13.2 Td(contributed patches. It could already replace banners with a transparent image, and had a first version of pop-up killing,)Tj
3361 0 -13.2 Td(but it was still very closely based on the original, with all its limitations, such as the lack of HTTP/1.1 support, flexible)Tj
3362 0 -13.2 Td(per-site configuration, or content modification. The last release from this effort was version 2.0.2-10, published in 2000.)Tj
3363 0 -26.4 Td(Then, some)Tj
3364 0.00 0.00 1.00 rg ( developers)Tj
3365 0.00 0.00 0.00 rg ( picked up the thread, and started turning the software inside out, upside down, and then)Tj
3366 0 -13.2 Td(reassembled it, adding many)Tj
3367 0.00 0.00 1.00 rg ( new features)Tj
3368 0.00 0.00 0.00 rg ( along the way.)Tj
3369 0 -26.4 Td(The result of this is Privoxy, whose first stable release, 3.0, is due late summer or early fall 2002.)Tj
3370 /F9 17 Tf 0 -34.4 Td(10. See also)Tj
3371 /F4 11 Tf 0 -27.6 Td(Other references and sites of interest to Privoxy users:)Tj
3372 0.00 0.00 1.00 rg 1.588 -27.988 Td(http://www.privoxy.org/)Tj
3373 0.00 0.00 0.00 rg (, the Privoxy Home page.)Tj
3374 0.00 0.00 1.00 rg 0 -29.576 Td(http://www.privoxy.org/faq/)Tj
3375 0.00 0.00 0.00 rg (, the Privoxy FAQ.)Tj
3376 0.00 0.00 1.00 rg 0 -29.576 Td(http://sourceforge.net/projects/ijbswa/)Tj
3377 0.00 0.00 0.00 rg (, the Project Page for Privoxy on)Tj
3378 0.00 0.00 1.00 rg ( SourceForge)Tj
3379 0.00 0.00 0.00 rg (.)Tj
3380 0.00 0.00 1.00 rg -0 -29.576 Td(http://config.privoxy.org/)Tj
3381 0.00 0.00 0.00 rg (, the web-based user interface. Privoxy must be running for this to work. Shortcut:)Tj
3382 0.00 0.00 1.00 rg ( http://p.p/)Tj
3383 0 -29.576 Td(http://www.privoxy.org/actions/)Tj
3384 0.00 0.00 0.00 rg (, to submit "misses" to the developers.)Tj
3385 0.00 0.00 1.00 rg 0 -29.576 Td(http://www.junkbusters.com/ht/en/cookies.html)Tj
3386 0.00 0.00 0.00 rg (, an explanation how cookies are used to track web users.)Tj
3387 /F8 11 Tf -1.588 672.471 Td(Privoxy Developer Manual)Tj
3388 431.76 0 Td(08/06/02 10:11:29 PM)Tj
3389 -175.521 -720 Td(35/36)Tj
3390 ET
3391 Q
3392 endstream
3393 endobj
3394 402 0 obj<</Type/Page/Parent 331 0 R/Contents 403 0 R/MediaBox[0 0 612 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F8 9 0 R>>/XObject<<>>>>/Annots 235 0 R>>endobj
3395 403 0 obj<</Length 1117      >>stream
3396 q
3397 0.93 0.93 0.93 rg 0 0 612 792 re f
3398 1 0 0 1 36 36 cm
3399 0.00 0.00 1.00 RG
3400 1.6 684.4 m 164.5 684.4 l S
3401 1.6 654.8 m 163.5 654.8 l S
3402 1.6 625.3 m 116.8 625.3 l S
3403 1.6 595.7 m 130.0 595.7 l S
3404 1.6 566.1 m 194.2 566.1 l S
3405 BT
3406 0.00 0.00 1.00 rg /F4 11 Tf 1.588 685.412 Td 0.000 Tc(http://www.junkbusters.com/ijb.html)Tj
3407 0.00 0.00 0.00 rg (, the original Internet Junkbuster.)Tj
3408 0.00 0.00 1.00 rg 0 -29.577 Td(http://www.waldherr.org/junkbuster/)Tj
3409 0.00 0.00 0.00 rg (, Stefan Waldherr's version of Junkbuster, from which Privoxy was derived.)Tj
3410 0.00 0.00 1.00 rg -0 -29.577 Td(http://privacy.net/analyze/)Tj
3411 0.00 0.00 0.00 rg (, a useful site to check what information about you is leaked while you browse the web.)Tj
3412 0.00 0.00 1.00 rg 0 -29.577 Td(http://www.squid-cache.org/)Tj
3413 0.00 0.00 0.00 rg (, a very popular caching proxy, which is often used together with Privoxy.)Tj
3414 0.00 0.00 1.00 rg 0 -29.577 Td(http://www.privoxy.org/developer-manual/)Tj
3415 0.00 0.00 0.00 rg (, the Privoxy developer manual.)Tj
3416 /F8 11 Tf -1.588 152.894 Td(Privoxy Developer Manual)Tj
3417 431.76 0 Td(08/06/02 10:11:29 PM)Tj
3418 -175.521 -720 Td(36/36)Tj
3419 ET
3420 Q
3421 endstream
3422 endobj
3423 404 0 obj<</Type/Catalog/Pages 331 0 R/PageLayout/SinglePage/PageMode/UseNone/PageLabels<</Nums[0<</S/D/St 1/P()>>0<</S/D/St 1/P()>>]>>>>endobj
3424 xref
3425 0 405 
3426 0000000000 65535 f 
3427 0000000015 00000 n 
3428 0000000247 00000 n 
3429 0000001813 00000 n 
3430 0000001887 00000 n 
3431 0000001969 00000 n 
3432 0000002047 00000 n 
3433 0000002124 00000 n 
3434 0000002203 00000 n 
3435 0000002286 00000 n 
3436 0000002362 00000 n 
3437 0000002444 00000 n 
3438 0000002503 00000 n 
3439 0000002603 00000 n 
3440 0000002656 00000 n 
3441 0000002741 00000 n 
3442 0000002812 00000 n 
3443 0000002897 00000 n 
3444 0000002999 00000 n 
3445 0000003099 00000 n 
3446 0000003200 00000 n 
3447 0000003301 00000 n 
3448 0000003402 00000 n 
3449 0000003503 00000 n 
3450 0000003604 00000 n 
3451 0000003705 00000 n 
3452 0000003806 00000 n 
3453 0000003907 00000 n 
3454 0000004008 00000 n 
3455 0000004109 00000 n 
3456 0000004210 00000 n 
3457 0000004311 00000 n 
3458 0000004412 00000 n 
3459 0000004514 00000 n 
3460 0000004616 00000 n 
3461 0000004718 00000 n 
3462 0000004820 00000 n 
3463 0000004922 00000 n 
3464 0000005024 00000 n 
3465 0000005125 00000 n 
3466 0000005227 00000 n 
3467 0000005329 00000 n 
3468 0000005431 00000 n 
3469 0000005533 00000 n 
3470 0000005635 00000 n 
3471 0000005736 00000 n 
3472 0000005838 00000 n 
3473 0000005940 00000 n 
3474 0000006042 00000 n 
3475 0000006144 00000 n 
3476 0000006246 00000 n 
3477 0000006348 00000 n 
3478 0000006449 00000 n 
3479 0000006548 00000 n 
3480 0000006648 00000 n 
3481 0000006944 00000 n 
3482 0000007045 00000 n 
3483 0000007147 00000 n 
3484 0000007249 00000 n 
3485 0000007351 00000 n 
3486 0000007453 00000 n 
3487 0000007555 00000 n 
3488 0000007657 00000 n 
3489 0000007759 00000 n 
3490 0000007861 00000 n 
3491 0000007963 00000 n 
3492 0000008064 00000 n 
3493 0000008166 00000 n 
3494 0000008268 00000 n 
3495 0000008370 00000 n 
3496 0000008472 00000 n 
3497 0000008574 00000 n 
3498 0000008676 00000 n 
3499 0000008778 00000 n 
3500 0000008880 00000 n 
3501 0000008982 00000 n 
3502 0000009084 00000 n 
3503 0000009185 00000 n 
3504 0000009286 00000 n 
3505 0000009387 00000 n 
3506 0000009488 00000 n 
3507 0000009589 00000 n 
3508 0000009690 00000 n 
3509 0000009791 00000 n 
3510 0000009892 00000 n 
3511 0000009994 00000 n 
3512 0000010096 00000 n 
3513 0000010198 00000 n 
3514 0000010300 00000 n 
3515 0000010402 00000 n 
3516 0000010504 00000 n 
3517 0000010606 00000 n 
3518 0000010708 00000 n 
3519 0000010810 00000 n 
3520 0000010912 00000 n 
3521 0000011014 00000 n 
3522 0000011116 00000 n 
3523 0000011217 00000 n 
3524 0000011318 00000 n 
3525 0000011419 00000 n 
3526 0000011520 00000 n 
3527 0000011622 00000 n 
3528 0000011724 00000 n 
3529 0000011826 00000 n 
3530 0000011927 00000 n 
3531 0000012027 00000 n 
3532 0000012127 00000 n 
3533 0000012507 00000 n 
3534 0000012609 00000 n 
3535 0000012711 00000 n 
3536 0000012812 00000 n 
3537 0000012867 00000 n 
3538 0000012954 00000 n 
3539 0000013015 00000 n 
3540 0000013102 00000 n 
3541 0000013157 00000 n 
3542 0000013244 00000 n 
3543 0000013317 00000 n 
3544 0000013404 00000 n 
3545 0000013477 00000 n 
3546 0000013538 00000 n 
3547 0000013625 00000 n 
3548 0000013686 00000 n 
3549 0000013773 00000 n 
3550 0000013875 00000 n 
3551 0000013962 00000 n 
3552 0000014016 00000 n 
3553 0000014101 00000 n 
3554 0000014144 00000 n 
3555 0000014231 00000 n 
3556 0000014274 00000 n 
3557 0000014361 00000 n 
3558 0000014426 00000 n 
3559 0000014513 00000 n 
3560 0000014600 00000 n 
3561 0000014625 00000 n 
3562 0000014724 00000 n 
3563 0000014811 00000 n 
3564 0000014836 00000 n 
3565 0000014927 00000 n 
3566 0000015013 00000 n 
3567 0000015038 00000 n 
3568 0000015096 00000 n 
3569 0000015183 00000 n 
3570 0000015208 00000 n 
3571 0000015262 00000 n 
3572 0000015349 00000 n 
3573 0000015374 00000 n 
3574 0000015443 00000 n 
3575 0000015530 00000 n 
3576 0000015630 00000 n 
3577 0000015717 00000 n 
3578 0000015750 00000 n 
3579 0000015826 00000 n 
3580 0000015913 00000 n 
3581 0000016004 00000 n 
3582 0000016091 00000 n 
3583 0000016146 00000 n 
3584 0000016233 00000 n 
3585 0000016288 00000 n 
3586 0000016375 00000 n 
3587 0000016465 00000 n 
3588 0000016551 00000 n 
3589 0000016639 00000 n 
3590 0000016726 00000 n 
3591 0000016791 00000 n 
3592 0000016881 00000 n 
3593 0000016968 00000 n 
3594 0000017067 00000 n 
3595 0000017153 00000 n 
3596 0000017365 00000 n 
3597 0000017452 00000 n 
3598 0000017544 00000 n 
3599 0000017631 00000 n 
3600 0000017715 00000 n 
3601 0000017802 00000 n 
3602 0000017892 00000 n 
3603 0000017978 00000 n 
3604 0000018175 00000 n 
3605 0000018262 00000 n 
3606 0000018353 00000 n 
3607 0000018440 00000 n 
3608 0000018531 00000 n 
3609 0000018618 00000 n 
3610 0000018680 00000 n 
3611 0000018767 00000 n 
3612 0000018842 00000 n 
3613 0000018929 00000 n 
3614 0000018990 00000 n 
3615 0000019077 00000 n 
3616 0000019190 00000 n 
3617 0000019258 00000 n 
3618 0000019345 00000 n 
3619 0000019412 00000 n 
3620 0000019499 00000 n 
3621 0000019558 00000 n 
3622 0000019645 00000 n 
3623 0000019724 00000 n 
3624 0000019811 00000 n 
3625 0000019869 00000 n 
3626 0000019956 00000 n 
3627 0000020024 00000 n 
3628 0000020111 00000 n 
3629 0000020178 00000 n 
3630 0000020265 00000 n 
3631 0000020354 00000 n 
3632 0000020440 00000 n 
3633 0000020533 00000 n 
3634 0000020620 00000 n 
3635 0000020675 00000 n 
3636 0000020761 00000 n 
3637 0000020820 00000 n 
3638 0000020906 00000 n 
3639 0000020977 00000 n 
3640 0000021063 00000 n 
3641 0000021117 00000 n 
3642 0000021204 00000 n 
3643 0000021262 00000 n 
3644 0000021348 00000 n 
3645 0000021391 00000 n 
3646 0000021478 00000 n 
3647 0000021675 00000 n 
3648 0000021761 00000 n 
3649 0000021838 00000 n 
3650 0000021922 00000 n 
3651 0000022075 00000 n 
3652 0000022142 00000 n 
3653 0000022228 00000 n 
3654 0000022295 00000 n 
3655 0000022381 00000 n 
3656 0000022440 00000 n 
3657 0000022526 00000 n 
3658 0000022585 00000 n 
3659 0000022671 00000 n 
3660 0000022743 00000 n 
3661 0000022829 00000 n 
3662 0000022886 00000 n 
3663 0000022920 00000 n 
3664 0000022954 00000 n 
3665 0000024516 00000 n 
3666 0000024559 00000 n 
3667 0000024602 00000 n 
3668 0000024650 00000 n 
3669 0000024693 00000 n 
3670 0000024741 00000 n 
3671 0000024784 00000 n 
3672 0000024827 00000 n 
3673 0000024870 00000 n 
3674 0000024913 00000 n 
3675 0000024956 00000 n 
3676 0000024999 00000 n 
3677 0000025042 00000 n 
3678 0000025085 00000 n 
3679 0000025128 00000 n 
3680 0000025171 00000 n 
3681 0000025214 00000 n 
3682 0000025257 00000 n 
3683 0000025300 00000 n 
3684 0000025343 00000 n 
3685 0000025386 00000 n 
3686 0000025429 00000 n 
3687 0000025472 00000 n 
3688 0000025515 00000 n 
3689 0000025558 00000 n 
3690 0000025601 00000 n 
3691 0000025644 00000 n 
3692 0000025687 00000 n 
3693 0000025730 00000 n 
3694 0000025773 00000 n 
3695 0000025816 00000 n 
3696 0000025859 00000 n 
3697 0000025902 00000 n 
3698 0000025945 00000 n 
3699 0000025988 00000 n 
3700 0000026031 00000 n 
3701 0000026079 00000 n 
3702 0000026122 00000 n 
3703 0000026165 00000 n 
3704 0000026208 00000 n 
3705 0000026251 00000 n 
3706 0000026294 00000 n 
3707 0000026337 00000 n 
3708 0000026380 00000 n 
3709 0000026423 00000 n 
3710 0000026466 00000 n 
3711 0000026509 00000 n 
3712 0000026552 00000 n 
3713 0000026595 00000 n 
3714 0000026638 00000 n 
3715 0000026681 00000 n 
3716 0000026724 00000 n 
3717 0000026767 00000 n 
3718 0000026810 00000 n 
3719 0000026853 00000 n 
3720 0000026896 00000 n 
3721 0000026939 00000 n 
3722 0000026982 00000 n 
3723 0000027025 00000 n 
3724 0000027068 00000 n 
3725 0000027111 00000 n 
3726 0000027154 00000 n 
3727 0000027197 00000 n 
3728 0000027240 00000 n 
3729 0000027283 00000 n 
3730 0000027326 00000 n 
3731 0000027369 00000 n 
3732 0000027412 00000 n 
3733 0000027455 00000 n 
3734 0000027498 00000 n 
3735 0000027541 00000 n 
3736 0000027584 00000 n 
3737 0000027627 00000 n 
3738 0000027670 00000 n 
3739 0000027713 00000 n 
3740 0000027756 00000 n 
3741 0000027799 00000 n 
3742 0000027842 00000 n 
3743 0000027885 00000 n 
3744 0000027928 00000 n 
3745 0000027971 00000 n 
3746 0000028014 00000 n 
3747 0000028057 00000 n 
3748 0000028100 00000 n 
3749 0000028143 00000 n 
3750 0000028186 00000 n 
3751 0000028229 00000 n 
3752 0000028272 00000 n 
3753 0000028315 00000 n 
3754 0000028358 00000 n 
3755 0000028401 00000 n 
3756 0000028444 00000 n 
3757 0000028487 00000 n 
3758 0000028822 00000 n 
3759 0000029020 00000 n 
3760 0000037487 00000 n 
3761 0000037658 00000 n 
3762 0000049304 00000 n 
3763 0000049513 00000 n 
3764 0000054012 00000 n 
3765 0000054211 00000 n 
3766 0000060031 00000 n 
3767 0000060240 00000 n 
3768 0000064691 00000 n 
3769 0000064885 00000 n 
3770 0000068291 00000 n 
3771 0000068485 00000 n 
3772 0000072169 00000 n 
3773 0000072353 00000 n 
3774 0000074759 00000 n 
3775 0000074943 00000 n 
3776 0000077694 00000 n 
3777 0000077878 00000 n 
3778 0000080823 00000 n 
3779 0000081007 00000 n 
3780 0000083597 00000 n 
3781 0000083781 00000 n 
3782 0000086196 00000 n 
3783 0000086380 00000 n 
3784 0000088619 00000 n 
3785 0000088803 00000 n 
3786 0000091285 00000 n 
3787 0000091469 00000 n 
3788 0000093774 00000 n 
3789 0000093958 00000 n 
3790 0000096556 00000 n 
3791 0000096740 00000 n 
3792 0000099955 00000 n 
3793 0000100139 00000 n 
3794 0000102458 00000 n 
3795 0000102642 00000 n 
3796 0000105298 00000 n 
3797 0000105482 00000 n 
3798 0000108779 00000 n 
3799 0000108963 00000 n 
3800 0000111962 00000 n 
3801 0000112146 00000 n 
3802 0000115271 00000 n 
3803 0000115445 00000 n 
3804 0000119302 00000 n 
3805 0000119467 00000 n 
3806 0000121898 00000 n 
3807 0000122107 00000 n 
3808 0000125386 00000 n 
3809 0000125589 00000 n 
3810 0000130999 00000 n 
3811 0000131193 00000 n 
3812 0000135233 00000 n 
3813 0000135451 00000 n 
3814 0000139156 00000 n 
3815 0000139364 00000 n 
3816 0000143000 00000 n 
3817 0000143208 00000 n 
3818 0000146778 00000 n 
3819 0000146971 00000 n 
3820 0000150345 00000 n 
3821 0000150563 00000 n 
3822 0000154297 00000 n 
3823 0000154505 00000 n 
3824 0000158335 00000 n 
3825 0000158534 00000 n 
3826 0000163400 00000 n 
3827 0000163599 00000 n 
3828 0000168512 00000 n 
3829 0000168692 00000 n 
3830 0000169864 00000 n 
3831 trailer
3832 <</Size 405/Root 404 0 R/Info 1 0 R/ID[<bf115c7ece6049cb05422452ef2ab6e1><bf115c7ece6049cb05422452ef2ab6e1>]>>
3833 startxref
3834 170008
3835 %%EOF