1 .\" Copyright (c) 1980, 1990, 1993
2 .\" The Regents of the University of California. All rights reserved.
3 .\" Copyright (c) 1976 Board of Trustees of the University of Illinois.
4 .\" All rights reserved.
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\" notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\" notice, this list of conditions and the following disclaimer in the
13 .\" documentation and/or other materials provided with the distribution.
14 .\" 3. Neither the name of the University nor the names of its contributors
15 .\" may be used to endorse or promote products derived from this software
16 .\" without specific prior written permission.
18 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 .\" @(#)indent.1 8.1 (Berkeley) 7/1/93
38 .Nd indent and format C program source
41 .Op Ar input-file Op Ar output-file
42 .Op Fl bacc | Fl nbacc
44 .Op Fl badp | Fl nbadp
102 according to the switches.
103 The switches which can be
104 specified are described below.
105 They may appear before or after the file
109 If you only specify an
112 done `in-place', that is, the formatted file is written back into
116 is written in the current directory.
120 .Sq Pa /blah/blah/file ,
121 the backup file is named
128 checks to make sure that it is different from
131 The options listed below control the formatting style imposed by
137 is specified, a blank line is forced around every conditional
139 For example, in front of every #ifdef and after every #endif.
140 Other blank lines surrounding such blocks will be swallowed.
146 is specified, a blank line is forced after every block of
151 This is vaguely similar to
153 except that it only applies to the first set of declarations
154 in a procedure (just after the first `{') and it causes a blank
155 line to be generated even if there are no declarations.
161 is specified, a blank line is forced after every procedure body.
167 is specified, a blank line is forced before every block comment.
173 is specified, then a newline is forced after each comma in a declaration.
175 turns off this option.
181 lines-up compound statements like this:
182 .Bd -literal -offset indent
191 (the default) makes them look like this:
192 .Bd -literal -offset indent
198 Whether a blank should always be inserted after sizeof.
202 The column in which comments on code start.
205 The column in which comments on declarations start.
207 is for these comments to start in the same column as those on code.
209 Enables (disables) the placement of comment delimiters on blank lines.
211 this option enabled, comments look like this:
212 .Bd -literal -offset indent
218 Rather than like this:
219 .Bd -literal -offset indent
220 /* this is a comment */
223 This only affects block comments, not comments to the right of
228 Enables (disables) forcing of `else's to cuddle up to the immediately preceding
233 Sets the continuation indent to be
236 lines will be indented that far from the beginning of the first line of the
238 Parenthesized expressions have extra indentation added to
239 indicate the nesting, unless
242 or the continuation indent is exactly half of the main indent.
244 defaults to the same value as
247 Causes case labels to be indented
249 tab stops to the right of the containing
253 causes case labels to be indented half a tab stop.
258 Controls the placement of comments which are not to the
262 means that such comments are placed one indentation level to the
264 Specifying the default
266 lines-up these comments with the code.
267 See the section on comment
270 Specifies the indentation, in character positions,
271 of global variable names and all struct/union member names
272 relative to the beginning of their type declaration.
277 left justifies declarations.
279 indents declarations the same as code.
283 Enables (disables) special
290 will have the same indentation as the preceding
296 Enables (disables) extra indentation on continuation lines of
297 the expression part of
302 These continuation lines will be indented one extra level.
306 Enables (disables) splitting the function declaration and opening brace
311 Enables (disables) the formatting of comments that start in column 1.
312 Often, comments whose leading `/' is in column 1 have been carefully
313 hand formatted by the programmer.
321 Enables (disables) the formatting of block comments (ones that begin
323 Often, block comments have been not so carefully hand formatted by the
324 programmer, but reformatting that would just change the line breaks is not
329 Block comments are then handled like box comments.
333 The number of spaces for one indentation level.
336 Enables (disables) the indentation of parameter declarations from the left
341 Maximum length of an output line.
344 Maximum length of an output line in a block comment.
345 The default is 0, which means to limit block comment lines in accordance with
348 Specifies the indentation, in character positions,
349 of local variable names
350 relative to the beginning of their type declaration.
351 The default is for local variable names to be indented
352 by the same amount as global ones.
354 Lines-up code surrounded by parenthesis in continuation lines.
356 has a left paren which is not closed on that line, then continuation lines
357 will be lined up to start at the character position just after the left
359 For example, here is how a piece of continued code looks with
362 .Bd -literal -offset indent
363 p1 = first_procedure(second_procedure(p2, p3),
364 \ \ third_procedure(p4, p5));
369 in effect (the default) the code looks somewhat clearer:
370 .Bd -literal -offset indent
371 p1\ =\ first_procedure(second_procedure(p2,\ p3),
372 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ third_procedure(p4,\ p5));
375 Inserting two more newlines we get:
376 .Bd -literal -offset indent
377 p1\ =\ first_procedure(second_procedure(p2,
378 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ p3),
379 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ third_procedure(p4,
380 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ p5));
383 Causes the profile files,
386 .Sq Pa ~/.indent.pro ,
394 all procedure calls will have a space inserted between
395 the name and the `('.
401 the names of procedures being defined are placed in
402 column 1 \- their types, if any, will be left on the previous lines.
407 Control whether parenthesized type names in casts are followed by a space or
412 Enables (disables) the placement of asterisks (`*'s) at the left edge of all
419 is specified, indent will swallow optional blank lines.
421 get rid of blank lines after declarations.
427 to take its input from stdin and put its output to stdout.
429 Automatically add all identifiers ending in "_t" to the list
431 .It Fl T Ns Ar typename
434 to the list of type keywords.
437 can be specified more than once.
438 You need to specify all the typenames that
439 appear in your program that are defined by
442 harmed if you miss a few, but the program will not be formatted as nicely as
444 This sounds like a painful thing to have to do, but it is really
445 a symptom of a problem in C:
447 causes a syntactic change in the
456 to format the program for processing by
458 It will produce a fancy
459 listing in much the same spirit as
461 If the output file is not specified, the default is standard output,
462 rather than formatting in place.
464 Assumed distance between tab stops.
469 to the list of type keywords.
471 Enables (disables) the use of tab characters in the output.
476 turns on `verbose' mode;
479 When in verbose mode,
481 reports when it splits one line of input into two or more lines of output,
482 and gives some size statistics at completion.
487 You may set up your own `profile' of defaults to
489 by creating a file called
491 in your login directory and/or the current directory and including
492 whatever switches you like.
493 A `.indent.pro' in the current directory takes
494 precedence over the one in your login directory.
497 is run and a profile file exists, then it is read to set up the program's
499 Switches on the command line, though, always override profile
501 The switches should be separated by spaces, tabs or newlines.
509 assumes that any comment with a dash or star immediately after the start of
510 comment (that is, `/*\-' or `/**') is a comment surrounded by a box of stars.
511 Each line of such a comment is left unchanged, except that its indentation
512 may be adjusted to account for the change in indentation of the first line
516 All other comments are treated as straight text.
519 utility fits as many words (separated by blanks, tabs, or newlines) on a
521 Blank lines break paragraphs.
522 .Ss Comment indentation
523 If a comment is on a line with code it is started in the `comment column',
526 command line parameter.
527 Otherwise, the comment is started at
529 indentation levels less than where code is currently being placed, where
533 command line parameter.
534 If the code on a line extends past the comment
535 column, the comment starts further to the right, and the right margin may be
536 automatically extended in extreme cases.
537 .Ss Preprocessor lines
540 leaves preprocessor lines alone.
542 reformatting that it will do is to straighten up trailing comments.
544 leaves embedded comments alone.
545 Conditional compilation
546 .Pq Ic #ifdef...#endif
549 attempts to correctly
550 compensate for the syntactic peculiarities introduced.
554 utility understands a substantial amount about the syntax of C, but it
555 has a `forgiving' parser.
556 It attempts to cope with the usual sorts of
557 incomplete and malformed syntax.
558 In particular, the use of macros like:
560 .Dl #define forever for(;;)
568 environment variable.
570 .Bl -tag -width "./.indent.pro" -compact
584 utility has even more switches than
587 A common mistake is to try to indent all the
589 programs in a directory by typing:
593 This is probably a bug, not a feature.