From 0c4ac5243b1fee6b00e4f7119c7c1bd74745efb3 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Sun, 11 Sep 2011 19:29:12 -0400 Subject: [PATCH] Use .Pp for paragraph breaks in man pages. Blank lines are apparently invalid. --- doc/man/cdecl99.1 | 12 +++++----- doc/man/libcdecl.3 | 56 +++++++++++++++++++++++----------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/doc/man/cdecl99.1 b/doc/man/cdecl99.1 index 419b908..086e772 100644 --- a/doc/man/cdecl99.1 +++ b/doc/man/cdecl99.1 @@ -39,7 +39,7 @@ Suppress the welcome message when starting 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 i , -interactive @@ -50,7 +50,7 @@ Execute 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 . .It Fl f , -file Ar file @@ -63,7 +63,7 @@ and are specified, any .Fl -file option is ignored. - +.Pp This option implies .Fl -batch . .It Fl V , -version @@ -136,7 +136,7 @@ are defined as in C. The C context-free grammar has many ambiguities regarding declarations. Ordinarily, these ambiguities are resolved by the context in which the declaration appears, such as which typedef names are currently in scope. - +.Pp For example, the meaning of the declaration .Ic int f(int (foo)) depends on whether or not a typedef named @@ -150,7 +150,7 @@ 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 @@ -162,7 +162,7 @@ interpreted as a function which takes an int and returns an int. Nick Bowler .Sh COPYRIGHT Copyright \(co 2011 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. .Sh SEE ALSO diff --git a/doc/man/libcdecl.3 b/doc/man/libcdecl.3 index 0bb7f93..7b6c791 100644 --- a/doc/man/libcdecl.3 +++ b/doc/man/libcdecl.3 @@ -6,14 +6,14 @@ .Nd C library for making sense of C declarations .Sh SYNOPSIS .Fd #include - +.Pp .Fd struct cdecl *cdecl_parse_decl(const char *declstr); .Fd struct cdecl *cdecl_parse_english(const char *english); .Fd void cdecl_free(struct cdecl *decl); - +.Pp .Fd size_t cdecl_explain(char *buf, size_t n, struct cdecl *decl); .Fd size_t cdecl_declare(char *buf, size_t n, struct cdecl *decl); - +.Pp .Fd int cdecl_spec_kind(struct cdecl_declspec *spec); .Sh DESCRIPTION .Nm @@ -23,7 +23,7 @@ interface only; for details such as what C language features are supported or the syntax of English declarations, please see the .Xr cdecl99 1 manual page. - +.Pp .Nm is intended to be portable to any system with a working C implementation that at least makes an effort to support C99. The library maintains no global state @@ -44,7 +44,7 @@ struct cdecl { struct cdecl_declarator *declarators; }; .Ed - +.Pp At the top level, every declaration consists of one or more declaration specifiers followed by one or more full declarators; hence, the .Va specifiers @@ -58,7 +58,7 @@ In the case of the toplevel declaration, the declaration specifiers will be identical for all elements of the list. But when the same kind of list is used to represent function parameters, the specifiers may be different for each element. - +.Pp There are four kinds of declaration specifiers: storage-class, function and type specifiers, as well as type qualifiers. All are represented by the structure: @@ -69,13 +69,13 @@ struct cdecl_declspec { char *ident; }; .Ed - +.Pp When multiple declaration specifiers are present, they are represented as a singly-linked list, one element for each specifier. Specifiers can appear in any order. The function - +.Pp .Fd int cdecl_spec_kind(struct cdecl_declspec *spec); - +.Pp can be used to determine what kind of specifier .Fa spec is. The result is one of the following values: @@ -86,7 +86,7 @@ is. The result is one of the following values: .It Dv CDECL_SPEC_QUAL Ta Type qualifier. .It Dv CDECL_SPEC_FUNC Ta Function specifier. .El - +.Pp The following table describes all the possible types of declaration specifiers. .Bl -column ".Dv CDECL_TYPE_IMAGINARY" .It Em Em Type Ta Em Description @@ -124,7 +124,7 @@ member points to a C string containing the identifier. .It Dv CDECL_QUAL_CONST Ta Fa const No type qualifier. .It Dv CDECL_FUNC_INLINE Ta Fa inline No function specifier. .El - +.Pp Declarators are represented by the structure: .Bd -literal -offset indent struct cdecl_declarator { @@ -138,7 +138,7 @@ struct cdecl_declarator { } u; }; .Ed - +.Pp There are five types of declarators, distinguished by the .Va type struct member. The union @@ -177,7 +177,7 @@ struct cdecl_pointer { struct cdecl_declspec *qualifiers; }; .Ed - +.Pp If the .Va qualifiers member is non-null, then it points to the first element of a singly-linked list @@ -189,7 +189,7 @@ struct cdecl_array { uintmax_t length; }; .Ed - +.Pp If the .Va vla member is non-null, then this declarator is a variable-length array declarator. @@ -208,7 +208,7 @@ struct cdecl_function { _Bool variadic; }; .Ed - +.Pp If .Va parameters is null, then this is a non-prototype function declarator. Otherwise, @@ -221,27 +221,27 @@ otherwise). If is true, then the function is variadic. .Sh PARSING DECLARATIONS To parse a declaration, the function - +.Pp .Fd struct cdecl *cdecl_parse_decl(const char *declstr); - +.Pp can be used. The provided string is parsed as a C declaration. If successful, this function returns a pointer to an abstract syntax tree representing the declaration. If the parse fails for any reason, the function returns NULL. - +.Pp Similarly, English declarations can be parsed by using the function - +.Pp .Fd struct cdecl *cdecl_parse_english(const char *english); - +.Pp When the AST is no longer needed, it must be freed by passing it to the function - +.Pp .Fd void cdecl_free(struct cdecl *decl); .Sh RENDERING DECLARATIONS On the other hand, the abstract syntax tree can be rendered to a string for output. One can use the function - +.Pp .Fd size_t cdecl_explain(char *buf, size_t n, struct cdecl *decl); - +.Pp to format the AST pointed to by .Fa decl into something resembling English. At most one full declarator is rendered @@ -249,7 +249,7 @@ in this way; for declarations with more than one full declarator, this function should be called on each .Dv struct cdecl in the singly-linked list. - +.Pp In a manner similar to that of .Xr snprintf 3 , at most @@ -269,11 +269,11 @@ were long enough, not including the '\\0' terminator. Thus, the entire string was written if a value less than .Fa n is returned. - +.Pp Similarly, the function - +.Pp .Fd size_t cdecl_declare(char *buf, size_t n, struct cdecl *decl); - +.Pp will render the AST pointed to by .Fa decl into C code. @@ -281,7 +281,7 @@ into C code. Nick Bowler .Sh COPYRIGHT Copyright \(co 2011 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. .Sh SEE ALSO -- 2.43.2