bf25e6c2ccd2c955f29fb7eb5414c46811f4c04d
[privoxy.git] / doc / webserver / developer-manual / documentation.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
2 <HTML
3 ><HEAD
4 ><TITLE
5 >Documentation Guidelines</TITLE
6 ><META
7 NAME="GENERATOR"
8 CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
9 REL="HOME"
10 TITLE="Privoxy Developer Manual"
11 HREF="index.html"><LINK
12 REL="PREVIOUS"
13 TITLE="The CVS Repository"
14 HREF="cvs.html"><LINK
15 REL="NEXT"
16 TITLE="Coding Guidelines"
17 HREF="coding.html"><LINK
18 REL="STYLESHEET"
19 TYPE="text/css"
20 HREF="../p_doc.css"><META
21 HTTP-EQUIV="Content-Type"
22 CONTENT="text/html;
23 charset=ISO-8859-1"></HEAD
24 ><BODY
25 CLASS="SECT1"
26 BGCOLOR="#EEEEEE"
27 TEXT="#000000"
28 LINK="#0000FF"
29 VLINK="#840084"
30 ALINK="#0000FF"
31 ><DIV
32 CLASS="NAVHEADER"
33 ><TABLE
34 SUMMARY="Header navigation table"
35 WIDTH="100%"
36 BORDER="0"
37 CELLPADDING="0"
38 CELLSPACING="0"
39 ><TR
40 ><TH
41 COLSPAN="3"
42 ALIGN="center"
43 >Privoxy Developer Manual</TH
44 ></TR
45 ><TR
46 ><TD
47 WIDTH="10%"
48 ALIGN="left"
49 VALIGN="bottom"
50 ><A
51 HREF="cvs.html"
52 ACCESSKEY="P"
53 >Prev</A
54 ></TD
55 ><TD
56 WIDTH="80%"
57 ALIGN="center"
58 VALIGN="bottom"
59 ></TD
60 ><TD
61 WIDTH="10%"
62 ALIGN="right"
63 VALIGN="bottom"
64 ><A
65 HREF="coding.html"
66 ACCESSKEY="N"
67 >Next</A
68 ></TD
69 ></TR
70 ></TABLE
71 ><HR
72 ALIGN="LEFT"
73 WIDTH="100%"></DIV
74 ><DIV
75 CLASS="SECT1"
76 ><H1
77 CLASS="SECT1"
78 ><A
79 NAME="DOCUMENTATION"
80 >3. Documentation Guidelines</A
81 ></H1
82 ><P
83 >    All formal documents are maintained in Docbook SGML and located in the
84     <SAMP
85 CLASS="COMPUTEROUTPUT"
86 >doc/source/*</SAMP
87 > directory. You will need
88     <A
89 HREF="http://www.docbook.org"
90 TARGET="_top"
91 >Docbook</A
92 >, the Docbook
93     DTD's and the Docbook modular stylesheets (or comparable alternatives),
94     and either <SPAN
95 CLASS="APPLICATION"
96 >jade</SPAN
97 > or
98     <SPAN
99 CLASS="APPLICATION"
100 >openjade</SPAN
101 > (recommended) installed in order to
102     build docs from source. Currently there is <A
103 HREF="../user-manual/index.html"
104 TARGET="_top"
105 ><I
106 CLASS="CITETITLE"
107 >user-manual</I
108 ></A
109 >,
110     <A
111 HREF="../faq/index.html"
112 TARGET="_top"
113 ><I
114 CLASS="CITETITLE"
115 >FAQ</I
116 ></A
117 >, and, of
118     course this, the <I
119 CLASS="CITETITLE"
120 >developer-manual</I
121 > in this format.
122     The <I
123 CLASS="CITETITLE"
124 >README</I
125 >, <I
126 CLASS="CITETITLE"
127 >AUTHORS</I
128 >,
129     <I
130 CLASS="CITETITLE"
131 >INSTALL</I
132 >,
133     <I
134 CLASS="CITETITLE"
135 >privoxy.1</I
136 > (man page), and
137     <I
138 CLASS="CITETITLE"
139 >config</I
140 > files are also now maintained as Docbook
141     SGML. These files, when built, in the top-level source directory are
142     generated files! Also, the <SPAN
143 CLASS="APPLICATION"
144 >Privoxy</SPAN
145 > <TT
146 CLASS="FILENAME"
147 >index.html</TT
148 > (and a
149     variation on this file, <TT
150 CLASS="FILENAME"
151 >privoxy-index.html</TT
152 >,
153     meant for inclusion with doc packages), are maintained as SGML as well.
154     <SPAN
155 CLASS="emphasis"
156 ><I
157 CLASS="EMPHASIS"
158 >DO NOT edit these directly</I
159 ></SPAN
160 >. Edit the SGML source, or
161     contact someone involved in the documentation.
162     </P
163 ><P
164 >     <TT
165 CLASS="FILENAME"
166 >config</TT
167 > requires some special handling. The reason it
168      is maintained this way is so that the extensive comments in the file
169      mirror those in <I
170 CLASS="CITETITLE"
171 >user-manual</I
172 >. But the conversion
173      process requires going from SGML to HTML to text to special formatting
174      required for the embedded comments. Some of this does not survive so
175      well. Especially some of the examples that are longer than 80 characters.
176      The build process for this file outputs to <TT
177 CLASS="FILENAME"
178 >config.new</TT
179 >,
180      which should be reviewed for errors and mis-formatting. Once satisfied
181      that it is correct, then it should be hand copied to
182      <TT
183 CLASS="FILENAME"
184 >config</TT
185 >.
186     </P
187 ><P
188 >     Other, less formal documents (e.g. <TT
189 CLASS="FILENAME"
190 >LICENSE</TT
191 >) are
192      maintained as plain text files in the top-level source directory.
193     </P
194 ><P
195 >     Packagers are encouraged to include this documentation. For those without
196      the ability to build the docs locally, text versions of each are kept in
197      CVS. HTML versions are also being kept in CVS under
198      <TT
199 CLASS="FILENAME"
200 >doc/webserver/*</TT
201 >.
202     </P
203 ><P
204 >     Formal documents are built with the Makefile targets of
205      <SAMP
206 CLASS="COMPUTEROUTPUT"
207 >make dok</SAMP
208 >.
209      The build process uses the document SGML sources in
210      <SAMP
211 CLASS="COMPUTEROUTPUT"
212 >doc/source/*/*</SAMP
213 > to update all text files in
214      <SAMP
215 CLASS="COMPUTEROUTPUT"
216 >doc/text/</SAMP
217 > and to update all HTML
218      documents in <SAMP
219 CLASS="COMPUTEROUTPUT"
220 >doc/webserver/</SAMP
221 >.
222     </P
223 ><P
224 >     Documentation writers should please make sure documents build
225      successfully before committing to CVS, if possible.
226     </P
227 ><P
228 >     How do you update the webserver (i.e. the pages on privoxy.org)?
229     </P
230 ><P
231 ></P
232 ><OL
233 TYPE="1"
234 ><LI
235 ><P
236 >        First, build the docs by running <SAMP
237 CLASS="COMPUTEROUTPUT"
238 >make
239         dok</SAMP
240 >.
241       </P
242 ></LI
243 ><LI
244 ><P
245 >        Run <SAMP
246 CLASS="COMPUTEROUTPUT"
247 >make webserver</SAMP
248 > which copies all
249         files from <SAMP
250 CLASS="COMPUTEROUTPUT"
251 >doc/webserver</SAMP
252 > to the
253         sourceforge webserver via scp.
254       </P
255 ></LI
256 ></OL
257 ><P
258 >   Finished docs should be occasionally submitted to CVS
259    (<TT
260 CLASS="FILENAME"
261 >doc/webserver/*/*.html</TT
262 >) so that those without
263    the ability to build them locally, have access to them if needed.
264    This is especially important just prior to a new release! Please
265    do this <SPAN
266 CLASS="emphasis"
267 ><I
268 CLASS="EMPHASIS"
269 >after</I
270 ></SPAN
271 > the <TT
272 CLASS="LITERAL"
273 >$VERSION</TT
274 > and
275    other release specific data in <TT
276 CLASS="FILENAME"
277 >configure.in</TT
278 > has been
279    updated (this is done just prior to a new release).
280   </P
281 ><DIV
282 CLASS="SECT2"
283 ><H2
284 CLASS="SECT2"
285 ><A
286 NAME="SGML"
287 >3.1. Quickstart to Docbook and SGML</A
288 ></H2
289 ><P
290 > If you are not familiar with SGML, it is a markup language similar to HTML.
291  Actually, not a mark up language per se, but a language used to define
292  markup languages. In fact, HTML is an SGML application. Both will use
293  <SPAN
294 CLASS="QUOTE"
295 >"tags"</SPAN
296 > to format text and other content. SGML tags can be much
297  more varied, and flexible, but do much of the same kinds of things. The tags,
298  or <SPAN
299 CLASS="QUOTE"
300 >"elements"</SPAN
301 >, are definable in SGML. There is no set
302  <SPAN
303 CLASS="QUOTE"
304 >"standards"</SPAN
305 >. Since we are using
306  <SPAN
307 CLASS="APPLICATION"
308 >Docbook</SPAN
309 >, our tags are those that are defined by
310  <SPAN
311 CLASS="APPLICATION"
312 >Docbook</SPAN
313 >. Much of how the finish document is
314  rendered is determined by the <SPAN
315 CLASS="QUOTE"
316 >"stylesheets"</SPAN
317 >.
318  The stylesheets determine how each tag gets translated to HTML, or other
319  formats.</P
320 ><P
321 > Tags in Docbook SGML need to be always <SPAN
322 CLASS="QUOTE"
323 >"closed"</SPAN
324 >. If not, you
325  will likely generate errors. Example: <TT
326 CLASS="LITERAL"
327 >&#60;title&#62;My
328  Title&#60;/title&#62;</TT
329 >. They are also case-insensitive, but we
330  strongly suggest using all lower case. This keeps compatibility with
331  [Docbook] <SPAN
332 CLASS="APPLICATION"
333 >XML</SPAN
334 >.</P
335 ><P
336 > Our documents use <SPAN
337 CLASS="QUOTE"
338 >"sections"</SPAN
339 > for the most part. Sections
340  will be processed into HTML headers (e.g. <TT
341 CLASS="LITERAL"
342 >h1</TT
343 > for
344  <TT
345 CLASS="LITERAL"
346 >sect1</TT
347 >). The <SPAN
348 CLASS="APPLICATION"
349 >Docbook</SPAN
350 > stylesheets
351  will use these to also generate the Table of Contents for each doc. Our
352  TOC's are set to a depth of three. Meaning <TT
353 CLASS="LITERAL"
354 >sect1</TT
355 >,
356  <TT
357 CLASS="LITERAL"
358 >sect2</TT
359 >, and <TT
360 CLASS="LITERAL"
361 >sect3</TT
362 > will have TOC
363  entries, but <TT
364 CLASS="LITERAL"
365 >sect4</TT
366 > will not. Each section requires
367  a <TT
368 CLASS="LITERAL"
369 >&#60;title&#62;</TT
370 > element, and at least one
371  <TT
372 CLASS="LITERAL"
373 >&#60;para&#62;</TT
374 >. There is a limit of five section
375  levels in Docbook, but generally three should be sufficient for our
376  purposes.</P
377 ><P
378 > Some common elements that you likely will use:</P
379 ><P
380 ></P
381 ><TABLE
382 BORDER="0"
383 ><TBODY
384 ><TR
385 ><TD
386 >      <SPAN
387 CLASS="emphasis"
388 ><I
389 CLASS="EMPHASIS"
390 >&#60;para&#62;&#60;/para&#62;</I
391 ></SPAN
392 >, paragraph delimiter. Most
393       text needs to be within paragraph elements (there are some exceptions).
394     </TD
395 ></TR
396 ><TR
397 ><TD
398 >      <SPAN
399 CLASS="emphasis"
400 ><I
401 CLASS="EMPHASIS"
402 >&#60;emphasis&#62;&#60;/emphasis&#62;</I
403 ></SPAN
404 >, the stylesheets
405       make this italics.
406     </TD
407 ></TR
408 ><TR
409 ><TD
410 >      <SPAN
411 CLASS="emphasis"
412 ><I
413 CLASS="EMPHASIS"
414 >&#60;filename&#62;&#60;/filename&#62;</I
415 ></SPAN
416 >, files and directories.
417     </TD
418 ></TR
419 ><TR
420 ><TD
421 >      <SPAN
422 CLASS="emphasis"
423 ><I
424 CLASS="EMPHASIS"
425 >&#60;command&#62;&#60;/command&#62;</I
426 ></SPAN
427 >, command examples.
428     </TD
429 ></TR
430 ><TR
431 ><TD
432 >      <SPAN
433 CLASS="emphasis"
434 ><I
435 CLASS="EMPHASIS"
436 >&#60;literallayout&#62;&#60;/literallayout&#62;</I
437 ></SPAN
438 >, like
439       <TT
440 CLASS="LITERAL"
441 >&#60;pre&#62;</TT
442 >, more or less.
443     </TD
444 ></TR
445 ><TR
446 ><TD
447 >      <SPAN
448 CLASS="emphasis"
449 ><I
450 CLASS="EMPHASIS"
451 >&#60;itemizedlist&#62;&#60;/itemizedlist&#62;</I
452 ></SPAN
453 >, list with bullets.
454     </TD
455 ></TR
456 ><TR
457 ><TD
458 >      <SPAN
459 CLASS="emphasis"
460 ><I
461 CLASS="EMPHASIS"
462 >&#60;listitem&#62;&#60;/listitem&#62;</I
463 ></SPAN
464 >, member of the above.
465     </TD
466 ></TR
467 ><TR
468 ><TD
469 >      <SPAN
470 CLASS="emphasis"
471 ><I
472 CLASS="EMPHASIS"
473 >&#60;screen&#62;&#60;/screen&#62;</I
474 ></SPAN
475 >, screen output, implies
476       <TT
477 CLASS="LITERAL"
478 >&#60;literallayout&#62;</TT
479 >.
480     </TD
481 ></TR
482 ><TR
483 ><TD
484 >      <SPAN
485 CLASS="emphasis"
486 ><I
487 CLASS="EMPHASIS"
488 >&#60;ulink url="example.com"&#62;&#60;/ulink&#62;</I
489 ></SPAN
490 >, like
491       HTML <TT
492 CLASS="LITERAL"
493 >&#60;a&#62;</TT
494 > tag.
495     </TD
496 ></TR
497 ><TR
498 ><TD
499 >      <SPAN
500 CLASS="emphasis"
501 ><I
502 CLASS="EMPHASIS"
503 >&#60;quote&#62;&#60;/quote&#62;</I
504 ></SPAN
505 >, for, doh, quoting text.
506     </TD
507 ></TR
508 ></TBODY
509 ></TABLE
510 ><P
511 ></P
512 ><P
513 > Look at any of the existing docs for examples of all these and more.</P
514 ><P
515 > You might also find
516  
517  <SPAN
518 CLASS="QUOTE"
519 >"<A
520 HREF="https://web.archive.org/web/20160315230758/http://opensource.bureau-cornavin.com/crash-course/index.html"
521 TARGET="_top"
522 > Writing Documentation Using DocBook - A Crash Course</A
523 >"</SPAN
524 > useful.</P
525 ></DIV
526 ><DIV
527 CLASS="SECT2"
528 ><H2
529 CLASS="SECT2"
530 ><A
531 NAME="DOCSTYLE"
532 >3.2. <SPAN
533 CLASS="APPLICATION"
534 >Privoxy</SPAN
535 > Documentation Style</A
536 ></H2
537 ><P
538 >    It will be easier if everyone follows a similar writing style. This
539     just makes it easier to read what someone else has written if it
540     is all done in a similar fashion.
541    </P
542 ><P
543 >    Here it is:
544    </P
545 ><P
546 ></P
547 ><UL
548 ><LI
549 ><P
550 >       All tags should be lower case.
551       </P
552 ></LI
553 ><LI
554 ><P
555 >       Tags delimiting a <SPAN
556 CLASS="emphasis"
557 ><I
558 CLASS="EMPHASIS"
559 >block</I
560 ></SPAN
561 > of text (even small
562        blocks) should be on their own line. Like:
563      </P
564 ><P
565 CLASS="LITERALLAYOUT"
566 >&nbsp;&#60;para&#62;<br>
567 &nbsp;&nbsp;Some&nbsp;text&nbsp;goes&nbsp;here.<br>
568 &nbsp;&#60;/para&#62;<br>
569 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
570 ><P
571 >       Tags marking individual words, or few words, should be in-line:
572      </P
573 ><P
574 CLASS="LITERALLAYOUT"
575 >&nbsp;&nbsp;Just&nbsp;to&nbsp;&#60;emphasis&#62;emphasize&#60;/emphasis&#62;,&nbsp;some&nbsp;text&nbsp;goes&nbsp;here.<br>
576 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
577 ></LI
578 ><LI
579 ><P
580 >      Tags should be nested and step indented for block text like: (except
581       in-line tags)
582     </P
583 ><P
584 CLASS="LITERALLAYOUT"
585 >&nbsp;&#60;para&#62;<br>
586 &nbsp;&nbsp;&#60;itemizedlist&#62;<br>
587 &nbsp;&nbsp;&nbsp;&#60;para&#62;<br>
588 &nbsp;&nbsp;&nbsp;&nbsp;&#60;listitem&#62;<br>
589 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Some&nbsp;text&nbsp;goes&nbsp;here&nbsp;in&nbsp;our&nbsp;list&nbsp;example.<br>
590 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;/listitem&#62;<br>
591 &nbsp;&nbsp;&nbsp;&#60;/para&#62;<br>
592 &nbsp;&nbsp;&#60;/itemizedlist&#62;<br>
593 &nbsp;&#60;/para&#62;<br>
594 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
595 ><P
596 >      This makes it easier to find the text amongst the tags ;-)
597     </P
598 ></LI
599 ><LI
600 ><P
601 >     Use white space to separate logical divisions within a document,
602      like between sections. Running everything together consistently
603      makes it harder to read and work on.
604     </P
605 ></LI
606 ><LI
607 ><P
608 >     Do not hesitate to make comments. Comments can either use the
609      &#60;comment&#62; element, or the &#60;!--  --&#62; style comment
610      familiar from HTML. (Note in Docbook v4.x &#60;comment&#62; is
611      replaced by &#60;remark&#62;.)
612     </P
613 ></LI
614 ><LI
615 ><P
616 >     We have an international audience. Refrain from slang, or English
617      idiosyncrasies (too many to list :). Humor also does not translate
618      well sometimes.
619    </P
620 ></LI
621 ><LI
622 ><P
623 >    Try to keep overall line lengths in source files to 80 characters or less
624     for obvious reasons. This is not always possible, with lengthy URLs for
625     instance.
626    </P
627 ></LI
628 ><LI
629 ><P
630 >    Our documents are available in differing formats. Right now, they
631     are just plain text and/or HTML, but others are always a
632     future possibility. Be careful with URLs (&#60;ulink&#62;), and avoid
633     this mistake:
634    </P
635 ><P
636 >     My favorite site is &#60;ulink url="http://example.com"&#62;here&#60;/ulink&#62;.
637    </P
638 ><P
639 >     This will render as <SPAN
640 CLASS="QUOTE"
641 >"My favorite site is here"</SPAN
642 >, which is
643      not real helpful in a text doc. Better like this:
644    </P
645 ><P
646 >     My favorite site is &#60;ulink url="http://example.com"&#62;example.com&#60;/ulink&#62;.
647    </P
648 ></LI
649 ><LI
650 ><P
651 >    All documents should be spell checked occasionally.
652     <SPAN
653 CLASS="APPLICATION"
654 >aspell</SPAN
655 > can check SGML with the
656     <TT
657 CLASS="LITERAL"
658 >-H</TT
659 > option. (<SPAN
660 CLASS="APPLICATION"
661 >ispell</SPAN
662 > I think
663     too.)
664    </P
665 ></LI
666 ></UL
667 ></DIV
668 ><DIV
669 CLASS="SECT2"
670 ><H2
671 CLASS="SECT2"
672 ><A
673 NAME="AEN205"
674 >3.3. Privoxy Custom Entities</A
675 ></H2
676 ><P
677 >  <SPAN
678 CLASS="APPLICATION"
679 >Privoxy</SPAN
680 > documentation is using
681   a number of customized <SPAN
682 CLASS="QUOTE"
683 >"entities"</SPAN
684 > to facilitate
685   documentation maintenance.
686  </P
687 ><P
688 >  We are using a set of <SPAN
689 CLASS="QUOTE"
690 >"boilerplate"</SPAN
691 > files with generic text,
692   that is used by multiple docs. This way we can write something once, and use
693   it repeatedly without having to re-write the same content over and over again.
694   If editing such a file, keep in mind that it should be
695   <SPAN
696 CLASS="emphasis"
697 ><I
698 CLASS="EMPHASIS"
699 >generic</I
700 ></SPAN
701 >. That is the purpose; so it can be used in varying
702   contexts without additional modifications.
703  </P
704 ><P
705 >  We are also using what <SPAN
706 CLASS="APPLICATION"
707 >Docbook</SPAN
708 > calls
709   <SPAN
710 CLASS="QUOTE"
711 >"internal entities"</SPAN
712 >. These are like variables in
713   programming. Well, sort of. For instance, we have the
714   <TT
715 CLASS="LITERAL"
716 >p-version</TT
717 > entity that contains the current
718   <SPAN
719 CLASS="APPLICATION"
720 >Privoxy</SPAN
721 > version string. You are strongly
722   encouraged to use these where possible. Some of these obviously
723   require re-setting with each release (done by the Makefile). A sampling of
724   custom entities are listed below. See any of the main docs for examples.
725  </P
726 ><P
727 ></P
728 ><UL
729 ><LI
730 ><P
731 >    Re- <SPAN
732 CLASS="QUOTE"
733 >"boilerplate"</SPAN
734 > text entities are defined like:
735    </P
736 ><P
737 >    <TT
738 CLASS="LITERAL"
739 >&#60;!entity supported SYSTEM "supported.sgml"&#62;</TT
740 >
741    </P
742 ><P
743 >     In this example, the contents of the file,
744      <TT
745 CLASS="FILENAME"
746 >supported.sgml</TT
747 > is available for inclusion anywhere
748      in the doc. To make this happen, just reference the now defined
749      entity: <TT
750 CLASS="LITERAL"
751 >&#38;supported;</TT
752 > (starts with an ampersand
753      and ends with a semi-colon), and the contents will be dumped into
754      the finished doc at that point.
755    </P
756 ></LI
757 ><LI
758 ><P
759 >    Commonly used <SPAN
760 CLASS="QUOTE"
761 >"internal entities"</SPAN
762 >:
763   </P
764 ><P
765 ></P
766 ><TABLE
767 BORDER="0"
768 ><TBODY
769 ><TR
770 ><TD
771 >    <SPAN
772 CLASS="emphasis"
773 ><I
774 CLASS="EMPHASIS"
775 >p-version</I
776 ></SPAN
777 >: the <SPAN
778 CLASS="APPLICATION"
779 >Privoxy</SPAN
780 >
781     version string, e.g. <SPAN
782 CLASS="QUOTE"
783 >"3.0.27"</SPAN
784 >.
785    </TD
786 ></TR
787 ><TR
788 ><TD
789 >    <SPAN
790 CLASS="emphasis"
791 ><I
792 CLASS="EMPHASIS"
793 >p-status</I
794 ></SPAN
795 >: the project status, either
796     <SPAN
797 CLASS="QUOTE"
798 >"alpha"</SPAN
799 >, <SPAN
800 CLASS="QUOTE"
801 >"beta"</SPAN
802 >, or <SPAN
803 CLASS="QUOTE"
804 >"stable"</SPAN
805 >.
806    </TD
807 ></TR
808 ><TR
809 ><TD
810 >    <SPAN
811 CLASS="emphasis"
812 ><I
813 CLASS="EMPHASIS"
814 >p-not-stable</I
815 ></SPAN
816 >: use to conditionally include
817     text in <SPAN
818 CLASS="QUOTE"
819 >"not stable"</SPAN
820 > releases (e.g. <SPAN
821 CLASS="QUOTE"
822 >"beta"</SPAN
823 >).
824    </TD
825 ></TR
826 ><TR
827 ><TD
828 >    <SPAN
829 CLASS="emphasis"
830 ><I
831 CLASS="EMPHASIS"
832 >p-stable</I
833 ></SPAN
834 >: just the opposite.
835    </TD
836 ></TR
837 ><TR
838 ><TD
839 >    <SPAN
840 CLASS="emphasis"
841 ><I
842 CLASS="EMPHASIS"
843 >p-text</I
844 ></SPAN
845 >: this doc is only generated as text.
846    </TD
847 ></TR
848 ></TBODY
849 ></TABLE
850 ><P
851 ></P
852 ></LI
853 ></UL
854 ><P
855 >  There are others in various places that are defined for a specific
856   purpose. Read the source!
857  </P
858 ></DIV
859 ></DIV
860 ><DIV
861 CLASS="NAVFOOTER"
862 ><HR
863 ALIGN="LEFT"
864 WIDTH="100%"><TABLE
865 SUMMARY="Footer navigation table"
866 WIDTH="100%"
867 BORDER="0"
868 CELLPADDING="0"
869 CELLSPACING="0"
870 ><TR
871 ><TD
872 WIDTH="33%"
873 ALIGN="left"
874 VALIGN="top"
875 ><A
876 HREF="cvs.html"
877 ACCESSKEY="P"
878 >Prev</A
879 ></TD
880 ><TD
881 WIDTH="34%"
882 ALIGN="center"
883 VALIGN="top"
884 ><A
885 HREF="index.html"
886 ACCESSKEY="H"
887 >Home</A
888 ></TD
889 ><TD
890 WIDTH="33%"
891 ALIGN="right"
892 VALIGN="top"
893 ><A
894 HREF="coding.html"
895 ACCESSKEY="N"
896 >Next</A
897 ></TD
898 ></TR
899 ><TR
900 ><TD
901 WIDTH="33%"
902 ALIGN="left"
903 VALIGN="top"
904 >The CVS Repository</TD
905 ><TD
906 WIDTH="34%"
907 ALIGN="center"
908 VALIGN="top"
909 >&nbsp;</TD
910 ><TD
911 WIDTH="33%"
912 ALIGN="right"
913 VALIGN="top"
914 >Coding Guidelines</TD
915 ></TR
916 ></TABLE
917 ></DIV
918 ></BODY
919 ></HTML
920 >