INDENT.9
资源名称:os_source.zip [点击查看]
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:10k
源码类别:
操作系统开发
开发平台:
C/C++
- 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.