=================================================================== RCS file: /cvs/mandoc/Attic/mdoc.3,v retrieving revision 1.36 retrieving revision 1.37 diff -u -p -r1.36 -r1.37 --- mandoc/Attic/mdoc.3 2010/01/07 19:10:09 1.36 +++ mandoc/Attic/mdoc.3 2010/02/17 19:22:01 1.37 @@ -1,6 +1,6 @@ -.\" $Id: mdoc.3,v 1.36 2010/01/07 19:10:09 kristaps Exp $ +.\" $Id: mdoc.3,v 1.37 2010/02/17 19:22:01 kristaps Exp $ .\" -.\" Copyright (c) 2009 Kristaps Dzonsons +.\" Copyright (c) 2009-2010 Kristaps Dzonsons .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -14,7 +14,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: January 7 2010 $ +.Dd $Mdocdate: February 17 2010 $ .Dt MDOC 3 .Os .\" SECTION @@ -92,7 +92,7 @@ Both functions (see and variables (see .Sx Variables ) may use the following types: -.Bl -ohang -offset "XXXX" +.Bl -ohang .\" LIST-ITEM .It Vt struct mdoc An opaque type defined in @@ -113,7 +113,7 @@ for details. .\" SUBSECTION .Ss Functions Function descriptions follow: -.Bl -ohang -offset "XXXX" +.Bl -ohang .\" LIST-ITEM .It Fn mdoc_alloc Allocates a parsing structure. The @@ -168,7 +168,7 @@ return 0, the data will be incomplete. .\" SUBSECTION .Ss Variables The following variables are also defined: -.Bl -ohang -offset "XXXX" +.Bl -ohang .\" LIST-ITEM .It Va mdoc_macronames An array of string-ified token names. @@ -225,7 +225,7 @@ fields) and some type-specific data. The tree itself is arranged according to the following normal form, where capitalised non-terminals represent nodes. .Pp -.Bl -tag -width "ELEMENTXX" -compact -offset "XXXX" +.Bl -tag -width "ELEMENTXX" -compact .\" LIST-ITEM .It ROOT \(<- mnode+ @@ -259,11 +259,8 @@ an empty line will produce a zero-length string. The following example reads lines from stdin and parses them, operating on the finished parse tree with .Fn parsed . -Note that, if the last line of the file isn't newline-terminated, this -will truncate the file's last character (see -.Xr fgetln 3 ) . -Further, this example does not error-check nor free memory upon failure. -.Bd -literal -offset "XXXX" +This example does not error-check nor free memory upon failure. +.Bd -literal -offset indent struct mdoc *mdoc; const struct mdoc_node *node; char *buf; @@ -272,18 +269,21 @@ int line; line = 1; mdoc = mdoc_alloc(NULL, 0, NULL); +buf = NULL; +alloc_len = 0; -while ((buf = fgetln(fp, &len))) { - buf[len - 1] = '\e0'; - if ( ! mdoc_parseln(mdoc, line, buf)) - errx(1, "mdoc_parseln"); - line++; +while ((len = getline(&buf, &alloc_len, stdin)) >= 0) { + if (len && buflen[len - 1] = '\en') + buf[len - 1] = '\e0'; + if ( ! mdoc_parseln(mdoc, line, buf)) + errx(1, "mdoc_parseln"); + line++; } if ( ! mdoc_endparse(mdoc)) - errx(1, "mdoc_endparse"); + errx(1, "mdoc_endparse"); if (NULL == (node = mdoc_node(mdoc))) - errx(1, "mdoc_node"); + errx(1, "mdoc_node"); parsed(mdoc, node); mdoc_free(mdoc); @@ -297,7 +297,7 @@ mdoc_free(mdoc); The .Nm utility was written by -.An Kristaps Dzonsons Aq kristaps@kth.se . +.An Kristaps Dzonsons Aq kristaps@bsd.lv . .\" SECTION .Sh CAVEATS .Bl -dash -compact