proto converts ANSI C prototype constructs in file to constructs compatible with K&R C, ANSI C, and C++. Only
files with the line #pragma prototyped appearing in one of the first 64 lines are processed; other files are silently
ignored. Output is written to the standard output unless the --replace option is specified, in which case file is
modified in-place.

b[m[e]] are the beginning, middle, and end comment characters. If e is
omitted then it defaults to b. If m is omitted then it defaults to b. Use "/*" for C comments, "#"
for shell, and "(*)" for pascal. If bme is "" (the empty string) then the comment style is determined from the input
file suffix; no notice is prepended if the comment style cannot be determined. The default value is "/*".

-d, --disable

Disable prototype conversion but still emit the identification comment.

-e, --externs=package

All extern references are for package. Some systems require special
attributes for imported and exported dll data symbols. If _BLD_package is not defined then extern data
references will be assigned the dll import attribute when supported by the local compiler.

Specifies inverse proto: classic function definitions are converted to ANSI prototype form and
non-ANSI directives are commented out. In this case files with the line #pragma noprototyped within the first 64 lines are
silently ignored. If --header is also specified then only extern prototypes are emitted for each non-static function.
This option requires that all classic function formal arguments be declared, i.e., omitted declarations for int formals will
not generate the correct prototype. Typical usage would be to first run proto --inverse --header *.c to generate the
external prototypes that should be placed in a .h file shared by *.c and then proto --inverse --replace *.c to
convert the function prototypes in place. Note that prototype code conditioned on __STDC__ will most likely confuse --inverse
.

-l, --license=file

Generate a license notice comment at the top of the output controlled by one or more
name=value pairs in file. If a value contains space characters then it must be enclosed in either
single or double quotes. name may be:

If text is one of the names above then its value is
expanded, otherwise ${name} in text is expanded. The result is printed as a line on the standard output
and proto exits. This should only be used via --options.

-n, --sync

Output C style line syncs to retain the original line structure.

-o, --options=name=value,...

Additional space or , separated name=value--license
options.

-p, --pass

Pass input to output, even if not converted.

-r, --replace

Process the input files in place; original information is replaced by proto output.

-s, --include

Output #include <prototyped.h> rather than expanding the equivalent inline.

-t, --test

Enable test code. Use at your own risk.

-v, --verbose

List each file as it is processed.

-x, --externalize

Convert static function attributes to extern. Used for analysis programs that
only instrument extern functions.

-z, --zap

Disable conversion and remove #pragma prototyped.

-C, --copy=directory

Convert each input file to directory/file, making
intermediate directories as necessary.