1.\" Copyright (c) 1980, 1990, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 3. All advertising materials mentioning features or use of this software 13.\" must display the following acknowledgement: 14.\" This product includes software developed by the University of 15.\" California, Berkeley and its contributors. 16.\" 4. Neither the name of the University nor the names of its contributors 17.\" may be used to endorse or promote products derived from this software 18.\" without specific prior written permission. 19.\" 20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30.\" SUCH DAMAGE. 31.\" 32.\" @(#)vgrind.1 8.1 (Berkeley) 6/6/93 33.\" $FreeBSD$ 34.\" 35.Dd June 6, 1993 36.Dt VGRIND 1 37.Os 38.Sh NAME 39.Nm vgrind 40.Nd grind nice listings of programs 41.Sh SYNOPSIS 42.Nm 43.Op Fl 44.Op Fl W 45.Op Fl d Ar file 46.Op Fl f 47.Op Fl h Ar header 48.Op Fl l Ns Ar language 49.Op Fl n 50.Op Fl p Ar postproc 51.Op Fl sn 52.Op Fl t 53.Op Fl x 54.Ar name Ar ... 55.Sh DESCRIPTION 56The 57.Nm 58utility formats the program sources which are arguments 59in a nice style using 60.Xr troff 1 61Comments are placed in italics, keywords in bold face, 62and the name of the current function is listed down the margin of each 63page as it is encountered. 64.Pp 65The 66.Nm 67utility runs in two basic modes, filter mode (see the 68.Fl f 69option) or regular mode. In filter mode 70.Nm 71acts as a filter in a manner similar to 72.Xr tbl 1 . 73The standard input is passed directly to the standard output except 74for lines bracketed by the 75.Em troff-like 76macros: 77.Bl -tag -width Ds 78.It \&.vS 79starts processing 80.It \&.vE 81ends processing 82.El 83.Pp 84These lines are formatted as described above. The output from this 85filter can be passed to 86.Xr troff 1 87for output. There need be no particular ordering with 88.Xr eqn 1 89or 90.Xr tbl 1 . 91.Pp 92In regular mode 93.Nm 94accepts input files, processes them, and passes them to the postprocessor 95for output, 96.Xr psroff 1 97by default. 98.Pp 99In both modes 100.Nm 101passes any lines beginning with a decimal point without conversion. 102.Pp 103The options are: 104.Bl -tag -width Ar 105.It Fl 106forces input to be taken from standard input (default if 107.Fl f 108is specified) 109.It Fl W 110forces output to the (wide) Versatec printer rather than the (narrow) 111Varian 112.It Fl d Ar file 113specifies an alternate language definitions 114file (default is 115.Pa /usr/share/misc/vgrindefs ) 116.It Fl f 117forces filter mode 118.It Fl h Ar header 119specifies a particular header to put on every output page (default is 120the file name) 121.It Fl l 122specifies the language to use. Currently known are 123.Tn PASCAL 124.Pq Fl l Ns Ar p , 125.Tn MODEL 126.Pq Fl l Ns Ar m , 127C 128.Pf ( Fl l Ns Ar c 129or the default), 130.Tn C++ 131.Pq Fl l Ns Ar c++ , 132.Tn CSH 133.Pq Fl l Ns Ar csh , 134.Tn SHELL 135.Pq Fl l Ns Ar sh , 136.Tn RATFOR 137.Pq Fl l Ns Ar r , 138.Tn MODULA2 139.Pq Fl l Ns Ar mod2 , 140.Tn YACC 141.Pq Fl l Ns Ar yacc , 142.Tn LISP 143.Pq Fl l Ns Ar isp , 144.Tn ICON 145.Pq Fl l Ns Ar I , 146and 147.Tn PERL 148.Pq Fl l Ns Ar perl . 149.It Fl n 150forces no keyword bolding 151.It Fl p Ar postproc 152use 153.Ar postproc 154to post-process the output, 155.Xr psroff 1 156by default. 157.It Fl s 158specifies a point size to use on output (exactly the same as the argument 159of a .ps) 160.It Fl t 161similar to the same option in 162.Xr troff 1 163causing formatted text to go to the standard output 164.It Fl x 165outputs the index file in a ``pretty'' format. 166The index file itself is produced whenever 167.Nm 168is run with a file called 169.Pa index 170in the current directory. 171The index of function 172definitions can then be run off by giving 173.Nm 174the 175.Fl x 176option and the file 177.Pa index 178as argument. 179.El 180.Sh FILES 181.Bl -tag -width /usr/share/misc/vgrindefsxx -compact 182.It Pa index 183file where source for index is created 184.It Pa /usr/share/tmac/tmac.vgrind 185macro package 186.It Pa /usr/libexec/vfontedpr 187preprocessor 188.It Pa /usr/share/misc/vgrindefs 189language descriptions 190.El 191.Sh SEE ALSO 192.Xr getcap 3 , 193.Xr vgrindefs 5 194.Sh BUGS 195The vfontedpr preprocessor assumes that a certain programming style is 196followed: 197.Pp 198For 199.Tn C 200\- function names can be preceded on a line only by spaces, tabs, or an 201asterisk. The parenthesized arguments must also be on the same line. 202.Pp 203For 204.Tn PASCAL 205\- function names need to appear on the same line as the keywords 206.Em function 207or 208.Em procedure . 209.Pp 210For 211.Tn MODEL 212\- function names need to appear on the same line as the keywords 213.Em is beginproc . 214.Pp 215If these conventions are not followed, the indexing and marginal function 216name comment mechanisms will fail. 217.Pp 218More generally, arbitrary formatting styles for programs mostly look bad. 219The use of spaces to align source code fails miserably; if you plan to 220.Nm 221your program you should use tabs. This is somewhat inevitable since the 222font used by 223.Nm 224is variable width. 225.Pp 226The mechanism of 227.Xr ctags 1 228in recognizing functions should be used here. 229.Pp 230Filter mode does not work in documents using the 231.Fl me 232or 233.Fl ms 234macros. 235(So what use is it anyway?) 236.Sh HISTORY 237The 238.Nm 239command appeared in 240.Bx 3.0 . 241