indent(1)indent(1)Nameindent - indent and format C program source
Syntaxindent input [output] [flags]
Description
The command is intended primarily as a C program formatter. Specifi‐
cally, indents code lines, aligns comments, inserts spaces around oper‐
ators where necessary and breaks up declaration lists as in ``int
a,b,c;''.
The command does not break up long statements to make them fit within
the maximum line length, but it does flag lines that are too long.
Lines are broken so that each statement starts a new line, and braces
appear alone on a line. Also, an attempt is made to line up identi‐
fiers in declarations.
The flags that can be specified follow. They can appear before or after
the file names. If the output file is omitted, the formatted file is
written back into input and a ``backup'' copy of input is written in
the current directory. If input is named ``/blah/blah/file'', the
backup file is named ``.Bfile''. If output is specified, checks to
make sure it is different from input.
Options
The following options are used to control the formatting style imposed
by
-lnnn Determines maximum length of output line. The default is
75.
-cnnn Determines column in which comments start. The default is
33.
-cdnnn Determines column in which comments on declarations start.
The default is for these comments to start in the same col‐
umn as other comments.
-innn Determines number of spaces for one indentation level. The
default is 4.
-dj,-ndj Causes declarations to be left justified. -ndj causes them
to be indented the same as code. The default is -ndj.
-v,-nv -v turns on ``verbose'' mode, -nv turns it off. When in
verbose mode, reports when it splits one line of input into
two or more lines of output, and it gives some size statis‐
tics at completion. The default is -nv.
-bc,-nbc Forces newline after each comma in a declaration. -nbc
turns off this option. The default is -bc.
-dnnn Controls the placement of comments which are not to the
right of code. Specifying -d2 means that such comments are
placed two indentation levels to the left of code. The
default -d0 lines up these comments with the code. See the
section on comment indentation below.
-br,-bl Specifying -bl causes complex statements to be lined up in
a space order. For example,
if (...)
{
code
}
Specifying -br (the default) makes them look like this:
if (...) {
code
}
You may set up your own ``profile'' of defaults to by creating the file
``.indent.pro'' in your login directory and including whatever switches
you like. If is run and a profile file exists, then it is read to set
up the program's defaults. Switches on the command line, though,
always override profile switches. The profile file must be a single
line of not more than 127 characters. The switches should be separated
on the line by spaces or tabs.
Multiline expressions
The command does not break up complicated expressions that extend over
multiple lines. However, it usually indents such expressions that have
already been broken up correctly. Such an expression might look like
the following:
x =
(
(Arbitrary parenthesized expression)
+
(
(Parenthesized expression)
*
(Parenthesized expression)
)
);
Comments
The command recognizes the following four kinds of comments:
1) straight text
2) ``box'' comments
3) UNIX-style comments
4) comments that should be passed through unchanged
The comments are interpreted as follows:
``Box'' comments The command assumes that any comment with a dash
immediately after the start of comment (i.e.
``/*-'') is a comment surrounded by a box of stars.
Each line of such a comment is left unchanged,
except that the first non-blank character of each
successive line is lined up with the beginning
slash of the first line. Box comments are indented
(see below).
``Unix-style'' comments
This is the type of section header which is used
extensively in the UNIX system source. If the
start of comment (``/*'') appears on a line by
itself, assumes that it is a UNIX-style comment.
These are treated similarly to box comments, except
the first non-blank character on each line is lined
up with the `*' of the ``/*''.
Unchanged comments Any comment which starts in column 1 is left com‐
pletely unchanged. This is intended primarily for
documentation header pages. The check for
unchanged comments is made before the check for
UNIX-style comments.
Straight text All other comments are treated as straight text.
Indent fits as many words (separated by blanks,
tabs, or new lines) on a line as possible.
Straight text comments are indented.
Comment indentation
Box, UNIX-style, and straight text comments may be indented. If a com‐
ment is on a line with code it is started in the ``comment column'',
which is set by the -cnnn command line parameter. Otherwise, the com‐
ment is started at nnn indentation levels less than where code is cur‐
rently being placed, where nnn is specified by the -dnnn command line
parameter. (Indented comments is never be placed in column 1.) If the
code on a line extends past the comment column, the comment is moved to
the next line.
Restrictions
Does not know how to format ``long'' declarations.
Diagnostics
Diagnostic error messages, mostly to tell that a text line has been
broken or is too long for the output line.
Files
.indent.pro profile file
indent(1)