summaryrefslogtreecommitdiffstats
path: root/upstream/fedora-40/man1/indent.1
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/fedora-40/man1/indent.1')
-rw-r--r--upstream/fedora-40/man1/indent.12185
1 files changed, 2185 insertions, 0 deletions
diff --git a/upstream/fedora-40/man1/indent.1 b/upstream/fedora-40/man1/indent.1
new file mode 100644
index 00000000..c5307b67
--- /dev/null
+++ b/upstream/fedora-40/man1/indent.1
@@ -0,0 +1,2185 @@
+.TH INDENT 1
+.SH "NAME"
+indent \- changes the appearance of a C program by inserting or deleting whitespace.
+.SH "SYNOPSIS"
+.B "indent "
+[options] [input\-files]
+.sp
+.B "indent "
+[options] [single\-input\-file] [\-o output\-file]
+.sp
+.B "indent "
+\-\-version
+.SH "DESCRIPTION"
+This man page is generated from the file \fIindent.texinfo\fR.
+This is Edition of "The \fBindent\fR Manual",
+for Indent Version , last updated .
+
+The \fBindent\fR program
+can be used to make code easier to read. It can also convert from one
+style of writing C to another.
+
+.B indent\fR understands a substantial amount about the syntax of C,
+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.
+.SH "OPTIONS"
+
+.TP 4
+.B -as\fR, \fB--align-with-spaces\fR
+If using tabs for indentation, use spaces for alignment.
+.br
+See \fB\ INDENTATION\fR.
+.TP
+.B -bad\fR, \fB--blank-lines-after-declarations\fR
+Force blank lines after the declarations.
+.br
+See \fB\ BLANK\ LINES\fR.
+.TP
+.B -bap\fR, \fB--blank-lines-after-procedures\fR
+Force blank lines after procedure bodies.
+.br
+See \fB\ BLANK\ LINES\fR.
+.TP
+.B -bbb\fR, \fB--blank-lines-before-block-comments\fR
+Force blank lines before block comments.
+.br
+See \fB\ BLANK\ LINES\fR.
+.TP
+.B -bbo\fR, \fB--break-before-boolean-operator\fR
+Prefer to break long lines before boolean operators.
+.br
+See \fB\ BREAKING\ LONG\ LINES\fR.
+.TP
+.B -bc\fR, \fB--blank-lines-after-commas\fR
+Force newline after comma in declaration.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -bl\fR, \fB--braces-after-if-line\fR
+Put braces on line after \fBif\fR, etc.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -blf\fR, \fB--braces-after-func-def-line\fR
+Put braces on line following function definition line.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -bli\fIn\fB\fR, \fB--brace-indent\fIn\fB\fR
+Indent braces \fIn\fR spaces.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -bls\fR, \fB--braces-after-struct-decl-line\fR
+Put braces on the line after \fBstruct\fR declaration lines.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -br\fR, \fB--braces-on-if-line\fR
+Put braces on line with \fBif\fR, etc.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -brf\fR, \fB--braces-on-func-def-line\fR
+Put braces on function definition line.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -brs\fR, \fB--braces-on-struct-decl-line\fR
+Put braces on \fBstruct\fR declaration line.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -bs\fR, \fB--Bill-Shannon\fR, \fB--blank-before-sizeof\fR
+Put a space between \fBsizeof\fR and its argument.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -c\fIn\fB\fR, \fB--comment-indentation\fIn\fB\fR
+Put comments to the right of code in column \fIn\fR.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -cbi\fIn\fB\fR, \fB--case-brace-indentation\fIn\fB\fR
+Indent braces after a case label N spaces.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -cd\fIn\fB\fR, \fB--declaration-comment-column\fIn\fB\fR
+Put comments to the right of the declarations in column \fIn\fR.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -cdb\fR, \fB--comment-delimiters-on-blank-lines\fR
+Put comment delimiters on blank lines.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -cdw\fR, \fB--cuddle-do-while\fR
+Cuddle while of \fBdo {} while;\fR and preceding \(oq}\(cq.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -ce\fR, \fB--cuddle-else\fR
+Cuddle else and preceding \(oq}\(cq.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -ci\fIn\fB\fR, \fB--continuation-indentation\fIn\fB\fR
+Continuation indent of \fIn\fR spaces.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -cli\fIn\fB\fR, \fB--case-indentation\fIn\fB\fR
+Case label indent of \fIn\fR spaces.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -cp\fIn\fB\fR, \fB--else-endif-column\fIn\fB\fR
+Put comments to the right of \fB#else\fR and \fB
+#endif\fR statements in column \fIn\fR.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -cs\fR, \fB--space-after-cast\fR
+Put a space after a cast operator.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -d\fIn\fB\fR, \fB--line-comments-indentation\fIn\fB\fR
+Set indentation of comments not to the right
+of code to \fIn\fR spaces.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -bfda\fR, \fB--break-function-decl-args\fR
+Break the line before all arguments in a declaration.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -bfde\fR, \fB--break-function-decl-args-end\fR
+Break the line after the last argument in a declaration.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -dj\fR, \fB--left-justify-declarations\fR
+If -cd 0 is used then comments after declarations are left justified
+behind the declaration.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -di\fIn\fB\fR, \fB--declaration-indentation\fIn\fB\fR
+Put variables in column \fIn\fR.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -fc1\fR, \fB--format-first-column-comments\fR
+Format comments in the first column.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -fca\fR, \fB--format-all-comments\fR
+Do not disable all formatting of comments.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -fnc\fR, \fB--fix-nested-comments\fR
+Fix nested comments.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -gnu\fR, \fB--gnu-style\fR
+Use GNU coding style. This is the default.
+.br
+See \fB\ COMMON\ STYLES\fR.
+.TP
+.B -gts\fR, \fB--gettext-strings\fR
+Treat gettext \fB_("...")\fR and \fBN_("...")\fR as strings rather than as functions.
+.br
+See \fB\ BREAKING\ LONG\ LINES\fR.
+.TP
+.B -hnl\fR, \fB--honour-newlines\fR
+Prefer to break long lines at the position of newlines in the input.
+.br
+See \fB\ BREAKING\ LONG\ LINES\fR.
+.TP
+.B -i\fIn\fB\fR, \fB--indent-level\fIn\fB\fR
+Set indentation level to \fIn\fR spaces.
+.br
+See \fB\ INDENTATION\fR.
+.TP
+.B -il\fIn\fB\fR, \fB--indent-label\fIn\fB\fR
+Set offset for labels to column \fIn\fR.
+.br
+See \fB\ INDENTATION\fR.
+.TP
+.B -ip\fIn\fB\fR, \fB--parameter-indentation\fIn\fB\fR
+Indent parameter types in old-style function
+definitions by \fIn\fR spaces.
+.br
+See \fB\ INDENTATION\fR.
+.TP
+.B -kr\fR, \fB--k-and-r-style\fR
+Use Kernighan & Ritchie coding style.
+.br
+See \fB\ COMMON\ STYLES\fR.
+.TP
+.B -l\fIn\fB\fR, \fB--line-length\fIn\fB\fR
+Set maximum line length for non-comment lines to \fIn\fR.
+.br
+See \fB\ BREAKING\ LONG\ LINES\fR.
+.TP
+.B -lc\fIn\fB\fR, \fB--comment-line-length\fIn\fB\fR
+Set maximum line length for comment formatting to \fIn\fR.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -linux\fR, \fB--linux-style\fR
+Use Linux coding style.
+.br
+See \fB\ COMMON\ STYLES\fR.
+.TP
+.B -lp\fR, \fB--continue-at-parentheses\fR
+Line up continued lines at parentheses.
+.br
+See \fB\ INDENTATION\fR.
+.TP
+.B -lps\fR, \fB--leave-preprocessor-space\fR
+Leave space between \(oq#\(cq and preprocessor directive.
+.br
+See \fB\ INDENTATION\fR.
+.TP
+.B -nlps\fR, \fB--remove-preprocessor-space\fR
+Remove space between \(oq#\(cq and preprocessor directive.
+.br
+See \fB\ INDENTATION\fR.
+.TP
+.B -nbad\fR, \fB--no-blank-lines-after-declarations\fR
+Do not force blank lines after declarations.
+.br
+See \fB\ BLANK\ LINES\fR.
+.TP
+.B -nbap\fR, \fB--no-blank-lines-after-procedures\fR
+Do not force blank lines after procedure bodies.
+.br
+See \fB\ BLANK\ LINES\fR.
+.TP
+.B -nbbo\fR, \fB--break-after-boolean-operator\fR
+Do not prefer to break long lines before boolean operators.
+.br
+See \fB\ BREAKING\ LONG\ LINES\fR.
+.TP
+.B -nbc\fR, \fB--no-blank-lines-after-commas\fR
+Do not force newlines after commas in declarations.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -nbfda\fR, \fB--dont-break-function-decl-args\fR
+Don\(cqt put each argument in a function declaration on a separate line.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -ncdb\fR, \fB--no-comment-delimiters-on-blank-lines\fR
+Do not put comment delimiters on blank lines.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -ncdw\fR, \fB--dont-cuddle-do-while\fR
+Do not cuddle \fB}\fR and the \fBwhile\fR of a \fBdo {} while;\fR.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -nce\fR, \fB--dont-cuddle-else\fR
+Do not cuddle \fB}\fR and \fBelse\fR.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -ncs\fR, \fB--no-space-after-casts\fR
+Do not put a space after cast operators.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -ndj\fIn\fB\fR, \fB--dont-left-justify-declarations\fR
+Comments after declarations are treated the same as
+comments after other statements.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -nfc1\fR, \fB--dont-format-first-column-comments\fR
+Do not format comments in the first column as normal.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -nfca\fR, \fB--dont-format-comments\fR
+Do not format any comments.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -ngts\fR, \fB--no-gettext-strings\fR
+Treat gettext \fB_("...")\fR and \fBN_("...")\fR as normal functions. This is the default.
+.br
+See \fB\ BREAKING\ LONG\ LINES\fR.
+.TP
+.B -nhnl\fR, \fB--ignore-newlines\fR
+Do not prefer to break long lines at the position of newlines in the input.
+.br
+See \fB\ BREAKING\ LONG\ LINES\fR.
+.TP
+.B -nip\fR, \fB--no-parameter-indentation\fR
+Zero width indentation for parameters.
+.br
+See \fB\ INDENTATION\fR.
+.TP
+.B -nlp\fR, \fB--dont-line-up-parentheses\fR
+Do not line up parentheses.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -npcs\fR, \fB--no-space-after-function-call-names\fR
+Do not put space after the function in function calls.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -nprs\fR, \fB--no-space-after-parentheses\fR
+Do not put a space after every \(cq(\(cq and before every \(cq)\(cq.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -npsl\fR, \fB--dont-break-procedure-type\fR
+Put the type of a procedure on the same line as its name.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -nsaf\fR, \fB--no-space-after-for\fR
+Do not put a space after every \fBfor\fR.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -nsai\fR, \fB--no-space-after-if\fR
+Do not put a space after every \fBif\fR.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -nsaw\fR, \fB--no-space-after-while\fR
+Do not put a space after every \fBwhile\fR.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -nsc\fR, \fB--dont-star-comments\fR
+Do not put the \(oq*\(cq character at the left of comments.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -nsob\fR, \fB--leave-optional-blank-lines\fR
+Do not swallow optional blank lines.
+.br
+See \fB\ BLANK\ LINES\fR.
+.TP
+.B -nss\fR, \fB--dont-space-special-semicolon\fR
+Do not force a space before the semicolon after certain statements.
+Disables \(oq-ss\(cq.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -ntac\fR, \fB--dont-tab-align-comments\fR
+Do not pad comments out to the nearest tabstop.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -nut\fR, \fB--no-tabs\fR
+Use spaces instead of tabs.
+.br
+See \fB\ INDENTATION\fR.
+.TP
+.B -nv\fR, \fB--no-verbosity\fR
+Disable verbose mode.
+.br
+See \fB\ MISCELLANEOUS\ OPTIONS\fR.
+.TP
+.B -orig\fR, \fB--original\fR
+Use the original Berkeley coding style.
+.br
+See \fB\ COMMON\ STYLES\fR.
+.TP
+.B -npro\fR, \fB--ignore-profile\fR
+Do not read \(oq.indent.pro\(cq files.
+.br
+See \fB\ INVOKING\ INDENT\fR.
+.TP
+.B -pal\fR, \fB--pointer-align-left\fR
+Put asterisks in pointer declarations on the left of spaces, next to
+types: \(oq\(oqchar* p\(cq\(cq.
+.TP
+.B -par\fR, \fB--pointer-align-right\fR
+Put asterisks in pointer declarations on the right of spaces, next to
+variable names: \(oq\(oqchar *p\(cq\(cq. This is the default behavior.
+.TP
+.B -pcs\fR, \fB--space-after-procedure-calls\fR
+Insert a space between the name of the
+procedure being called and the \(oq(\(cq.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -pi\fIn\fB\fR, \fB--paren-indentation\fIn\fB\fR
+Specify the extra indentation per open parentheses \(cq(\(cq when a
+statement is broken.See \fB\ STATEMENTS\fR.
+.TP
+.B -pmt\fR, \fB--preserve-mtime\fR
+Preserve access and modification times on output files.See \fB\ MISCELLANEOUS\ OPTIONS\fR.
+.TP
+.B -ppi\fIn\fB\fR, \fB--preprocessor-indentation\fIn\fB\fR
+Specify the indentation for preprocessor conditional statements.See \fB\ INDENTATION\fR.
+.TP
+.B -prs\fR, \fB--space-after-parentheses\fR
+Put a space after every \(cq(\(cq and before every \(cq)\(cq.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -psl\fR, \fB--procnames-start-lines\fR
+Put the type of a procedure on the line before its name.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -saf\fR, \fB--space-after-for\fR
+Put a space after each \fBfor\fR.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -sai\fR, \fB--space-after-if\fR
+Put a space after each \fBif\fR.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -sar\fR, \fB--spaces-around-initializers\fR
+Put a space after the \(oq{\(cq and before the \(oq}\(cq in initializers.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -saw\fR, \fB--space-after-while\fR
+Put a space after each \fBwhile\fR.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -sbi\fIn\fB\fR, \fB--struct-brace-indentation\fIn\fB\fR
+Indent braces of a struct, union or enum N spaces.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -sc\fR, \fB--start-left-side-of-comments\fR
+Put the \(oq*\(cq character at the left of comments.
+.br
+See \fB\ COMMENTS\fR.
+.TP
+.B -slc\fR, \fB--single-line-conditionals\fR
+Allow for unbraced conditionals (\fBif\fR, \fBelse\fR, etc.) to have
+their inner statement on the same line.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -sob\fR, \fB--swallow-optional-blank-lines\fR
+Swallow optional blank lines.
+.br
+See \fB\ BLANK\ LINES\fR.
+.TP
+.B -ss\fR, \fB--space-special-semicolon\fR
+On one-line \fBfor\fR and \fBwhile\fR statements,
+force a blank before the semicolon.
+.br
+See \fB\ STATEMENTS\fR.
+.TP
+.B -st\fR, \fB--standard-output\fR
+Write to standard output.
+.br
+See \fB\ INVOKING\ INDENT\fR.
+.TP
+.B -T\fR
+Tell \fBindent\fR the name of typenames.
+.br
+See \fB\ DECLARATIONS\fR.
+.TP
+.B -ts\fIn\fB\fR, \fB--tab-size\fIn\fB\fR
+Set tab size to \fIn\fR spaces.
+.br
+See \fB\ INDENTATION\fR.
+.TP
+.B -ut\fR, \fB--use-tabs\fR
+Use tabs. This is the default.
+.br
+See \fB\ INDENTATION\fR.
+.TP
+.B -v\fR, \fB--verbose\fR
+Enable verbose mode.
+.br
+See \fB\ MISCELLANEOUS\ OPTIONS\fR.
+.TP
+.B -version\fR
+Output the version number of \fBindent\fR.
+.br
+See \fB\ MISCELLANEOUS\ OPTIONS\fR.
+
+.SH "INVOKING INDENT"
+
+As of version 1.3, the format of the \fBindent\fR command is:
+
+.in +5
+.nf
+.na
+
+indent [\fIoptions\fR] [\fIinput-files\fR]
+
+indent [\fIoptions\fR] [\fIsingle-input-file\fR] [-o \fIoutput-file\fR]
+
+.in -5
+.ad
+.fi
+
+This format is different from earlier versions and other versions of
+.B indent\fR.
+
+In the first form, one or more input files are specified. \fBindent\fR
+makes a backup copy of each file, and the original file is replaced with
+its indented version. See \fBBACKUP\ FILES\fR, 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 specify an output file after
+the \(oq-o\(cq option.
+
+To cause \fBindent\fR to write to standard output, use the \(oq-st\(cq
+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 \(oq-\(cq is specified, then the standard input
+is read.
+
+As an example, each of the following commands will input the program
+\(oqslithy_toves.c\(cq and write its indented text to
+\(oqslithy_toves.out\(cq:
+
+.in +5
+.nf
+.na
+
+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
+
+.in -5
+.ad
+.fi
+
+Most other options to \fBindent\fR control how programs are formatted.
+As of version 1.2, \fBindent\fR also recognizes a long name for each
+option name. Long options are prefixed by either \(oq--\(cq or
+\(oq+\(cq.
+[ \(oq+\(cq is being superseded by \(oq--\(cq to
+maintain consistency with the POSIX standard.]
+ In most of this document,
+the traditional, short names are used for the sake of brevity.
+See \fBOPTION\ SUMMARY\fR, for a list of options, including both long and
+short names.
+
+Here is another example:
+
+.in +5
+.nf
+.na
+indent -br test/metabolism.c -l85
+.in -5
+.ad
+.fi
+
+This will indent the program \(oqtest/metabolism.c\(cq using the
+\(oq-br\(cq and \(oq-l85\(cq options, write the output back to
+\(oqtest/metabolism.c\(cq, and write the original contents of
+\(oqtest/metabolism.c\(cq to a backup file in the directory \(oqtest\(cq.
+
+Equivalent invocations using long option names for this example would
+be:
+
+.in +5
+.nf
+.na
+
+indent --braces-on-if-line --line-length185 test/metabolism.c
+
+indent +braces-on-if-line +line-length185 test/metabolism.c
+
+.in -5
+.ad
+.fi
+
+If you find that you often use \fBindent\fR with the same options, you
+may put those options into a file named \(oq.indent.pro\(cq.
+.B indent\fR will look for a profile file in three places. First it will check
+the environment variable \fBINDENT_PROFILE\fR. 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 \(oq.indent.pro\(cq in the current directory
+ and use that if found. Finally \fBindent\fR will search
+your home directory for \(oq.indent.pro\(cq and use that file if it is
+found. This behaviour is different from that of other versions of
+.B indent\fR, which load both files if they both exist.
+
+The format of \(oq.indent.pro\(cq 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 \(oq.indent.pro\(cq may be surrounded by C
+or C++ comments, in which case they are ignored.
+
+Command line switches are handled \fIafter\fR processing
+\(oq .indent.pro\(cq. Options specified later override arguments
+specified earlier, with one exception: Explicitly specified options
+always override background options (See \fBCOMMON\ STYLES\fR). You can
+prevent \fBindent\fR from reading an \(oq.indent.pro\(cq file by
+specifying the \(oq-npro\(cq option.
+
+.SH "BACKUP FILES"
+
+As of version 1.3, GNU \fBindent\fR makes GNU-style backup files, the
+same way GNU Emacs does. This means that either \fIsimple\fR or
+.I numbered\fR 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 \(oq~\(cq (tilde). Thus, the backup file for
+\(oqpython.c\(cq would be \(oqpython.c~\(cq.
+
+Instead of the default, you may specify any string as a suffix by
+setting the environment variable \fBSIMPLE_BACKUP_SUFFIX\fR to
+your preferred suffix.
+
+Numbered backup versions of a file \(oqmomeraths.c\(cq look like
+\(oqmomeraths.c.~23~\(cq, where 23 is the version of this particular
+backup. When making a numbered backup of the file \(oqsrc/momeraths.c\(cq,
+the backup file will be named \(oqsrc/momeraths.c.~\fIV\fR~\(cq, where
+.I V\fR is one greater than the highest version currently existing in
+the directory \(oqsrc\(cq. The environment variable \fBVERSION_WIDTH\fR
+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 \(oqmomeraths.c.~04~\(cq.
+
+The type of backup file made is controlled by the value of the
+environment variable \fBVERSION_CONTROL\fR. If it is the string
+\(oqsimple\(cq, then only simple backups will be made. If its value is
+the string \(oqnumbered\(cq, then numbered backups will be made. If its
+value is \(oqnumbered-existing\(cq, then numbered backups will be made if
+there \fIalready exist\fR numbered backups for the file being indented;
+otherwise, a simple backup is made. If \fBVERSION_CONTROL\fR is not
+set, then \fBindent\fR assumes the behaviour of
+\(oqnumbered-existing\(cq.
+
+Other versions of \fBindent\fR use the suffix \(oq.BAK\(cq in naming
+backup files. This behaviour can be emulated by setting
+.B SIMPLE_BACKUP_SUFFIX\fR to \(oq.BAK\(cq.
+
+Note also that other versions of \fBindent\fR make backups in the
+current directory, rather than in the directory of the source file as
+GNU \fBindent\fR now does.
+
+.SH "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 \fIbackground\fR option, which specifies a set
+of values for all other options. However, explicitly specified options
+always override options implied by a background option.
+
+As of version 1.2, the default style of GNU \fBindent\fR is the GNU
+style. Thus, it is no longer necessary to specify the option
+\(oq-gnu\(cq to obtain this format, although doing so will not cause an
+error. Option settings which correspond to the GNU style are:
+
+.in +5
+.nf
+.na
+-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
+.in -5
+.ad
+.fi
+
+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 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 \(oq-kr\(cq
+option. The Kernighan & Ritchie style corresponds to the following set
+of options:
+
+.in +5
+.nf
+.na
+-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 -par
+.in -5
+.ad
+.fi
+
+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 \fBindent\fR has arbitrarily
+chosen column 33.
+
+The style of the original Berkeley \fBindent\fR may be obtained by
+specifying \(oq-orig\(cq (or by specifying \(oq--original\(cq, using the
+long option name). This style is equivalent to the following settings:
+
+.in +5
+.nf
+.na
+-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
+.in -5
+.ad
+.fi
+
+The Linux style is used in the linux kernel code and drivers. Code
+generally has to follow the Linux coding style to be accepted.
+This style is equivalent to the following settings:
+
+.in +5
+.nf
+.na
+-nbad -bap -nbc -bbo -hnl -br -brs -c33 -cd33 -ncdb -ce -ci4
+-cli0 -d0 -di1 -nfc1 -i8 -ip0 -l80 -lp -npcs -nprs -npsl -sai
+-saf -saw -ncs -nsc -sob -nfca -cp33 -ss -ts8 -il1
+.in -5
+.ad
+.fi
+
+.SH "BLANK LINES"
+
+Various programming styles use blank lines in different places.
+.B indent\fR has a number of options to insert or delete blank lines in
+specific places.
+
+The \(oq-bad\(cq option causes \fBindent\fR to force a blank line after
+every block of declarations. The \(oq-nbad\(cq option causes
+.B indent\fR not to force such blank lines.
+
+The \(oq-bap\(cq option forces a blank line after every procedure body.
+The \(oq-nbap\(cq option forces no such blank line.
+
+The \(oq-bbb\(cq option forces a blank line before every boxed comment
+(See \fBCOMMENTS\fR.)
+The \(oq-nbbb\(cq option does not force such blank lines.
+
+The \(oq-sob\(cq option causes \fBindent\fR to swallow optional blank
+lines (that is, any optional blank lines present in the input will be
+removed from the output). If the \(oq-nsob\(cq is specified, any blank
+lines present in the input file will be copied to the output file.
+
+
+.SH "--blank-lines-after-declarations"
+
+The \(oq-bad\(cq option forces a blank line after every block of
+declarations. The \(oq-nbad\(cq option does not add any such blank
+lines.
+
+For example, given the input
+.in +5
+.nf
+.na
+char *foo;
+char *bar;
+/* This separates blocks of declarations. */
+int baz;
+.in -5
+.ad
+.fi
+
+.B indent -bad\fR produces
+
+.in +5
+.nf
+.na
+char *foo;
+char *bar;
+
+/* This separates blocks of declarations. */
+int baz;
+.in -5
+.ad
+.fi
+
+and \fBindent -nbad\fR produces
+
+.in +5
+.nf
+.na
+char *foo;
+char *bar;
+/* This separates blocks of declarations. */
+int baz;
+.in -5
+.ad
+.fi
+
+.SH "--blank-lines-after-procedures"
+
+The \(oq-bap\(cq option forces a blank line after every procedure body.
+
+For example, given the input
+
+.in +5
+.nf
+.na
+int
+foo ()
+{
+ puts("Hi");
+}
+/* The procedure bar is even less interesting. */
+char *
+bar ()
+{
+ puts("Hello");
+}
+.in -5
+.ad
+.fi
+
+.B indent -bap\fR produces
+
+.in +5
+.nf
+.na
+int
+foo ()
+{
+ puts ("Hi");
+}
+
+/* The procedure bar is even less interesting. */
+char *
+bar ()
+{
+ puts ("Hello");
+}
+.in -5
+.ad
+.fi
+
+and \fBindent -nbap\fR produces
+
+.in +5
+.nf
+.na
+int
+foo ()
+{
+ puts ("Hi");
+}
+/* The procedure bar is even less interesting. */
+char *
+bar ()
+{
+ puts ("Hello");
+}
+.in -5
+.ad
+.fi
+
+No blank line will be added after the procedure \fBfoo\fR.
+
+.SH "COMMENTS"
+
+.B indent\fR formats both C and C++ comments. C comments are begun with
+\(oq/*\(cq, terminated with \(oq*/\(cq and may contain newline characters.
+C++ comments begin with the delimiter \(oq//\(cq and end at the newline.
+
+.B indent\fR handles comments differently depending upon their context.
+.B indent\fR attempts to distinguish between comments which follow
+statements, comments which follow declarations, comments following
+preprocessor directives, and comments which are not preceded by code of
+any sort, i.e., they begin the text of the line (although not
+necessarily in column 1).
+
+.B indent\fR further distinguishes between comments found outside of
+procedures and aggregates, and those found within them. In particular,
+comments beginning a line found within a procedure will be indented to
+the column at which code is currently indented. The exception to this
+is a comment beginning in the leftmost column; such a comment is output
+at that column.
+
+.B indent\fR attempts to leave \fIboxed comments\fR unmodified. The
+general idea of such a comment is that it is enclosed in a rectangle or
+\(oq\(oqbox\(cq\(cq of stars or dashes to visually set it apart. More precisely,
+boxed comments are defined as those in which the initial \(oq/*\(cq is
+followed immediately by the character \(oq*\(cq, \(oq=\(cq, \(oq_\(cq, or
+\(oq-\(cq, or those in which the beginning comment delimiter (\(oq/*\(cq)
+is on a line by itself, and the following line begins with a \(oq*\(cq in
+the same column as the star of the opening delimiter.
+
+Examples of boxed comments are:
+
+.in +5
+.nf
+.na
+/**********************
+ * Comment in a box!! *
+ **********************/
+
+ /*
+ * A different kind of scent,
+ * for a different kind of comment.
+ */
+.in -5
+.ad
+.fi
+
+.B indent\fR attempts to leave boxed comments exactly as they are found
+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 \(oq-bbb\(cq 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 \(oq-fca\(cq option. To format those beginning in column one,
+specify \(oq-fc1\(cq. Such formatting is disabled by default.
+
+The right margin for formatting defaults to 78, but may be changed with
+the \(oq-lc\(cq 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 formatted.
+
+If the \(oq-fnc\(cq option is specified, all comments with \(oq/*\(cq
+embedded will have that character sequence replaced by a space followed
+by the character \(oq*\(cq thus eliminating nesting.
+
+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 column). This alignment may be affected by the \(oq-d\(cq
+option, which specifies an amount by which such comments are moved to
+the \fIleft\fR, or unindented. For example, \(oq-d2\(cq places comments
+two spaces to the left of code. By default, comments are aligned with
+code, unless they begin in the first column, in which case they are left
+there by default --- to get them aligned with the code, specify \(oq-fc1\(cq.
+
+Comments to the right of code will appear by default in column 33.
+This may be changed with one of three options. \(oq-c\(cq will specify
+the column for comments following code, \(oq-cd\(cq specifies the
+column for comments following declarations, and \(oq-cp\(cq specifies
+the column for comments following preprocessor directives \fB#else\fR
+and \fB#endif\fR. \(oq-dj\(cq together with \(oq-cd0\(cq can be used
+to suppress alignment of comments to the right of declarations, causing the
+comment to follow one tabstop from the end of the declaration. Normally \(oq-cd0\(cq
+causes \(oq-c\(cq to become effective.
+
+If the code to the left of the comment exceeds the beginning column,
+the comment column will be extended to the next tabstop column past
+the end of the code, unless the \(oq-ntac\(cq option is specified.
+In the case of preprocessor directives,comments are extended to to one
+space past the end of the directive. This extension lasts only for
+the output of that particular comment.
+
+The \(oq-cdb\(cq option places the comment delimiters on blank lines.
+Thus, a single line comment like \fB/* Loving hug */\fR can be
+transformed into:
+
+.in +5
+.nf
+.na
+/*
+ Loving hug
+ */
+.in -5
+.ad
+.fi
+
+Stars can be placed at the beginning of multi-line comments with the
+\(oq-sc\(cq option. Thus, the single-line comment above can be
+transformed (with \(oq-cdb -sc\(cq) into:
+
+.in +5
+.nf
+.na
+/*
+ * Loving hug
+ */
+.in -5
+.ad
+.fi
+
+.SH "STATEMENTS"
+
+The \(oq-br\(cq or \(oq-bl\(cq option specifies how to format braces.
+
+The \(oq-br\(cq option formats statement braces like this:
+
+.in +5
+.nf
+.na
+if (x > 0) {
+ x--;
+}
+.in -5
+.ad
+.fi
+
+The \(oq-bl\(cq option formats them like this:
+
+.in +5
+.nf
+.na
+if (x > 0)
+ {
+ x--;
+ }
+.in -5
+.ad
+.fi
+
+If you use the \(oq-bl\(cq option, you may also want to specify the
+\(oq-bli\(cq option. This option specifies the number of spaces by
+which braces are indented. \(oq-bli2\(cq, the default, gives the
+result shown above. \(oq-bli0\(cq results in the following:
+
+.in +5
+.nf
+.na
+if (x > 0)
+{
+ x--;
+}
+.in -5
+.ad
+.fi
+
+If you are using the \(oq-br\(cq option, you probably want to also use
+the \(oq-ce\(cq option. This causes the \fBelse\fR in an if-then-else
+construct to cuddle up to the immediately preceding \(oq}\(cq. For
+example, with \(oq-br -ce\(cq you get the following:
+
+.in +5
+.nf
+.na
+if (x > 0) {
+ x--;
+} else {
+ fprintf (stderr, "...something wrong?\\n");
+}
+.in -5
+.ad
+.fi
+
+With \(oq-br -nce\(cq that code would appear as
+
+.in +5
+.nf
+.na
+if (x > 0) {
+ x--;
+}
+else {
+ fprintf (stderr, "...something wrong?\\n");
+}
+.in -5
+.ad
+.fi
+
+An exception to the behavior occurs when there is a comment between the
+right brace and the subsequent else statement. While the \(oq-br\(cq
+option will cause a left brace to jump over the comment, the else does
+not jump over the comment to cuddle because it has a strong likelihood
+of changing the meaning of the comment.
+
+The \(oq-cdw\(cq option causes the \fBwhile\fR in a do-while
+loop to cuddle up to the immediately preceding \(oq}\(cq. For
+example, with \(oq-cdw\(cq you get the following:
+
+.in +5
+.nf
+.na
+do {
+ x--;
+} while (x);
+.in -5
+.ad
+.fi
+
+With \(oq-ncdw\(cq that code would appear as
+
+.in +5
+.nf
+.na
+do {
+ x--;
+}
+while (x);
+.in -5
+.ad
+.fi
+
+The \(oq-slc\(cq option allows for an unbraced conditional and its inner
+statement to appear on the same line. For example:
+
+.in +5
+.nf
+.na
+if (x) x--;
+else x++;
+.in -5
+.ad
+.fi
+
+Without \(oq-slc\(cq that code would appear as
+
+.in +5
+.nf
+.na
+if (x)
+ x--;
+else
+ x++;
+.in -5
+.ad
+.fi
+
+The \(oq-cli\(cq option specifies the number of spaces that case labels
+should be indented to the right of the containing \fBswitch\fR
+statement.
+
+The default gives code like:
+
+.in +5
+.nf
+.na
+switch (i)
+ {
+ case 0:
+ break;
+ case 1:
+ {
+ ++i;
+ }
+ default:
+ break;
+ }
+.in -5
+.ad
+.fi
+
+Using the \(oq-cli2\(cq that would become:
+
+.in +5
+.nf
+.na
+switch (i)
+ {
+ case 0:
+ break;
+ case 1:
+ {
+ ++i;
+ }
+ default:
+ break;
+ }
+.in -5
+.ad
+.fi
+
+The indentation of the braces below a case statement can be
+controlled with the \(oq-cbi\fIn\fR\(cq option. For example,
+using \(oq-cli2 -cbi0\(cq results in:
+
+.in +5
+.nf
+.na
+switch (i)
+ {
+ case 0:
+ break;
+ case 1:
+ {
+ ++i;
+ }
+ default:
+ break;
+ }
+.in -5
+.ad
+.fi
+
+If a semicolon is on the same line as a \fBfor\fR or \fBwhile\fR
+statement, the \(oq-ss\(cq option will cause a space to be placed before
+the semicolon. This emphasizes the semicolon, making it clear that the
+body of the \fBfor\fR or \fBwhile\fR statement is an empty statement.
+\(oq-nss\(cq disables this feature.
+
+The \(oq-pcs\(cq option causes a space to be placed between the name of
+the procedure being called and the \(oq(\(cq (for example, \fBputs\ ("Hi");\fR. The \(oq-npcs\(cq option would give \fBputs("Hi");\fR).
+
+
+If the \(oq-cs\(cq option is specified, \fBindent\fR puts a space between
+a cast operator and the object to be cast. The \(oq-ncs\(cq ensures that there
+is no space between the cast operator and the object. Remember that \fBindent\fR
+only knows about the standard C data types and so cannot recognise user-defined types
+in casts. Thus \fB(mytype)thing\fR is not treated as a cast.
+
+The \(oq-bs\(cq option ensures that there is a space between the
+keyword \fBsizeof\fR and its argument. In some versions, this is
+known as the \(oqBill_Shannon\(cq option.
+
+The \(oq-saf\(cq option forces a space between a \fBfor\fR
+and the following parenthesis. This is the default.
+
+The \(oq-sai\(cq option forces a space between a \fBif\fR
+and the following parenthesis. This is the default.
+
+The \(oq-saw\(cq option forces a space between a \fBwhile\fR
+and the following parenthesis. This is the default.
+
+The \(oq-prs\(cq option causes all parentheses to be separated with
+a space from whatever is between them. For example, using \(oq-prs\(cq
+results in code like:
+
+.in +5
+.nf
+.na
+ while ( ( e_code - s_code ) < ( dec_ind - 1 ) )
+ {
+ set_buf_break ( bb_dec_ind );
+ *e_code++ = \(cq \(cq;
+ }
+.in -5
+.ad
+.fi
+
+.SH "DECLARATIONS"
+
+By default \fBindent\fR will line up identifiers, in the column
+specified by the \(oq-di\(cq option. For example, \(oq-di16\(cq makes
+things look like:
+
+.in +5
+.nf
+.na
+int foo;
+char *bar;
+.in -5
+.ad
+.fi
+
+Using a small value (such as one or two) for the \(oq-di\(cq option can
+be used to cause the identifiers to be placed in the first available
+position; for example:
+
+.in +5
+.nf
+.na
+int foo;
+char *bar;
+.in -5
+.ad
+.fi
+
+The value given to the \(oq-di\(cq option will still affect variables
+which are put on separate lines from their types, for example
+\(oq-di2\(cq will lead to:
+
+.in +5
+.nf
+.na
+int
+ foo;
+.in -5
+.ad
+.fi
+
+If the \(oq-bc\(cq option is specified, a newline is forced after each
+comma in a declaration. For example,
+
+.in +5
+.nf
+.na
+int a,
+ b,
+ c;
+.in -5
+.ad
+.fi
+
+With the \(oq-nbc\(cq option this would look like
+
+.in +5
+.nf
+.na
+int a, b, c;
+.in -5
+.ad
+.fi
+
+The \(oq-bfda\(cq 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 \(oq-bfde\(cq causes a newline to be forced before the closing
+bracket of the function declaration. For both options the \(cqn\(cq setting is the default:
+-nbfda and -nbfde.
+
+
+For
+example,
+
+.in +5
+.nf
+.na
+void foo (int arg1, char arg2, int *arg3, long arg4, char arg5);
+.in -5
+.ad
+.fi
+With the \(oq-bfda\(cq option this would look like
+
+.in +5
+.nf
+.na
+void foo (
+ int arg1,
+ char arg2,
+ int *arg3,
+ long arg4,
+ char arg5);
+.in -5
+.ad
+.fi
+
+With, in addition, the \(oq-bfde\(cq option this would look like
+
+.in +5
+.nf
+.na
+void foo (
+ int arg1,
+ char arg2,
+ int *arg3,
+ long arg4,
+ char arg5
+ );
+.in -5
+.ad
+.fi
+
+The \(oq-psl\(cq option causes the type of a procedure being defined to
+be placed on the line before the name of the procedure. This style is
+required for the \fBetags\fR program to work correctly, as well as some
+of the \fBc-mode\fR functions of Emacs.
+
+You must use the \(oq-T\(cq
+option to tell \fBindent\fR the name of all the typenames in your
+program that are defined by \fBtypedef\fR. \(oq-T\(cq can be specified
+more than once, and all names specified are used. For example, if your
+program contains
+
+.in +5
+.nf
+.na
+typedef unsigned long CODE_ADDR;
+typedef enum {red, blue, green} COLOR;
+.in -5
+.ad
+.fi
+
+you would use the options \(oq-T CODE_ADDR -T COLOR\(cq.
+
+
+The \(oq-brs\(cq or \(oq-bls\(cq option specifies how to format braces
+in struct declarations. The \(oq-brs\(cq option formats braces like
+this:
+
+.in +5
+.nf
+.na
+struct foo {
+ int x;
+};
+.in -5
+.ad
+.fi
+
+The \(oq-bls\(cq option formats them like this:
+
+.in +5
+.nf
+.na
+struct foo
+{
+ int x;
+};
+.in -5
+.ad
+.fi
+
+
+Similarly to the structure brace \(oq-brs\(cq and \(oq-bls\(cq options,
+ the function brace options \(oq-brf\(cq or \(oq-blf\(cq specify how to format the braces
+in function definitions. The \(oq-brf\(cq option formats braces like
+this:
+
+.in +5
+.nf
+.na
+int one(void) {
+ return 1;
+};
+.in -5
+.ad
+.fi
+
+The \(oq-blf\(cq option formats them like this:
+
+.in +5
+.nf
+.na
+int one(void)
+{
+ return 1;
+};
+.in -5
+.ad
+.fi
+
+
+The \(oq-sar\(cq option affects how \fBindent\fR will render initializer
+lists. Without \(oq-sar\(cq they are formatted like this:
+
+.in +5
+.nf
+.na
+int a[] = {1, 2, 3, 4};
+
+struct s {
+ const char *name;
+ int x;
+} a[] = {
+ {"name", 0},
+ {"a", 1}
+};
+.in -5
+.ad
+.fi
+
+With \(oq-sar\(cq they are formatted like this, with spaces inside the
+braces:
+
+.in +5
+.nf
+.na
+int a[] = { 1, 2, 3, 4 };
+
+struct s {
+ const char *name;
+ int x;
+} a[] = {
+ { "name", 0 },
+ { "a", 1 }
+};
+.in -5
+.ad
+.fi
+
+.SH "INDENTATION"
+
+The most basic, and most controversial issues with regard to code
+formatting is precisely how indentation should be acoomplished.
+Fortunately, \fBindent\fR supports several different styles of
+identation. The default is to use tabs for indentation, which is
+specified by the \(oq-ut\(cq option. Assuming the default tab size of
+8, the code would look like this:
+
+.in +5
+.nf
+.na
+int a(int b)
+{
+ return b;
+|------|
+ 1 tab
+}
+.in -5
+.ad
+.fi
+
+For those that prefer spaces to tabs, \(oqindent\(cq provides the
+\(oq-nut\(cq option. The same code would look like this:
+
+.in +5
+.nf
+.na
+int a(int b)
+{
+ return b;
+|------|
+8 spaces
+}
+.in -5
+.ad
+.fi
+
+Another 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 \fBif\fR or \fBfor\fR is encountered, the indentation level is
+increased by the value specified by the \(oq-i\(cq option. For example,
+use \(oq-i8\(cq to specify an eight character 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 \(oq-ci\(cq
+option. \(oq-ci\(cq defaults to 0. However, if the \(oq-lp\(cq 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 \(oq[\(cq and applies to \(oq{\(cq when it occurs in initialization
+lists. For example, a piece of continued code might look like this with
+\(oq-nlp -ci3\(cq in effect:
+
+.in +5
+.nf
+.na
+ p1 = first_procedure (second_procedure (p2, p3),
+ third_procedure (p4, p5));
+.in -5
+.ad
+.fi
+
+With \(oq-lp\(cq in effect the code looks somewhat clearer:
+
+.in +5
+.nf
+.na
+ p1 = first_procedure (second_procedure (p2, p3),
+ third_procedure (p4, p5));
+.in -5
+.ad
+.fi
+
+When a statement is broken in between two or more paren pairs (...),
+each extra pair causes the indentation level extra indentation:
+
+.in +5
+.nf
+.na
+if ((((i < 2 &&
+ k > 0) || p == 0) &&
+ q == 1) ||
+ n = 0)
+.in -5
+.ad
+.fi
+
+The option \(oq-ip\fIN\fR\(cq can be used to set the extra offset per paren.
+For instance, \(oq-ip0\(cq would format the above as:
+
+.in +5
+.nf
+.na
+if ((((i < 2 &&
+ k > 0) || p == 0) &&
+ q == 1) ||
+ n = 0)
+.in -5
+.ad
+.fi
+
+.B indent\fR assumes that tabs are placed at regular intervals of both
+input and output character streams. These intervals are by default 8
+columns wide, but (as of version 1.2) may be changed by the \(oq-ts\(cq
+option. Tabs are treated as the equivalent number of spaces.
+
+By default, \fBindent\fR will use tabs to indent as far as possible,
+and then pad with spaces until the desired position is reached. However,
+with the \(oq-as\(cq option, spaces will be used for alignment beyond
+the current indentation level. By default, assuming \(oq-lp\(cq is
+enabled, the code would be indented like so (\(oqt\(cq represents tabs,
+\(oqs\(cq represents spaces):
+
+.in +5
+.nf
+.na
+unsigned long really_long_proc_name(unsigned long x, unsigned long y,
+ int a)
+|------||-------||------||-------|__
+ t t t t ss
+{
+ p1 = first_procedure (second_procedure (p2, p3),
+ third_procedure (p4, p5));
+|------||------||------|_____
+ t t t sssss
+}
+.in -5
+.ad
+.fi
+
+This is fine, if you assume that whoever is reading the code will honor
+your assumption of 8-space tabs. If the reader was using 4-space tabs,
+it would look like this:
+
+.in +5
+.nf
+.na
+unsigned long really_long_proc_name(unsigned long x, unsigned long y,
+ int a)
+|---||---||---||---|__
+ t t t t ss
+{
+ p1 = first_procedure (second_procedure (p2, p3),
+ third_procedure (p4, p5));
+|---||---||---|______
+ t t t ssssss
+}
+.in -5
+.ad
+.fi
+
+The \(oq-as\(cq option fixes this so that the code will appear consistent
+regardless of what tab size the user users to read the code. This looks
+like:
+
+.in +5
+.nf
+.na
+unsigned long really_long_proc_name(unsigned long x, unsigned long y,
+ int a)
+____________________________________
+ssssssssssssssssssssssssssssssssssss
+{
+ p1 = first_procedure (second_procedure (p2, p3),
+ third_procedure (p4, p5));
+|------|______________________
+ t ssssssssssssssssssssss
+}
+.in -5
+.ad
+.fi
+
+The indentation of type declarations in old-style function definitions
+is controlled by the \(oq-ip\(cq parameter. This is a numeric parameter
+specifying how many spaces to indent type declarations. For example,
+the default \(oq-ip5\(cq makes definitions look like this:
+
+.in +5
+.nf
+.na
+char *
+create_world (x, y, scale)
+ int x;
+ int y;
+ float scale;
+{
+ . . .
+}
+.in -5
+.ad
+.fi
+
+For compatibility with other versions of indent, the option \(oq-nip\(cq
+is provided, which is equivalent to \(oq-ip0\(cq.
+
+ANSI C allows white space to be placed on preprocessor command lines
+between the character \(oq#\(cq and the command name. By default,
+.B indent\fR removes this space, but specifying the \(oq-lps\(cq option
+directs \fBindent\fR to leave this space unmodified. The option \(oq-ppi\(cq
+overrides \(oq-nlps\(cq and \(oq-lps\(cq.
+
+This option can be used to request that preprocessor conditional statements can
+be indented by to given number of spaces, for example with the option \(oq-ppi 3\(cq
+
+.in +5
+.nf
+.na
+#if X
+#if Y
+#define Z 1
+#else
+#define Z 0
+#endif
+#endif
+.in -5
+.ad
+.fi
+becomes
+.in +5
+.nf
+.na
+#if X
+# if Y
+# define Z 1
+# else
+# define Z 0
+# endif
+#endif
+.in -5
+.ad
+.fi
+
+This option sets the offset at which a label (except case labels)
+will be positioned. If it is set to zero or a positive number, this indicates how
+far from the left margin to indent a label. If it is set to a negative number,
+this indicates how far back from the current indent level to place the label.
+The default setting is -2 which matches the behaviour of earlier versions of indent.
+Note that this parameter does not affect the placing of case labels; see the
+\(oq-cli\(cq parameter for that. For example with the option \(oq-il 1\(cq
+
+.in +5
+.nf
+.na
+group
+function()
+{
+ if (do_stuff1() == ERROR)
+ goto cleanup1;
+
+ if (do_stuff2() == ERROR)
+ goto cleanup2;
+
+ return SUCCESS;
+
+ cleanup2:
+ do_cleanup2();
+
+ cleanup1:
+ do_cleanup1();
+
+ return ERROR;
+}
+.in -5
+.ad
+.fi
+becomes
+.in +5
+.nf
+.na
+group
+function()
+{
+ if (do_stuff1() == ERROR)
+ goto cleanup1;
+
+ if (do_stuff2() == ERROR)
+ goto cleanup2;
+
+ return SUCCESS;
+
+ cleanup2:
+ do_cleanup2();
+
+ cleanup1:
+ do_cleanup1();
+
+ return ERROR;
+}
+.in -5
+.ad
+.fi
+
+.SH "BREAKING LONG LINES"
+
+With the option \(oq-l\fIn\fR\(cq, or \(oq--line-length\fIn\fR\(cq, 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 than the specified line length, GNU \fBindent\fR
+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 three options that allow one to interfere with the
+algorithm that determines where to break a line.
+
+The \(oq-bbo\(cq option causes GNU \fBindent\fR to prefer to break
+long lines before the boolean operators \fB&&\fR and \fB||\fR. The
+\(oq-nbbo\(cq option causes GNU \fBindent\fR not have that
+preference. For example, the default option \(oq-bbo\(cq (together
+with \(oq--line-length60\(cq and \(oq--ignore-newlines\(cq) makes code
+look like this:
+
+.in +5
+.nf
+.na
+ if (mask
+ && ((mask[0] == \(cq\\0\(cq)
+ || (mask[1] == \(cq\\0\(cq
+ && ((mask[0] == \(cq0\(cq) || (mask[0] == \(cq*\(cq)))))
+.in -5
+.ad
+.fi
+
+Using the option \(oq-nbbo\(cq will make it look like this:
+
+.in +5
+.nf
+.na
+ if (mask &&
+ ((mask[0] == \(cq\\0\(cq) ||
+ (mask[1] == \(cq\\0\(cq &&
+ ((mask[0] == \(cq0\(cq) || (mask[0] == \(cq*\(cq)))))
+.in -5
+.ad
+.fi
+
+The default \(oq-hnl\(cq, 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:
+
+.in +5
+.nf
+.na
+ if (mask
+ && ((mask[0] == \(cq\\0\(cq)
+ || (mask[1] == \(cq\\0\(cq && ((mask[0] == \(cq0\(cq) || (mask[0] == \(cq*\(cq)))))
+.in -5
+.ad
+.fi
+
+then using the option \(oq-hnl\(cq, or \(oq--honour-newlines\(cq,
+together with the previously mentioned \(oq-nbbo\(cq and
+\(oq--line-length60\(cq, 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:
+
+.in +5
+.nf
+.na
+ if (mask
+ && ((mask[0] == \(cq\\0\(cq)
+ || (mask[1] == \(cq\\0\(cq &&
+ ((mask[0] == \(cq0\(cq) || (mask[0] == \(cq*\(cq)))))
+.in -5
+.ad
+.fi
+
+The idea behind this option is that lines which are too long, but are already
+broken up, will not be touched by GNU \fBindent\fR. Really messy code
+should be run through \fBindent\fR at least once using the
+\(oq--ignore-newlines\(cq option though.
+
+The \(oq-gts\(cq option affects how the gettext standard macros \fB_()\fR and \fBN_()\fR
+are treated. The default behavior (or the use of \(oq-ngts\(cq) causes indent to
+treat them as it does other functions, so that a long string is broken like the following
+example.
+
+.in +5
+.nf
+.na
+ if (mask)
+ {
+ warning (_
+ ("This is a long string that stays together."));
+ }
+.in -5
+.ad
+.fi
+
+With the \(oq-gts\(cq option, the underscore is treated as a part of the string, keeping
+it tied to the string, and respecting the fact that gettext is unobtrusively providing
+a localized string. This only works if \fB_("\fR is together as a unit at the beginning
+of the string and \fB")\fR is together as a unit at the end.
+
+.in +5
+.nf
+.na
+ if (mask)
+ {
+ warning
+ (_("This is a long string that stays together."));
+ }
+.in -5
+.ad
+.fi
+
+.SH "DISABLING FORMATTING"
+
+Formatting of C code may be disabled for portions of a program by
+embedding special \fIcontrol comments\fR in the program. To turn off
+formatting for a section of a program, place the disabling control
+comment \fB/* *INDENT-OFF* */\fR 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 enabling control
+comment is \fB/* *INDENT-ON* */\fR, 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, \fBindent\fR does not attempt to verify the closing
+delimiter (\fB*/\fR) for these C comments, and any whitespace on the
+line is totally transparent.
+
+These control comments also function in their C++ formats, namely
+.B // *INDENT-OFF*\fR and \fB// *INDENT-ON*\fR.
+
+It should be noted that the internal state of \fBindent\fR remains
+unchanged over the course of the unformatted section. Thus, for
+example, turning off formatting in the middle of a function and
+continuing it after the end of the function may lead to bizarre
+results. It is therefore wise to be somewhat modular in selecting code
+to be left unformatted.
+
+As a historical note, some earlier versions of \fBindent\fR produced
+error messages beginning with \fB*INDENT**\fR. These versions of
+.B indent\fR were written to ignore any input text lines which began
+with such error messages. I have removed this incestuous feature from
+GNU \fBindent\fR.
+
+.SH "MISCELLANEOUS OPTIONS"
+
+To find out what version of \fBindent\fR you have, use the command
+.B indent -version\fR. This will report the version number of
+.B indent\fR, without doing any of the normal processing.
+
+The \(oq-v\(cq option can be used to turn on verbose mode. When in
+verbose mode, \fBindent\fR reports when it splits one line of input
+into two more more lines of output, and gives some size statistics at
+completion.
+
+The \(oq-pmt\(cq option causes \fBindent\fR 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\(cqt cause \fBmake\fR to rebuild all targets.
+This option is only available on Operating Systems that have the
+POSIX \fButime(2)\fR function.
+
+.SH "BUGS"
+
+Please report any bugs to bug-indent@gnu.org.
+
+When \fBindent\fR is run twice on a file, with the same profile,
+it should \fInever\fR change that file the second time. With the
+current design of \fBindent\fR, this can not be guaranteed,
+and it has not been extensively tested.
+
+.B indent\fR does not understand C. In some cases this leads to
+the inability to join lines. The result is that running a file
+through \fBindent\fR is \fIirreversible\fR, even if the used input
+file was the result of running \fBindent\fR with a given profile
+(\(oq.indent.pro\(cq).
+
+While an attempt was made to get \fBindent\fR working for C++, it
+will not do a good job on any C++ source except the very simplest.
+
+.B indent\fR does not look at the given \(oq--line-length\(cq option
+when writing comments to the output file. This results often in comments
+being put far to the right. In order to prohibit \fBindent\fR 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.
+
+.B indent\fR does not count lines and comments (see the \(oq-v\(cq
+option) when \fBindent\fR is turned off with
+.B /* *INDENT-OFF* */\fR.
+
+Comments of the form \fB/*UPPERCASE*/\fR are not treated as comment 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.
+
+.SH "COPYRIGHT"
+
+The following copyright notice applies to the \fBindent\fR program.
+The copyright and copying permissions for this manual appear near the
+beginning of \(oqindent.texinfo\(cq and \(oqindent.info\(cq, and near the
+end of \(oqindent.1\(cq.
+
+.nf
+.na
+Copyright (c) 2015 Tim Hentenaar.
+Copyright (c) 2001 David Ingamells.
+Copyright (c) 1999 Carlo Wood.
+Copyright (c) 1995, 1996 Joseph Arceneaux.
+Copyright (c) 1989, 1992, 1993, 1994, 1995, 1996, 2014 Free Software Foundation
+Copyright (c) 1985 Sun Microsystems, Inc.
+Copyright (c) 1980 The Regents of the University of California.
+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 \(oq\(oqAS IS\(cq\(cq AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.
+.ad
+.fi
+
+.SH "Options\(cq Cross Key"
+
+Here is a list of options alphabetized by long option, to help you find
+the corresponding short option.
+
+
+.in +5
+.nf
+.na
+--align-with-spaces -as
+--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
+--braces-after-func-def-line -blf
+--brace-indent -bli
+--braces-after-struct-decl-line -bls
+--braces-on-if-line -br
+--braces-on-func-def-line -brf
+--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 -cli\fIn\fR
+--case-brace-indentation -cbi\fIn\fR
+--comment-delimiters-on-blank-lines -cdb
+--comment-indentation -c\fIn\fR
+--continuation-indentation -ci\fIn\fR
+--continue-at-parentheses -lp
+--cuddle-do-while -cdw
+--cuddle-else -ce
+--declaration-comment-column -cd\fIn\fR
+--declaration-indentation -di\fIn\fR
+--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
+--dont-format-first-column-comments -nfc1
+--dont-line-up-parentheses -nlp
+--dont-left-justify-declarations -ndj
+--dont-space-special-semicolon -nss
+--dont-star-comments -nsc
+--dont-tab-align-comments -ntac
+--else-endif-column -cp\fIn\fR
+--format-all-comments -fca
+--format-first-column-comments -fc1
+--gnu-style -gnu
+--honour-newlines -hnl
+--ignore-newlines -nhnl
+--ignore-profile -npro
+--indent-label -il\fIn\fR
+--indent-level -i\fIn\fR
+--k-and-r-style -kr
+--leave-optional-blank-lines -nsob
+--leave-preprocessor-space -lps
+--left-justify-declarations -dj
+--line-comments-indentation -d\fIn\fR
+--line-length -l\fIn\fR
+--linux-style -linux
+--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 -ip\fIn\fR
+--paren-indentation -pi\fIn\fR
+--preserve-mtime -pmt
+--preprocessor-indentation -ppi\fIn\fR
+--procnames-start-lines -psl
+--remove-preprocessor-space -nlps
+--single-line-conditionals -slc
+--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
+--spaces-around-initializers -sar
+--standard-output -st
+--start-left-side-of-comments -sc
+--struct-brace-indentation -sbi\fIn\fR
+--swallow-optional-blank-lines -sob
+--tab-size -ts\fIn\fR
+--use-tabs -ut
+--verbose -v
+.in -5
+.ad
+.fi
+
+.SH "RETURN VALUE"
+.IP \(bu 2
+0 means no errors or warnings were found during a successful invocation of
+the program.
+.br
+.IP \(bu 2
+2 is returned if errors occur during formatting which do not prevent completion
+of the formatting, but which appear to be manifested by incorrect code (i.e. code
+which wouldn't compile).
+.br
+.IP \(bu 2
+3 is returned if formatting of a file is halted because of an error with the file
+which prevents completion of formatting. If more than one input file was specified,
+indent continues to the next file.
+.br
+.IP \(bu 2
+4 is returned if a serious internal problem occurs and the entire indent process
+is terminated, even if all specified files have not been processed.
+.br
+.IP \(bu 2
+64 is returned if an invocation problem (like an incorrect option) prevents
+any formatting to occur.
+.SH FILES
+.br
+.nf
+.\" set tabstop to longest possible filename, plus a wee bit
+.ta \w'$HOME/.indent.pro 'u
+\fI$HOME/.indent.pro\fR holds default options for indent.
+.SH "AUTHORS"
+.br
+Tim Hentenaar
+.br
+Carlo Wood
+.br
+Joseph Arceneaux
+.br
+Jim Kingdon
+.br
+David Ingamells
+.SH "HISTORY"
+Derived from the UCB program "indent".
+.SH "COPYING"
+Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 2014, 2015 Free Software Foundation, Inc.
+Copyright (C) 1995, 1996 Joseph Arceneaux.
+Copyright (C) 1999 Carlo Wood.
+Copyright (C) 2001 David Ingamells.
+Copyright (C) 2013 Ɓukasz Stelmach.
+Copyright (C) 2015 Tim Hentenaar.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+