man pages section 1: User Commands

Exit Print View

Updated: July 2014
 
 

indent (1)

Name

indent - changes the appearance of a C program by inserting or deleting whitespace.

Synopsis

indent [options] [input-files]

indent [options] [single-input-file] [-o output-file]

indent --version

Description




Misc. Reference Manual Pages                           INDENT(1L)



NAME
     indent  - changes the appearance of a C program by inserting
     or deleting whitespace.

SYNOPSIS
     indent [options] [input-files]

     indent [options] [single-input-file] [-o output-file]

     indent --version

DESCRIPTION
     This man page is generated  from  the  file  indent.texinfo.
     This  is  Edition  2.2.9  of "The indent Manual", for Indent
     Version 2.2.9, last updated 10 November 2002.

     The indent program can be used to make code easier to  read.
     It  can also convert from one style of writing C to another.

     indent understands a substantial amount about  but  it  also
     attempts to cope with incomplete and misformed syntax.

     In  version  1.2  and more recent versions, the GNU style of
     indenting is the default.

OPTIONS
     -bad, --blank-lines-after-declarations
         Force blank lines after the declarations.
         See  BLANK LINES.

     -bap, --blank-lines-after-procedures
         Force blank lines after procedure bodies.
         See  BLANK LINES.

     -bbb, --blank-lines-before-block-comments
         Force blank lines before block comments.
         See  BLANK LINES.

     -bbo, --break-before-boolean-operator
         Prefer to break long lines before boolean operators.
         See  BREAKING LONG LINES.

     -bc, --blank-lines-after-commas
         Force newline after comma in declaration.
         See  DECLARATIONS.

     -bl, --braces-after-if-line
         Put braces on line after if, etc.
         See  STATEMENTS.

     -blin, --brace-indentn
         Indent braces n spaces.



SunOS 5.11                Last change:                          1






Misc. Reference Manual Pages                           INDENT(1L)



         See  STATEMENTS.

     -bls, --braces-after-struct-decl-line
         Put braces on the line after struct declaration lines.
         See  DECLARATIONS.

     -br, --braces-on-if-line
         Put braces on line with if, etc.
         See  STATEMENTS.

     -brs, --braces-on-struct-decl-line
         Put braces on struct declaration line.
         See  DECLARATIONS.

     -bs, --Bill-Shannon, --blank-before-sizeof
         Put a space between sizeof and its argument.
         See  STATEMENTS.

     -cn, --comment-indentationn
         Put comments to the right of code in column n.
         See  COMMENTS.

     -cbin, --case-brace-indentationn
         Indent braces after a case label N spaces.
         See  STATEMENTS.

     -cdn, --declaration-comment-columnn
         Put comments to the right of the declarations in  column
         n.
         See  COMMENTS.

     -cdb, --comment-delimiters-on-blank-lines
         Put comment delimiters on blank lines.
         See  COMMENTS.

     -cdw, --cuddle-do-while
         Cuddle while of do {} while; and preceeding `}'.
         See  COMMENTS.

     -ce, --cuddle-else
         Cuddle else and preceeding `}'.
         See  COMMENTS.

     -cin, --continuation-indentationn
         Continuation indent of n spaces.
         See  STATEMENTS.

     -clin, --case-indentationn
         Case label indent of n spaces.
         See  STATEMENTS.

     -cpn, --else-endif-columnn



SunOS 5.11                Last change:                          2






Misc. Reference Manual Pages                           INDENT(1L)



         Put comments to the right of #else and #endif statements
         in column n.
         See  COMMENTS.

     -cs, --space-after-cast
         Put a space after a cast operator.
         See  STATEMENTS.

     -dn, --line-comments-indentationn
         Set indentation of comments not to the right of code  to
         n spaces.
         See  COMMENTS.

     -bfda, --break-function-decl-args
         Break the line before all arguments in a declaration.
         See  DECLARATIONS.

     -bfde, --break-function-decl-args
         Break the line after the last argument in a declaration.
         See  DECLARATIONS.

     -din, --declaration-indentationn
         Put variables in column n.
         See  DECLARATIONS.

     -fc1, --format-first-column-comments
         Format comments in the first column.
         See  COMMENTS.

     -fca, --format-all-comments
         Do not disable all formatting of comments.
         See  COMMENTS.

     -gnu, --gnu-style
         Use GNU coding style.  This is the default.
         See  COMMON STYLES.

     -hnl, --honour-newlines
         Prefer to break long lines at the position  of  newlines
         in the input.
         See  BREAKING LONG LINES.

     -in, --indent-leveln
         Set indentation level to n spaces.
         See  INDENTATION.

     -ipn, --parameter-indentationn
         Indent parameter types in old-style function definitions
         by n spaces.
         See  INDENTATION.

     -kr, --k-and-r-style



SunOS 5.11                Last change:                          3






Misc. Reference Manual Pages                           INDENT(1L)



         Use Kernighan & Ritchie coding style.
         See  COMMON STYLES.

     -ln, --line-lengthn
         Set maximum line length for non-comment lines to n.
         See  BREAKING LONG LINES.

     -lcn, --comment-line-lengthn
         Set maximum line length for comment formatting to n.
         See  COMMENTS.

     -lp, --continue-at-parentheses
         Line up continued lines at parentheses.
         See  INDENTATION.

     -lps, --leave-preprocessor-space
         Leave space between `#' and preprocessor directive.
         See  INDENTATION.

     -nbad, --no-blank-lines-after-declarations
         Do not force blank lines after declarations.
         See  BLANK LINES.

     -nbap, --no-blank-lines-after-procedures
         Do not force blank lines after procedure bodies.
         See  BLANK LINES.

     -nbbo, --break-after-boolean-operator
         Do not prefer to break long lines before boolean  opera-
         tors.
         See  BREAKING LONG LINES.

     -nbc, --no-blank-lines-after-commas
         Do not force newlines after commas in declarations.
         See  DECLARATIONS.

     -nbfda, --dont-break-function-decl-args
         Don't  put  each argument in a function declaration on a
         seperate line.
         See  DECLARATIONS.

     -ncdb, --no-comment-delimiters-on-blank-lines
         Do not put comment delimiters on blank lines.
         See  COMMENTS.

     -ncdw, --dont-cuddle-do-while
         Do not cuddle } and the while of a do {} while;.
         See  STATEMENTS.

     -nce, --dont-cuddle-else
         Do not cuddle } and else.
         See  STATEMENTS.



SunOS 5.11                Last change:                          4






Misc. Reference Manual Pages                           INDENT(1L)



     -ncs, --no-space-after-casts
         Do not put a space after cast operators.
         See  STATEMENTS.

     -nfc1, --dont-format-first-column-comments
         Do not format comments in the first column as normal.
         See  COMMENTS.

     -nfca, --dont-format-comments
         Do not format any comments.
         See  COMMENTS.

     -nhnl, --ignore-newlines
         Do not prefer to break long lines  at  the  position  of
         newlines in the input.
         See  BREAKING LONG LINES.

     -nip, --no-parameter-indentation
         Zero width indentation for parameters.
         See  INDENTATION.

     -nlp, --dont-line-up-parentheses
         Do not line up parentheses.
         See  STATEMENTS.

     -npcs, --no-space-after-function-call-names
         Do not put space after the function in function calls.
         See  STATEMENTS.

     -nprs, --no-space-after-parentheses
         Do not put a space after every '(' and before every ')'.
         See  STATEMENTS.

     -npsl, --dont-break-procedure-type
         Put the type of a procedure on  the  same  line  as  its
         name.
         See  DECLARATIONS.

     -nsaf, --no-space-after-for
         Do not put a space after every for.
         See  STATEMENTS.

     -nsai, --no-space-after-if
         Do not put a space after every if.
         See  STATEMENTS.

     -nsaw, --no-space-after-while
         Do not put a space after every while.
         See  STATEMENTS.

     -nsc, --dont-star-comments
         Do not put the `*' character at the left of comments.



SunOS 5.11                Last change:                          5






Misc. Reference Manual Pages                           INDENT(1L)



         See  COMMENTS.

     -nsob, --leave-optional-blank-lines
         Do not swallow optional blank lines.
         See  BLANK LINES.

     -nss, --dont-space-special-semicolon
         Do  not force a space before the semicolon after certain
         statements.  Disables `-ss'.
         See  STATEMENTS.

     -nut, --no-tabs
         Use spaces instead of tabs.
         See  INDENTATION.

     -nv, --no-verbosity
         Disable verbose mode.
         See  MISCELLANEOUS OPTIONS.

     -orig, --original
         Use the original Berkeley coding style.
         See  COMMON STYLES.

     -npro, --ignore-profile
         Do not read `.indent.pro' files.
         See  INVOKING INDENT.

     -pcs, --space-after-procedure-calls
         Insert a space between the name of the  procedure  being
         called and the `('.
         See  STATEMENTS.

     -pin, --paren-indentationn
         Specify  the  extra indentation per open parentheses '('
         when a statement is broken.See  STATEMENTS.

     -pmt, --preserve-mtime
         Preserve  access  and  modification  times   on   output
         files.See  MISCELLANEOUS OPTIONS.

     -prs, --space-after-parentheses
         Put a space after every '(' and before every ')'.
         See  STATEMENTS.

     -psl, --procnames-start-lines
         Put the type of a procedure on the line before its name.
         See  DECLARATIONS.

     -saf, --space-after-for
         Put a space after each for.
         See  STATEMENTS.




SunOS 5.11                Last change:                          6






Misc. Reference Manual Pages                           INDENT(1L)



     -sai, --space-after-if
         Put a space after each if.
         See  STATEMENTS.

     -saw, --space-after-while
         Put a space after each while.
         See  STATEMENTS.

     -sbin, --struct-brace-indentationn
         Indent braces of a struct, union or enum N spaces.
         See  STATEMENTS.

     -sc, --start-left-side-of-comments
         Put the `*' character at the left of comments.
         See  COMMENTS.

     -sob, --swallow-optional-blank-lines
         Swallow optional blank lines.
         See  BLANK LINES.

     -ss, --space-special-semicolon
         On one-line for  and  while  statments,  force  a  blank
         before the semicolon.
         See  STATEMENTS.

     -st, --standard-output
         Write to standard output.
         See  INVOKING INDENT.

     -T  Tell indent the name of typenames.
         See  DECLARATIONS.

     -tsn, --tab-sizen
         Set tab size to n spaces.
         See  INDENTATION.

     -ut, --use-tabs
         Use tabs. This is the default.
         See  INDENTATION.

     -v, --verbose
         Enable verbose mode.
         See  MISCELLANEOUS OPTIONS.

     -version
         Output the version number of indent.
         See  MISCELLANEOUS OPTIONS.


INVOKING INDENT
     As of version 1.3, the format of the indent command is:




SunOS 5.11                Last change:                          7






Misc. Reference Manual Pages                           INDENT(1L)



          indent [options] [input-files]

          indent [options] [single-input-file] [-o output-file]


     This  format  is  different  from earlier versions and other
     versions of indent.

     In the first form, one or more input  files  are  specified.
     indent  makes  a  backup copy of each file, and the original
     file  is  replaced   with   its   indented   version.    See
     BACKUP FILES, for an explanation of how backups are made.

     In  the  second  form, only one input file is specified.  In
     this case, or when the standard input is used, you may spec-
     ify an output file after the `-o' option.

     To  cause  indent to write to standard output, use the `-st'
     option.  This is only allowed when there is only  one  input
     file, or when the standard input is used.

     If  no input files are named, the standard input is read for
     input.  Also, if a filename named `-' is specified, then the
     standard input is read.

     As an example, each of the following commands will input the
     program `slithy_toves.c' and  write  its  indented  text  to
     `slithy_toves.out':


          indent slithy_toves.c -o slithy_toves.out

          indent -st slithy_toves.c > slithy_toves.out

          cat slithy_toves.c | indent -o slithy_toves.out


     Most  other  options to indent control how programs are for-
     matted.  As of version 1.2, indent also  recognizes  a  long
     name  for  each  option  name.  Long options are prefixed by
     either `--' or `+'.  [ `+' is being superseded  by  `--'  to
     maintain consistency with the POSIX standard.]
      In  most of this document, the traditional, short names are
     used for the sake of brevity.   See  OPTION SUMMARY,  for  a
     list of options, including both long and short names.

     Here is another example:

          indent -br test/metabolism.c -l85

     This  will  indent the program `test/metabolism.c' using the
     `-br'  and  `-l85'  options,  write  the  output   back   to



SunOS 5.11                Last change:                          8






Misc. Reference Manual Pages                           INDENT(1L)



     `test/metabolism.c',  and  write  the  original  contents of
     `test/metabolism.c'  to  a  backup  file  in  the  directory
     `test'.

     Equivalent  invocations  using  long  option  names for this
     example would be:


          indent --braces-on-if-line --line-length185 test/metabolism.c

          indent +braces-on-if-line +line-length185 test/metabolism.c


     If you find that you often use indent with the same options,
     you  may  put those options into a file named `.indent.pro'.
     indent will look for  a  profile  the  environment  variable
     INDENT_PROFILE. If that exists its value is expected to name
     the file that is to be used.  If  the  environment  variable
     does  not  exist, indent looks for `.indent.pro' in the cur-
     rent directory
      and use that if found.  Finally  indent  will  search  your
     home  directory for `.indent.pro' and use that file if it is
     found.  This behaviour is different from that of other  ver-
     sions of indent, which load both files if

     The  format  of  `.indent.pro'  is simply a list of options,
     just as they would appear on the command line, separated  by
     white  space  (tabs,  spaces,  and  newlines).   Options  in
     `.indent.pro' may be surrounded by C  or  C++  comments,  in
     which case they are ignored.

     Command   line   switches   are   handled  after  processing
     `.indent.pro'.  Options specified later  override  arguments
     specified  earlier, with one exception: Explicitly specified
     options  always  override  background  options   (See   COM-
     MON STYLES).    You  can  prevent  indent  from  reading  an
     `.indent.pro' file by specifying the `-npro' option.


BACKUP FILES
     As of version 1.3, GNU indent makes GNU-style backup  files,
     the  same way GNU Emacs does.  This means that either simple
     or numbered backup filenames may be made.

     Simple backup file names are generated by appending a suffix
     to  the  original file name.  The default for this suffix is
     the one-character string `~' (tilde).  Thus, the backup file
     for `python.c' would be `python.c~'.

     Instead of the default, you may specify any string as a suf-
     fix by setting the environment variable SIMPLE_BACKUP_SUFFIX
     to your preferred suffix.



SunOS 5.11                Last change:                          9






Misc. Reference Manual Pages                           INDENT(1L)



     Numbered  backup  versions of a file `momeraths.c' look like
     `momeraths.c.~23~', where 23 is the version of this particu-
     lar  backup.   When  making  a  numbered  backup of the file
     `src/momeraths.c',   the   backup   file   will   be   named
     `src/momeraths.c.~V~',  where  V is one greater than the the
     directory `src'.   The  environment  variable  VERSION_WIDTH
     controls  the number of digits, using left zero padding when
     necessary.  For instance, setting this variable to "2"  will
     lead to the backup file being named `momeraths.c.~04~'.

     The  type  of backup file made is controlled by the value of
     the environment variable  VERSION_CONTROL.   If  it  is  the
     string  `simple', then only simple backups will be made.  If
     its value is the string `numbered',  then  numbered  backups
     will  be  made.   If  its value is `numbered-existing', then
     numbered backups will be made if there  already  exist  num-
     bered backups for the file being indented; otherwise, a sim-
     ple backup is made.  If VERSION_CONTROL  is  not  set,  then
     indent assumes the behaviour of `numbered-existing'.

     Other  versions  of  indent  use the suffix `.BAK' in naming
     backup files.  This behaviour can  be  emulated  by  setting
     SIMPLE_BACKUP_SUFFIX to `.BAK'.

     Note  also that other versions of indent make backups in the
     current directory, rather  than  in  the  directory  of  the
     source file as GNU indent now does.


COMMON STYLES
     There are several common styles of C code, including the GNU
     style, the Kernighan  &  Ritchie  style,  and  the  original
     Berkeley style.  A style may be selected with a single back-
     ground option, which specifies a set of values for all other
     options.  However, explicitly specified options always over-
     ride options implied by a background option.

     As of version 1.2, the default style of GNU  indent  is  the
     GNU  style.   Thus, it is no longer necessary to specify the
     option `-gnu' to obtain this format, although doing so  will
     not cause an error.  Option settings which correspond to the
     GNU style are:

          -nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2
          -ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -nprs -psl -saf -sai
          -saw -nsc -nsob

     The GNU coding style is that preferred by the  GNU  project.
     It  is  the  style  that the GNU Emacs C mode encourages and
     which is used in the  C  portions  of  GNU  Emacs.   (People
     interested  in writing programs for Project GNU should get a
     copy of  "The  GNU  Coding  Standards",  which  also  covers



SunOS 5.11                Last change:                         10






Misc. Reference Manual Pages                           INDENT(1L)



     semantic  and  portability  issues such as memory usage, the
     size of integers, etc.)

     The Kernighan & Ritchie style is used throughout their well-
     known book "The C Programming Language".  It is enabled with
     the `-kr' option.  The Kernighan & Ritchie style corresponds
     to the following set of options:

          -nbad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0
          -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs
          -nprs -npsl -saf -sai -saw -nsc -nsob -nss

     Kernighan & Ritchie style does not put comments to the right
     of code in the same column at all times  (nor  does  it  use
     only  one space to the right of the code), so for this style
     indent has arbitrarily chosen column 33.

     The style of the original Berkeley indent may be obtained by
     specifying `-orig' (or by specifying `--original', using the
     long option name).  This style is equivalent to the  follow-
     ing settings:

          -nbad -nbap -bbo -bc -br -brs -c33 -cd33 -cdb -ce -ci4 -cli0
          -cp33 -di16 -fc1 -fca -hnl -i4 -ip4 -l75 -lp -npcs -nprs -psl
          -saf -sai -saw -sc -nsob -nss -ts8


BLANK LINES
     Various  programming  styles  use  blank  lines in different
     places.  indent has a number of options specific places.

     The `-bad' option causes indent to force a blank line  after
     every  block  of  declarations.   The  `-nbad' option causes
     indent not to force such blank

     The `-bap' option forces a blank line after every  procedure
     body.  The `-nbap' option forces no such blank line.

     The  `-bbb'  option  forces  a blank line before every boxed
     comment (See COMMENTS.)  The `-nbbb' option does  not  force
     such blank lines.

     The  `-sob'  option  causes indent to swallow optional blank
     lines (that is, any optional  blank  lines  present  in  the
     input  will  be removed from the output).  If the `-nsob' is
     specified, any blank lines present in the input file will be
     copied to the output file.



--blank-lines-after-declarations
     The  `-bad'  option forces a blank line after every block of



SunOS 5.11                Last change:                         11






Misc. Reference Manual Pages                           INDENT(1L)



     declarations.  The `-nbad' option  does  not  add  any  such
     blank lines.

     For example, given the input
          char *foo;
          char *bar;
          /* This separates blocks of declarations.  */
          int baz;

     indent -bad produces

          char *foo;
          char *bar;

          /* This separates blocks of declarations.  */
          int baz;

     and indent -nbad produces

          char *foo;
          char *bar;
          /* This separates blocks of declarations.  */
          int baz;


--blank-lines-after-procedures
     The  `-bap' option forces a blank line after every procedure
     body.

     For example, given the input

          int
          foo ()
          {
            puts("Hi");
          }
          /* The procedure bar is even less interesting.  */
          char *
          bar ()
          {
            puts("Hello");
          }

     indent -bap produces

          int
          foo ()
          {
            puts ("Hi");
          }

          /* The procedure bar is even less interesting.  */



SunOS 5.11                Last change:                         12






Misc. Reference Manual Pages                           INDENT(1L)



          char *
          bar ()
          {
            puts ("Hello");
          }

     and indent -nbap produces

          int
          foo ()
          {
            puts ("Hi");
          }
          /* The procedure bar is even less interesting.  */
          char *
          bar ()
          {
            puts ("Hello");
          }

     No blank line will be added after the procedure foo.


COMMENTS
     indent formats both C and C++ `/*', terminated with `*/' and
     may contain newline characters.  C++ comments begin with the
     delimiter `//' and end at the newline.

     indent handles comments differently  depending  upon  indent
     attempts  to  distinguish  between comments statements, com-
     ments which follow  declarations,  comments  following  pre-
     processor directives, and comments which are not preceded by
     code of any sort, i.e., they begin  the  text  of  the  line
     (although not neccessarily in column 1).

     indent  further  distinguishes between comments found proce-
     dures and aggregates, and those found within them.  In  par-
     ticular,  comments beginning a line found within a procedure
     will be indented to the column at which  code  is  currently
     indented.   The exception to this a comment beginning in the
     leftmost column;  such a comment is output at that column.

     indent attempts to leave boxed comments general idea of such
     a  comment  is that it is enclosed in a rectangle or ``box''
     of stars or dashes to visually  set  it  apart.   More  pre-
     cisely,  boxed  comments  are  defined as those in which the
     initial `/*' is followed immediately by the  character  `*',
     `=',  `_',  or  `-', or those in which the beginning comment
     delimiter (`/*') is on a line by itself, and  the  following
     line begins with a `*' in the same column as the star of the
     opening delimiter.




SunOS 5.11                Last change:                         13






Misc. Reference Manual Pages                           INDENT(1L)



     Examples of boxed comments are:

          /**********************
           * Comment in a box!! *
           **********************/

                 /*
                  * A different kind of scent,
                  * for a different kind of comment.
                  */

     indent attempts to leave boxed comments in the source  file.
     Thus  the  indentation  of the comment is unchanged, and its
     length is not checked in any way.  The only alteration  made
     is  that an embedded tab character may be converted into the
     appropriate number of spaces.

     If the `-bbb' option is specified, all such  boxed  comments
     will  be  preceded by a blank line, unless such a comment is
     preceded by code.

     Comments which are not  boxed  comments  may  be  formatted,
     which  means  that  the line is broken to fit within a right
     margin and left-filled with whitespace.  Single newlines are
     equivalent to a space, but blank lines (two or more newlines
     in a row) are taken to mean a paragraph  break.   Formatting
     of  comments  which  begin after the first column is enabled
     with the `-fca' option.  To format those beginning in column
     one,   specify  `-fc1'.   Such  formatting  is  disabled  by
     default.

     The right margin for formatting defaults to 78, but  may  be
     changed with the `-lc' option.  If the margin specified does
     not allow the comment to be  printed,  the  margin  will  be
     automatically  extended  for  the  duration of that comment.
     The margin is not respected if the comment is not being for-
     matted.

     If the comment begins a line (i.e., there is no program text
     to its left), it will be indented to the column it was found
     in  unless  the  comment is within a block of code.  In that
     case, such a comment will be aligned with the indented  code
     of  that  block  (unless the comment began in the first col-
     umn).  This alignment may be affected by  the  `-d'  option,
     which  specifies  an amount by which such comments are moved
     to the left, or unindented.  For example, `-d2' places  com-
     ments  two spaces to the left of code.  By default, comments
     are aligned with code, unless they begin in the  first  col-
     umn, in which case they are left there by default --- to get
     them aligned with the code, specify `-fc1'.

     Comments to the right of code  will  appear  by  default  in



SunOS 5.11                Last change:                         14






Misc. Reference Manual Pages                           INDENT(1L)



     column  33.   This may be changed with one of three options.
     `-c' will specify the column for  comments  following  code,
     `-cd'  specifies  the column for comments following declara-
     tions, and `-cp' specifies the column for comments following
     preprocessor directives #else and #endif.

     If the code to the left of the comment exceeds the beginning
     column, the comment column will be extended to the next tab-
     stop column past the end of the code, or in the case of pre-
     processor directives, to one  space  past  the  end  of  the
     directive.  This extension lasts only for the output of that
     particular comment.

     The `-cdb' option places the  comment  delimiters  on  blank
     lines.   Thus,  a  single line comment like /* Loving hug */
     can be transformed into:

          /*
             Loving hug
           */

     Stars can be placed at the beginning of multi-line  comments
     with  the `-sc' option.  Thus, the single-line comment above
     can be transformed (with `-cdb -sc') into:

          /*
           * Loving hug
           */


STATEMENTS
     The `-br' or `-bl' option specifies how to format braces.

     The `-br' option formats statement braces like this:

          if (x > 0) {
            x--;
          }

     The `-bl' option formats them like this:

          if (x > 0)
            {
              x--;
            }

     If you use the `-bl' option, you may also  want  to  specify
     the `-bli' option.  This option specifies the number of spa-
     ces by which braces are  indented.   `-bli2',  the  default,
     gives  the  result shown above.  `-bli0' results in the fol-
     lowing:




SunOS 5.11                Last change:                         15






Misc. Reference Manual Pages                           INDENT(1L)



          if (x > 0)
          {
            x--;
          }

     If you are using the `-br' option, you probably want to also
     use  the  `-ce' option.  This causes the else in an if-then-
     else construct to cuddle up  to  the  immediately  preceding
     `}'.  For example, with `-br -ce' you get the following:

          if (x > 0) {
            x--;
          } else {
            fprintf (stderr, "...something wrong?\n");
          }

     With `-br -nce' that code would appear as

          if (x > 0) {
            x--;
          }
          else {
            fprintf (stderr, "...something wrong?\n");
          }

     This causes the while in a do-while loop to cuddle up to the
     immediately preceding `}'.  For example, with `-cdw' you get
     the following:

          do {
            x--;
          } while (x);

     With `-ncdw' that code would appear as

          do {
            x--;
          }
          while (x);

     The  `-cli'  option specifies the number of spaces that case
     labels should be indented to the  right  of  the  containing
     switch statement.

     The default gives code like:

          switch (i)
            {
            case 0:
              break;
            case 1:
              {



SunOS 5.11                Last change:                         16






Misc. Reference Manual Pages                           INDENT(1L)



                ++i;
              }
            default:
              break;
            }

     Using the `-cli2' that would become:

          switch (i)
            {
              case 0:
                break;
              case 1:
                {
                  ++i;
                }
              default:
                break;
            }

     The  indentation of the braces below a case statement can be
     controlled with the  `-cbin'  option.   For  example,  using
     `-cli2 -cbi0' results in:

          switch (i)
            {
              case 0:
                break;
              case 1:
              {
                ++i;
              }
              default:
                break;
            }

     If  a semicolon is on the same line as a for or while state-
     ment, the `-ss' option will  cause  a  space  to  be  placed
     before the semicolon.  This emphasizes the semicolon, making
     it clear that the body of the for or while statement  is  an
     empty statement.  `-nss' disables this feature.

     The  `-pcs'  option  causes a space to be placed between the
     name of the procedure being called and the `(' (for example,
     puts ("Hi");.  The `-npcs' option would give puts("Hi");).


     If  the `-cs' option is specified, indent puts a space after
     a cast operator.

     The `-bs' option ensures that there is a space  between  the
     keyword  sizeof and its argument.  In some versions, this is



SunOS 5.11                Last change:                         17






Misc. Reference Manual Pages                           INDENT(1L)



     known as the `Bill_Shannon' option.

     The `-saf' option forces a space between an for and the fol-
     lowing parenthesis.  This is the default.

     The  `-sai' option forces a space between an if and the fol-
     lowing parenthesis.  This is the default.

     The `-saw' option forces a space between an  while  and  the
     following parenthesis.  This is the default.

     The  `-prs'  option  causes  all parentheses to be seperated
     with a space from the what is between  them.   For  example,
     using `-prs' results in code like:

            while ( ( e_code - s_code ) < ( dec_ind - 1 ) )
              {
                set_buf_break ( bb_dec_ind );
                *e_code++ = ' ';
              }


DECLARATIONS
     By  default  indent  will line up identifiers, in the column
     specified by the `-di' option.  For example,  `-di16'  makes
     things look like:

          int             foo;
          char           *bar;

     Using  a  small  value  (such  as  one or two) for the `-di'
     option can be used to cause the identifiers to be placed  in
     the first available position; for example:

          int foo;
          char *bar;

     The  value given to the `-di' option will still affect vari-
     ables which are put on separate lines from their types,  for
     example `-di2' will lead to:

          int
            foo;

     If  the `-bc' option is specified, a newline is forced after
     each comma in a declaration.  For example,

          int a,
            b,
            c;

     With the `-nbc' option this would look like



SunOS 5.11                Last change:                         18






Misc. Reference Manual Pages                           INDENT(1L)



          int a, b, c;

     The `-bfda' option causes a newline to be forced  after  the
     comma  separating  the  arguments of a function declaration.
     The arguments will appear at one indention level deeper than
     the  function declaration.  This is particularly helpful for
     functions with long  argument  lists.   The  option  `-bfde'
     causes  a newline to be forced before the closing bracket of
     the function declaration. For both options the  'n'  setting
     is the default: -nbdfa and -nbdfe.


     For example,

          void foo (int arg1, char arg2, int *arg3, long arg4, char arg5);
     With the `-bfda' option this would look like

          void foo (
              int arg1,
              char arg2,
              int *arg3,
              long arg4,
              char arg5);

     With, in addition, the `-bfde' option this would look like

          void foo (
              int arg1,
              char arg2,
              int *arg3,
              long arg4,
              char arg5
              );

     The  `-psl'  option  causes  the  type  of a procedure being
     defined to be placed on the line before the name of the pro-
     cedure.   This  style  is  required for the etags program to
     work correctly, as well as some of the c-mode  functions  of
     Emacs.

     You  must use the `-T' option to tell indent the name of all
     the typenames in your program that are defined  by  typedef.
     `-T'  can  be specified more than once, and all names speci-
     fied are used.  For example, if your program contains

          typedef unsigned long CODE_ADDR;
          typedef enum {red, blue, green} COLOR;

     you would use the options `-T CODE_ADDR -T COLOR'.

     The `-brs' or `-bls' option specifies how to  format  braces
     in  struct  declarations.   The `-brs' option formats braces



SunOS 5.11                Last change:                         19






Misc. Reference Manual Pages                           INDENT(1L)



     like this:

          struct foo {
            int x;
          };

     The `-bls' option formats them like this:

          struct foo
          {
            int x;
          };


INDENTATION
     One issue in the formatting of code is  how  far  each  line
     should be indented from the left margin.  When the beginning
     of a statement such as if or for is encountered, the  inden-
     tation level is increased by the value specified by the `-i'
     option.  For example, use `-i8' to specify an eight  charac-
     ter  indentation for each level.  When a statement is broken
     across two lines, the second line is indented by a number of
     additional  spaces  specified  by  the  `-ci' option.  `-ci'
     defaults to 0.  However, if the `-lp' option  is  specified,
     and  a  line  has  a left parenthesis which is not closed on
     that line, then continuation lines will be lined up to start
     at  the  character position just after the left parenthesis.
     This processing also applies to `[' and applies to `{'  when
     it  occurs in initialization lists.  For example, a piece of
     continued code might look like  this  with  `-nlp  -ci3'  in
     effect:

            p1 = first_procedure (second_procedure (p2, p3),
               third_procedure (p4, p5));

     With `-lp' in effect the code looks somewhat clearer:

            p1 = first_procedure (second_procedure (p2, p3),
                                  third_procedure (p4, p5));

     When  a  statement  is  broken  in between two or more paren
     pairs (...), each extra pair causes  the  indentation  level
     extra indentation:

          if ((((i < 2 &&
                  k > 0) || p == 0) &&
              q == 1) ||
            n = 0)

     The  option  `-ipN'  can be used to set the extra offset per
     paren.  For instance, `-ip0' would format the above as:




SunOS 5.11                Last change:                         20






Misc. Reference Manual Pages                           INDENT(1L)



          if ((((i < 2 &&
            k > 0) || p == 0) &&
            q == 1) ||
            n = 0)

     indent assumes that tabs are placed input and output charac-
     ter streams.  These intervals are by default 8 columns wide,
     but (as of version 1.2) may be changed by the `-ts'  option.
     Tabs are treated as the equivalent number of spaces.

     The  indentation  of type declarations in old-style function
     definitions is controlled by the `-ip' parameter.  This is a
     numeric  parameter specifying how many spaces to indent type
     declarations.  For example, the default `-ip5' makes defini-
     tions look like this:

          char *
          create_world (x, y, scale)
               int x;
               int y;
               float scale;
          {
            . . .
          }

     For  compatibility with other versions of indent, the option
     `-nip' is provided, which is equivalent to `-ip0'.

     ANSI C allows white space to be placed on preprocessor  com-
     mand  lines  between the character `#' and the command name.
     By  default,  indent  removes  this  space,  but  specifying
     directs  indent  to  leave this space unmodified. The option
     `-ppi' overrides  `-nlps' and  `-lps'.

     This option can be used to request that preprocessor  condi-
     tional statements can be indented by to given number of spa-
     ces, for example with the option `-ppi 3'

          #if X
          #if Y
          #define Z 1
          #else
          #define Z 0
          #endif
          #endif
     becomes
          #if X
          #   if Y
          #      define Z 1
          #   else
          #      define Z 0
          #   endif



SunOS 5.11                Last change:                         21






Misc. Reference Manual Pages                           INDENT(1L)



          #endif


BREAKING LONG LINES
     With the option `-ln', or `--line-lengthn', it  is  possible
     to  specify  the  maximum  length  of  a line of C code, not
     including possible comments that follow it.

     When lines become longer then the specified line length, GNU
     indent  tries to break the line at a logical place.  This is
     new as of version 2.1 however and not  very  intelligent  or
     flexible yet.

     Currently there are two options that allows one to interfere
     with the algorithm that determines where to break a line.

     The `-bbo' option causes GNU indent to prefer to break  long
     lines  before  the boolean operators && and ||.  The `-nbbo'
     option causes GNU indent  not  have  that  preference.   For
     example,  the  default option `-bbo' (together with `--line-
     length60' and  `--ignore-newlines')  makes  code  look  like
     this:

            if (mask
                && ((mask[0] == '\0')
                    || (mask[1] == '\0'
                        && ((mask[0] == '0') || (mask[0] == '*')))))

     Using the option `-nbbo' will make it look like this:

            if (mask &&
                ((mask[0] == '\0') ||
                 (mask[1] == '\0' &&
                  ((mask[0] == '0') || (mask[0] == '*')))))

     The  default  `-hnl', however, honours newlines in the input
     file by giving them the highest possible priority  to  break
     lines at.  For example, when the input file looks like this:

            if (mask
                && ((mask[0] == '\0')
                || (mask[1] == '\0' && ((mask[0] == '0') || (mask[0] == '*')))))

     then  using  the  option  `-hnl',  or   `--honour-newlines',
     together  with the previously mentioned `-nbbo' and `--line-
     length60', will cause the output not to be what is given  in
     the  last  example  but  instead will prefer to break at the
     positions where the code was broken in the input file:

            if (mask
                && ((mask[0] == '\0')
                    || (mask[1] == '\0' &&



SunOS 5.11                Last change:                         22






Misc. Reference Manual Pages                           INDENT(1L)



                        ((mask[0] == '0') || (mask[0] == '*')))))

     The idea behind this option is  that  lines  which  are  too
     long,  but are already broken up, will not be touched by GNU
     indent.  Really messy code should be run through  indent  at
     least once using the `--ignore-newlines' option though.


DISABLING FORMATTING
     Formatting  of C code may be disabled for portions of a pro-
     gram by embedding special control comments in  the  program.
     To turn off formatting for a section of a program, place the
     disabling control comment /* *INDENT-OFF* */ on  a  line  by
     itself just before that section.  Program text scanned after
     this control comment is output precisely as  input  with  no
     modifications  until  the  corresponding enabling comment is
     scanned on a line by itself.  The disabling control  comment
     is  /* *INDENT-ON* */, and any text following the comment on
     the line is  also  output  unformatted.   Formatting  begins
     again  with  the  input  line following the enabling control
     comment.

     More precisely, indent does not attempt to verify the  clos-
     ing  delimiter (*/) for these C comments, and any whitespace
     on the line is totally transparent.

     These control comments also function in their  C++  formats,
     namely // *INDENT-OFF* and // *INDENT-ON*.

     It should be noted that the internal state of indent remains
     unchanged over the course of the unformatted section.  Thus,
     for example, turning off formatting in the middle of a func-
     tion and continuing it after the end  of  the  function  may
     lead  to  bizarre results.  It is therefore wise to be some-
     what modular in selecting code to be left unformatted.

     As a historical note, some earlier versions of  indent  pro-
     duced  error  messages beginning with *INDENT**.  These ver-
     sions of indent were written to ignore any with  such  error
     messages.   I  have removed this incestuous feature from GNU
     indent.


MISCELLANEOUS OPTIONS
     To find out what version of indent you have, use the command
     indent  -version. This will report the indent, without doing
     any of the

     The `-v' option can be used to turn on verbose  mode.   When
     in  verbose  mode, indent reports when it splits one line of
     input into two more more lines of  output,  and  gives  some
     size statistics at completion.



SunOS 5.11                Last change:                         23






Misc. Reference Manual Pages                           INDENT(1L)



     The  `-pmt'  option causes indent to preserve the access and
     modification times on the output files.  Using  this  option
     has  the  advantage  that  running  indent on all source and
     header files in a project won't cause make  to  rebuild  all
     targets.  This option is only available on Operating Systems
     that have the POSIX utime(2) function.


BUGS
     Please report any bugs to bug-indent@gnu.org.

     When indent is run twice on a file, with the  same  profile,
     it  should never change that file the second time.  With the
     current design of indent, this can not be guaranteed, and it
     has not been extensively tested.

     indent  does  not  understand  C.  In  the inability to join
     lines.  The result is that running a file through indent  is
     irreversible,  even if the used input file was the result of
     running indent with a given profile (`.indent.pro').

     While an attempt was made to get indent working for C++,  it
     will  not  do  a  good job on any C++ source except the very
     simplest.

     indent does not look at the when  writing  comments  to  the
     output  file.   This results often in comments being put far
     to the right.  In order to prohibit indent  from  joining  a
     broken  line  that  has a comment at the end, make sure that
     the comments start on the first line of the break.

     indent does not count  lines  and  option)  when  indent  is
     turned off with /* *INDENT-OFF* */.

     Comments  of  the form /*UPPERCASE*/ are not treated as com-
     ment but as an identifier, causing them to  be  joined  with
     the  next  line. This renders comments of this type useless,
     unless they are embedded in the code to begin with.


COPYRIGHT
     The following copyright notice applies to  the  indent  pro-
     gram.  The copyright and copying permissions for this manual
     appear  near   the   beginning   of   `indent.texinfo'   and
     `indent.info', and near the end of `indent.1'.

     Copyright (c) 2001 David Ingamells.
     Copyright (c) 1999 Carlo Wood.
     Copyright (c) 1995, 1996 Joseph Arceneaux.
     Copyright (c) 1989, 1992, 1993, 1994, 1995, 1996 Free Software Foundation
     Copyright (c) 1985 Sun Microsystems, Inc.
     Copyright (c) 1980 The Regents of the University of California.



SunOS 5.11                Last change:                         24






Misc. Reference Manual Pages                           INDENT(1L)



     Copyright (c) 1976 Board of Trustees of the University of Illinois.
     All rights reserved.

     Redistribution and use in source and binary forms are permitted
     provided that the above copyright notice and this paragraph are
     duplicated in all such forms and that any documentation,
     advertising materials, and other materials related to such
     distribution and use acknowledge that the software was developed
     by the University of California, Berkeley, the University of Illinois,
     Urbana, and Sun Microsystems, Inc.  The name of either University
     or Sun Microsystems may not be used to endorse or promote products
     derived from this software without specific prior written permission.
     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
     IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
     WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
     PURPOSE.


Options' Cross Key
     Here  is  a  list of options alphabetized by long option, to
     help you find the corresponding short option.


          --blank-lines-after-commas                      -bc
          --blank-lines-after-declarations                -bad
          --blank-lines-after-procedures                  -bap
          --blank-lines-before-block-comments             -bbb
          --braces-after-if-line                          -bl
          --brace-indent                                  -bli
          --braces-after-struct-decl-line                 -bls
          --braces-on-if-line                             -br
          --braces-on-struct-decl-line                    -brs
          --break-after-boolean-operator                  -nbbo
          --break-before-boolean-operator                 -bbo
          --break-function-decl-args                      -bfda
          --break-function-decl-args-end                  -bfde
          --case-indentation                              -clin
          --case-brace-indentation                        -cbin
          --comment-delimiters-on-blank-lines             -cdb
          --comment-indentation                           -cn
          --continuation-indentation                      -cin
          --continue-at-parentheses                       -lp
          --cuddle-do-while                               -cdw
          --cuddle-else                                   -ce
          --declaration-comment-column                    -cdn
          --declaration-indentation                       -din
          --dont-break-function-decl-args                 -nbfda
          --dont-break-function-decl-args-end             -nbfde
          --dont-break-procedure-type                     -npsl
          --dont-cuddle-do-while                          -ncdw
          --dont-cuddle-else                              -nce
          --dont-format-comments                          -nfca



SunOS 5.11                Last change:                         25






Misc. Reference Manual Pages                           INDENT(1L)



          --dont-format-first-column-comments             -nfc1
          --dont-line-up-parentheses                      -nlp
          --dont-space-special-semicolon                  -nss
          --dont-star-comments                            -nsc
          --else-endif-column                             -cpn
          --format-all-comments                           -fca
          --format-first-column-comments                  -fc1
          --gnu-style                                     -gnu
          --honour-newlines                               -hnl
          --ignore-newlines                               -nhnl
          --ignore-profile                                -npro
          --indent-level                                  -in
          --k-and-r-style                                 -kr
          --leave-optional-blank-lines                    -nsob
          --leave-preprocessor-space                      -lps
          --line-comments-indentation                     -dn
          --line-length                                   -ln
          --no-blank-lines-after-commas                   -nbc
          --no-blank-lines-after-declarations             -nbad
          --no-blank-lines-after-procedures               -nbap
          --no-blank-lines-before-block-comments          -nbbb
          --no-comment-delimiters-on-blank-lines          -ncdb
          --no-space-after-casts                          -ncs
          --no-parameter-indentation                      -nip
          --no-space-after-for                    -nsaf
          --no-space-after-function-call-names            -npcs
          --no-space-after-if                -nsai
          --no-space-after-parentheses                    -nprs
          --no-space-after-while                  -nsaw
          --no-tabs                                       -nut
          --no-verbosity                                  -nv
          --original                                      -orig
          --parameter-indentation                         -ipn
          --paren-indentation                             -pin
          --preserve-mtime                   -pmt
          --procnames-start-lines                         -psl
          --space-after-cast                              -cs
          --space-after-for                  -saf
          --space-after-if                   -sai
          --space-after-parentheses                       -prs
          --space-after-procedure-calls                   -pcs
          --space-after-while                -saw
          --space-special-semicolon                       -ss
          --standard-output                               -st
          --start-left-side-of-comments                   -sc
          --struct-brace-indentation                      -sbin
          --swallow-optional-blank-lines                  -sob
          --tab-size                                      -tsn
          --use-tabs                                      -ut
          --verbose                                       -v





SunOS 5.11                Last change:                         26






Misc. Reference Manual Pages                           INDENT(1L)



RETURN VALUE
     Unknown

FILES
     $HOME/.indent.pro   holds default options for indent.

AUTHORS
     Carlo Wood
     Joseph Arceneaux
     Jim Kingdon
     David Ingamells

HISTORY
     Derived from the UCB program "indent".

COPYING
     Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996 Free  Soft-
     ware Foundation, Inc.  Copyright (C) 1995, 1996 Joseph Arce-
     neaux.  Copyright (C) 1999 Carlo Wood.  Copyright  (C)  2001
     David Ingamells.

     Permission is granted to make and distribute verbatim copies
     of this manual provided the copyright notice and  this  per-
     mission notice are preserved on all copies.





ATTRIBUTES
     See   attributes(5)   for   descriptions  of  the  following
     attributes:

     +---------------+----------------------+
     |ATTRIBUTE TYPE |   ATTRIBUTE VALUE    |
     +---------------+----------------------+
     |Availability   | developer/gnu-indent |
     +---------------+----------------------+
     |Stability      | Volatile             |
     +---------------+----------------------+
NOTES
     This  software  was   built   from   source   available   at
     https://java.net/projects/solaris-userland.    The  original
     community       source       was       downloaded       from
     ftp://ftp.gnu.org/gnu/indent/indent-2.2.9.tar.gz

     Further  information about this software can be found on the
     open source community website  at  https://www.gnu.org/soft-
     ware/indent/.






SunOS 5.11                Last change:                         27