[3ae31e9] | 1 | NAME cpg - C source listing formatter
|
---|
| 2 |
|
---|
| 3 | SYNOPSIS
|
---|
| 4 |
|
---|
| 5 | cpg [ -b<asename> ] [ -t tabstop ] [ file... ]
|
---|
| 6 |
|
---|
| 7 | DESCRIPTION
|
---|
| 8 |
|
---|
| 9 | cpg is a C language source listing formatter. It employs certain
|
---|
| 10 | triggers to perform its formatting. Those same triggers may be used to
|
---|
| 11 | extract in-line documentation to create documentation. At the end of
|
---|
| 12 | the listing produced by cpg is a table of contents of all files and
|
---|
| 13 | functions contained in the current listing. The table of contents is
|
---|
| 14 | sorted alphabetically by function and file.
|
---|
| 15 |
|
---|
| 16 |
|
---|
| 17 | The listing produced by cpg includes on each line a line number. On each
|
---|
| 18 | line containing any braces ({}), there will also be a
|
---|
| 19 | nesting level indicator. The nesting level indicator includes a number
|
---|
| 20 | (the current nesting level) and a directional character. The
|
---|
| 21 | directional characters are:
|
---|
| 22 |
|
---|
| 23 | > 6 The nesting level increased on this line
|
---|
| 24 | < 6 The nesting level decreased on this line
|
---|
| 25 | * 6 The nesting level changed both ways, with a net change of zero
|
---|
| 26 |
|
---|
| 27 | The triggers that cpg recognizes are itemized below. Each must appear
|
---|
| 28 | in column 1.
|
---|
| 29 |
|
---|
| 30 | <formfeed>
|
---|
| 31 |
|
---|
| 32 | A formfeed will cause a new page to be started with a full header.
|
---|
| 33 |
|
---|
| 34 | /*F filename *<anything>
|
---|
| 35 |
|
---|
| 36 | The file name may be specified in a comment preceding a descriptive
|
---|
| 37 | header block. The filename argument must be delimited by asterisks in
|
---|
| 38 | the trigger. The filename will appear in all page headings up to the
|
---|
| 39 | next filename trigger or the next file. A filename comment block
|
---|
| 40 | MUST be terminated by the endofblock trigger (see below).
|
---|
| 41 |
|
---|
| 42 | This trigger will print as a line in the listing. This trigger causes
|
---|
| 43 | the start of a new page (form feed) in the listing, with printing of the
|
---|
| 44 | page header including the current file name.
|
---|
| 45 | |
---|
| 46 |
|
---|
| 47 | /*H funcname *<anything>
|
---|
| 48 |
|
---|
| 49 | The function name may be specified in a comment preceding a descriptive
|
---|
| 50 | header block. The funcname argument must be delimited by asterisks in
|
---|
| 51 | the trigger. The funcname will appear in all page headings up to the
|
---|
| 52 | next funcname trigger or the next file. A funcname comment block
|
---|
| 53 | MUST be terminated by the endofblock trigger (see below).
|
---|
| 54 |
|
---|
| 55 | This trigger will print as a line in the listing. This trigger causes
|
---|
| 56 | the start of a new page (form feed) in the listing, with printing of the
|
---|
| 57 | page header including the current function name.
|
---|
| 58 |
|
---|
| 59 | /*E*/
|
---|
| 60 |
|
---|
| 61 | This is the endofblock trigger. Everything between the last filename or
|
---|
| 62 | funcname trigger and the endofblock trigger will be passed straight
|
---|
| 63 | through by cpg without evaluation of nesting levels, comments, or quoted
|
---|
| 64 | strings. Thus, a header block is treated as one long comment by cpg.
|
---|
| 65 |
|
---|
| 66 | This trigger will print as a line in the listing.
|
---|
| 67 |
|
---|
| 68 | /*P*/
|
---|
| 69 |
|
---|
| 70 | This is a page eject trigger. It will not print in the listing, but
|
---|
| 71 | will be counted for line numbering purposes. This trigger causes the
|
---|
| 72 | page heading, title, and subtitle to be reprinted based on their current
|
---|
| 73 | values (see title and subtitle below).
|
---|
| 74 |
|
---|
| 75 | /*S <text> */
|
---|
| 76 |
|
---|
| 77 | This is the subtitle trigger. It determines the contents of the second
|
---|
| 78 | title line on the page header. All characters after the initial space
|
---|
| 79 | and up to but not including the following asterisk (required) are
|
---|
| 80 | included as part of the subtitle. This trigger will not print in the
|
---|
| 81 | listing but will be counted for line numbering purposes.
|
---|
| 82 |
|
---|
| 83 | /*T <text> */
|
---|
| 84 |
|
---|
| 85 | This is the title trigger. It determines the contents of the first
|
---|
| 86 | title line on the page header. All characters after the initial space
|
---|
| 87 | and up to but not including the following asterisk (required) are
|
---|
| 88 | included as part of the title. This trigger will not print in the
|
---|
| 89 | listing but will be counted for line numbering purposes.
|
---|
| 90 | |
---|
| 91 |
|
---|
| 92 | OPTIONS
|
---|
| 93 |
|
---|
| 94 | -b
|
---|
| 95 |
|
---|
| 96 | The basename option causes cpg to use only the basename portion of
|
---|
| 97 | the filename (whether obtained from the fileheader trigger or the
|
---|
| 98 | current filename) in page headers as well as the table of contents.
|
---|
| 99 | Thus, if a file is printed using "cpg -bt4 `pwd`/xyz.c", only "xyz.c"
|
---|
| 100 | will show up in the page header.
|
---|
| 101 |
|
---|
| 102 | -t tabstop
|
---|
| 103 |
|
---|
| 104 | The tabstop argument to the -t option specifies how to expand tabs. The
|
---|
| 105 | expansion is performed automatically with a tabstop of 8 if none is
|
---|
| 106 | specified.
|
---|
| 107 |
|
---|
| 108 | ARGUMENTS
|
---|
| 109 |
|
---|
| 110 | file
|
---|
| 111 |
|
---|
| 112 | Any number of file names may be specified on the command line (within
|
---|
| 113 | limits set by whichever shell is used). Each file will be formatted and
|
---|
| 114 | its name added to the table of contents. If no file names are
|
---|
| 115 | specified, cpg will read the standard input.
|
---|
| 116 |
|
---|
| 117 | FILES
|
---|
| 118 |
|
---|
| 119 | /tmp/toc_XXXXXX
|
---|
| 120 |
|
---|
| 121 | temporary file for building the table of contents.
|
---|
| 122 | |
---|
| 123 |
|
---|
| 124 | SEE ALSO
|
---|
| 125 |
|
---|
| 126 | dtab(1), nl(1), pr(1), sort(1)
|
---|
| 127 |
|
---|
| 128 | NOTES
|
---|
| 129 |
|
---|
| 130 | This tool was developed at Benetics Corporation.
|
---|
| 131 |
|
---|
| 132 | A side note: cpg also properly processes comments in shell scripts and
|
---|
| 133 | makefiles. These comments are correctly handled when the comment
|
---|
| 134 | character (# or :) is the first nonblank character on a line. In order
|
---|
| 135 | to facilitate documentation of shell scripts, cpg recognizes the
|
---|
| 136 | sequences #{ and #} as the beginning and ending of nesting, and treats
|
---|
| 137 | them as it does in C program sources. Thus lengthy for, if, while, and
|
---|
| 138 | case statements may be more clearly documented as to nesting levels,
|
---|
| 139 | particulary in shell scripts.
|
---|
| 140 |
|
---|
| 141 | AUTHOR
|
---|
| 142 |
|
---|
| 143 | Steven M. List
|
---|
| 144 | Benetics Corporation
|
---|
| 145 | Mountain View, CA.
|
---|
| 146 | {cdp,idi,greipa,oliveb,sun,tolerant}!bene!luke!steven
|
---|
| 147 |
|
---|
| 148 | Modified to run under GEMDOS by: D.N. Lynx Crowe
|
---|