355 lines
10 KiB
Groff
355 lines
10 KiB
Groff
|
||
|
||
|
||
|
||
|
||
Command: indent - reformat the layout of a program
|
||
Syntax: indent in_file [out_file] [options]
|
||
Flags: (many)
|
||
Examples: indent -br -c25 prog.c # Indent prog.c
|
||
indent -npcs prog.c newprog.c # Put output on newprog.c
|
||
|
||
Indent reads a C program in, rearranges the layout, and outputs a
|
||
new C program that will compile to the same executable binary as the
|
||
original one. The difference between the input and output is that the
|
||
output is in a standard layout determined by a large number of options.
|
||
For most of the options there are two choices, one that enables it and
|
||
one that disables it.
|
||
|
||
If indent is called with no file files, it operates as a filter.
|
||
If called with one file name, that file is reformatted and the result
|
||
replaces the original file. A backup is created, however, with the
|
||
suffix .BAK. If it is called with two file names, the first one is the
|
||
input file and the second one is the output file. Only one file can be
|
||
reformatted at a time (e.g., one cannot call indent with *.c as
|
||
argument; this is an error and will not work.).
|
||
|
||
Options
|
||
|
||
Many options are available. If you want to format a program to the
|
||
'official' MINIX format, use pretty, which calls indent with the proper
|
||
options and then postprocesses the output. The options listed below
|
||
control the formatting style.
|
||
|
||
OPTION: -bad, -nbad
|
||
|
||
If -bad is specified, a blank line is forced after every block of
|
||
declarations. Default: -nbad.
|
||
|
||
OPTION: -bap, -nbap
|
||
|
||
If -bap is specified, a blank line is forced after every procedure
|
||
body. Default: -nbap.
|
||
|
||
OPTION: -bbb, -nbbb
|
||
|
||
If -bbb is specified, a blank line is forced before every block
|
||
comment. Default: -nbbb.
|
||
|
||
OPTION: -bc, -nbc
|
||
|
||
If -bc is specified, then a newline is forced after each comma in a
|
||
declaration. -nbc turns off this option. The default is -nbc.
|
||
|
||
OPTION: -bl, -br
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Specifying -bl lines up compound statements like this:
|
||
|
||
if (...)
|
||
{
|
||
code
|
||
}
|
||
|
||
Specifying -br (the default) makes them look like this:
|
||
|
||
if (...) {
|
||
code
|
||
}
|
||
|
||
|
||
OPTION: -cn
|
||
|
||
The column in which comments on code start. The default is 33.
|
||
|
||
OPTION: -cdn
|
||
|
||
The column in which comments on declarations start. The default is
|
||
for these comments to start in the same column as those on code.
|
||
|
||
OPTION: -cdb, -ncdb
|
||
|
||
Enables (disables) the placement of comment delimiters on blank
|
||
lines. With this option enabled, comments look like this:
|
||
|
||
/*
|
||
* this is a comment
|
||
*/
|
||
|
||
Rather than like this:
|
||
|
||
/* this is a comment */
|
||
|
||
This only affects block comments, not comments to the right of code. The
|
||
default is -cdb.
|
||
|
||
OPTION: -ce, -nce
|
||
|
||
Enables (disables) forcing 'else's to cuddle up to the immediately
|
||
preceding '}'. The default is -ce.
|
||
|
||
OPTION: -cin
|
||
|
||
Sets the continuation indent to be n. Continuation lines will be
|
||
indented that far from the beginning of the first line of the statement.
|
||
Parenthesized expressions have extra indentation added to indicate the
|
||
nesting, unless -lp is in effect. -ci defaults to the same value as -i.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
OPTION: -clin
|
||
|
||
Causes case labels to be indented n tab stops to the right of the
|
||
containing switch statement. -cli0.5 causes case labels to be indented
|
||
half a tab stop. The default is -cli0. (This is the only option that
|
||
takes a fractional argument.)
|
||
|
||
OPTION: -dn
|
||
|
||
Controls the placement of comments which are not to the right of
|
||
code. Specifying -d1 means that such comments are placed one
|
||
indentation level to the left of code. The default -d0 lines up these
|
||
comments with the code. See the section on comment indentation below.
|
||
|
||
OPTION: -din
|
||
|
||
Specifies the indentation, in character positions, from a
|
||
declaration keyword to the following identifier. The default is -di16.
|
||
|
||
OPTION: -dj, -ndj
|
||
|
||
-dj left justifies declarations. -ndj indents declarations the
|
||
same as code. The default is -ndj.
|
||
|
||
OPTION: -ei, -nei
|
||
|
||
Enables (disables) special else-if processing. If enabled, ifs
|
||
following elses will have the same indentation as the preceding if
|
||
statement. The default is -ei.
|
||
|
||
OPTION: -fc1, -nfc1
|
||
|
||
Enables (disables) the formatting of comments that start in column
|
||
1. Often, comments whose leading '/' is in column 1 have been carefully
|
||
hand formatted by the programmer. In such cases, -nfc1 should be used.
|
||
The default is -fc1.
|
||
|
||
OPTION: -in
|
||
|
||
The number of spaces for one indentation level. The default is 8.
|
||
|
||
OPTION: -ip, -nip
|
||
|
||
Enables (disables) the indentation of parameter declarations from
|
||
the left margin. The default is -ip.
|
||
|
||
OPTION: -ln
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Maximum length of an output line. The default is 78.
|
||
|
||
OPTION: -lp, -nlp
|
||
|
||
Lines up code surrounded by parenthesis in continuation lines. If
|
||
a line has a left paren which is not closed on that line, then
|
||
continuation lines will be lined up to start at the character position
|
||
just after the left paren.
|
||
|
||
OPTION: -npro
|
||
|
||
Causes the profile files, .indent.pro in both the current directory
|
||
and the user's home directory to be ignored.
|
||
|
||
OPTION: -pcs, -npcs
|
||
|
||
If true (-pcs) all procedure calls will have a space inserted
|
||
between the name and the '('. The default is -npcs.
|
||
|
||
OPTION: -ps, -nps
|
||
|
||
If true (-ps) the pointer following operator '->' will be
|
||
surrounded by spaces on either side. The default is -nps.
|
||
|
||
OPTION: -psl, -npsl
|
||
|
||
If true (-psl) the names of procedures being defined are placed in
|
||
column 1 - their types, if any, will be left on the previous lines. The
|
||
default is -psl.
|
||
|
||
OPTION: -sc, -nsc
|
||
|
||
Enables (disables) the placement of asterisks (*) at the left edge
|
||
of all comments. The default is -sc.
|
||
|
||
OPTION: -sob, -nsob
|
||
|
||
If -sob is specified, indent will swallow optional blank lines.
|
||
You can use this to get rid of blank lines after declarations. The
|
||
default is -nsob.
|
||
|
||
OPTION: -st
|
||
|
||
Causes indent to take its input from stdin, and put its output to
|
||
stdout.
|
||
|
||
OPTION: -Ttypename
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Adds typename to the list of type keywords. Names accumulate: -T
|
||
can be specified more than once. You need to specify all the typenames
|
||
that appear in your program that are defined by #typedefs. Nothing will
|
||
be harmed if you miss a few, but the program will not be formatted as
|
||
nicely as it should. This sounds like a painful thing to have to do,
|
||
but it is really a symptom of a problem in C: typedef causes a syntactic
|
||
change in the language and indent cannot find all typedefs.
|
||
|
||
OPTION: -troff
|
||
|
||
Causes indent to format the program for processing by troff. It
|
||
will produce a fancy listing in much the same spirit as vgrind. If the
|
||
output file is not specified, the default is standard output, rather
|
||
than formatting in place.
|
||
|
||
OPTION: -v, -nv
|
||
|
||
The -v flag turns on verbose mode; -nv turns it off. When in
|
||
verbose mode, indent reports when it splits one line of input into two
|
||
or more lines of output, and gives some size statistics at completion.
|
||
The default is -nv.
|
||
|
||
User Profiles
|
||
|
||
You may set up your own profile of defaults to indent by creating a
|
||
file called .indent.pro in either your login directory and/or the
|
||
current directory and including whatever switches you like. Switches in
|
||
.indent.pro in the current directory override those in your login
|
||
directory (with the exception of -T type definitions, which just
|
||
accumulate). If indent is run and a profile file exists, then it is read
|
||
to set up the program's defaults. The switches should be separated by
|
||
spaces, tabs or newlines. Switches on the command line, however,
|
||
override profile switches.
|
||
|
||
Comments
|
||
|
||
Indent assumes that any comment with a dash or star immediately
|
||
after the start of comment (that is, '/*-' or '/**') is a comment
|
||
surrounded by a box of stars. Each line of such a comment is left
|
||
unchanged, except that its indentation may be adjusted to account for
|
||
the change in indentation of the first line of the comment.
|
||
|
||
All other comments are treated as straight text. Indent fits as
|
||
many words (separated by blanks, tabs, or newlines) on a line as
|
||
possible. Blank lines break paragraphs.
|
||
|
||
If a comment is on a line with code it is started in the comment
|
||
column, which is set by the -cn command line parameter. Otherwise, the
|
||
comment is started at n indentation levels less than where code is
|
||
currently being placed, where n is specified by the -dn command line
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
parameter. If the code on a line extends past the comment column, the
|
||
comment starts further to the right, and the right margin may be
|
||
automatically extended in extreme cases.
|
||
|
||
Preprocessor Lines
|
||
|
||
In general, indent leaves preprocessor lines alone. The only
|
||
reformatting that it will do is to straighten up trailing comments. It
|
||
leaves embedded comments alone. Conditional compilation
|
||
(#ifdef...#endif) is recognized and indent attempts to correctly
|
||
compensate for the syntactic peculiarities introduced.
|
||
|
||
C Syntax
|
||
|
||
Indent understands a substantial amount about the syntax of C, but
|
||
it has a forgiving parser. It attempts to cope with the usual sorts of
|
||
incomplete and misformed syntax. In particular, the use of macros like:
|
||
|
||
#define forever for(;;)
|
||
|
||
is handled properly.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|