-.Dd July 18, 2011
+.Dd March 6, 2021
.Os cdecl99
.Dt CDECL99 \&1 "Cdecl99 User's Manual"
.Sh NAME
.Nm
.Op Fl q
.Op Fl b Ns | Ns Fl i
-.Op Fl f file Ns | Ns Fl e Ar command Op Fl e Ar command ...
+.Op Fl f Ar file Ns | Ns Fl e Ar command Op Fl e Ar command ...
.Sh DESCRIPTION
.Nm
is the command-line interface to libcdecl, enabling you to make heads and tails
-of complicated C declarations. It supports parsing almost any syntactically
-valid C99 declaration, producing output similar to that of
+of complicated C declarations.
+It supports parsing almost any syntactically valid C99 declaration, producing
+output similar to that of
.Xr cdecl 1 .
Unlike
.Xr cdecl 1 ,
.Nm
fully supports all relevant C99 keywords, has no undue restrictions on
-identifiers, groks features such as complex types, variadic functions and named
-parameters, and can also understand plain type names. On the other hand,
+identifiers, groks features such as complex types, variadic functions and
+named parameters, and can also understand plain type names.
+On the other hand,
.Nm
does not support any older versions of C, nor does it support C++ other than
the common subset of those other languages and C99.
Suppress the welcome message when starting
.Nm .
.It Fl b , -batch
-Run in batch (non-interactive) mode. Execute the commands provided on standard
-input as usual, but do not print any prompts. Exit with status 0 if and only
-if all commands complete successfully.
+Run in batch (non-interactive) mode.
+Execute the commands provided on standard input as usual, but do not print any
+prompts.
+Exit with status 0 if and only if all commands complete successfully.
.Pp
This option implies
.Fl -quiet .
.It Fl e , -execute Ar command
Execute
.Ar command
-as if it were entered at the prompt, then exit. This option can be specified
-multiple times; all commands are run in the same order as specified on the
-command line.
+as if it were entered at the prompt, then exit.
+This option can be specified multiple times; all commands are run in the same
+order as specified on the command line.
.Pp
This option implies
.Fl -batch .
All interactive
.Nm
commands consist of a single word followed by one or more spaces, followed by
-the argument. Whitespace preceding the command name is ignored.
+the argument.
+Whitespace preceding the command name is ignored.
.Bl -tag -width indent
.It explain Ar declaration
Translates a given C declaration or type name into something resembling
.El
.Sh ENGLISH DECLARATIONS
.Nm
-uses a language similar to English to explain or construct C declarations. The
-format is based on the one used in
+uses a language similar to English to explain or construct C declarations.
+The format is based on the one used in
.Xr cdecl 1 ,
-and is described by the following context-free grammar. This grammar is for
-illustrative purposes only: it is ambiguous and doesn't capture all the nuances
-of the C language. In this grammar, nonterminals are represented
+and is described by the following context-free grammar.
+This grammar is for illustrative purposes only: it is ambiguous and doesn't
+capture all the nuances of the C language.
+In this grammar, nonterminals are represented
.Va [ thusly ] ,
\[*e] represents the empty string, and both
.Li |
.Ic int f(int (foo))
depends on whether or not a typedef named
.Va foo
-is in scope. If such a typedef is in scope, this declares
+is in scope.
+If such a typedef is in scope, this declares
.Va f
as a function that takes (after adjustment) a pointer to a function that takes
a
.Va foo
-and returns an int, returning an int. If there is no such typedef, then this
-declares
+and returns an int, returning an int.
+If there is no such typedef, then this declares
.Va f
as a function that takes an int and returns an int.
.Pp
Since
.Nm
isn't a C compiler, on several occasions it has to arbitrarily pick one of two
-possibilities. The rule that is generally applied is that
+possibilities.
+The rule that is generally applied is that
.Nm
-will choose the alternative with the simplest explanation. Thus, f is
-interpreted as a function which takes an int and returns an int.
+will choose the alternative with the simplest explanation.
+Thus, f is interpreted as a function which takes an int and returns an int.
.Sh EXAMPLES
.Bl -tag -width Output:
.It Input:
.Sh AUTHORS
Nick Bowler <nbowler@draconx.ca>
.Sh COPYRIGHT
-Copyright \(co 2011 Nick Bowler
+Copyright \(co 2011, 2021 Nick Bowler
.Pp
Permission is granted to copy, distribute and/or modify this manual under the
-terms of the Do What The Fuck You Want To Public License, version 2.
+terms of the GNU General Public License as published by the Free Software
+Foundation, either version 3 of the License, or (at your option) any later
+version.
.Sh SEE ALSO
.Xr libcdecl 3 ,
.Xr cdecl 1 ,