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