From 8c4c0ea22ab205fa87d8e0d34700b3b564fe3e23 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Mon, 3 Jan 2011 11:31:26 +0000 Subject: Same treatment for MAN_HALT as for MDOC_HALT. --- man.3 | 33 ++++++++++++++------------------- man.c | 20 ++++++++++---------- 2 files changed, 24 insertions(+), 29 deletions(-) diff --git a/man.3 b/man.3 index e72b5297..2b2d0a91 100644 --- a/man.3 +++ b/man.3 @@ -1,4 +1,4 @@ -.\" $Id: man.3,v 1.28 2011/01/01 12:59:17 kristaps Exp $ +.\" $Id: man.3,v 1.29 2011/01/03 11:31:26 kristaps Exp $ .\" .\" Copyright (c) 2009-2010 Kristaps Dzonsons .\" @@ -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 1 2011 $ +.Dd $Mdocdate: January 3 2011 $ .Dt MAN 3 .Os .Sh NAME @@ -105,6 +105,16 @@ See for details. .El .Ss Functions +If +.Fn man_addspan , +.Fn man_parseln , +or +.Fn man_endparse +return 0, calls to any function but +.Fn man_reset +or +.Fn man_free +will raise an assertion. .Bl -ohang .It Fn man_addspan Add a table span to the parsing stream. @@ -115,8 +125,8 @@ The .Fa data pointer is passed to .Fa msgs . -Returns NULL on failure. -If non-NULL, the pointer must be freed with +Always returns a valid pointer. +The pointer must be freed with .Fn man_free . .It Fn man_reset Reset the parser for another parse routine. @@ -135,26 +145,11 @@ The input buffer is modified by this function. .It Fn man_endparse Signals that the parse is complete. -Note that if -.Fn man_endparse -is called subsequent to -.Fn man_node , -the resulting tree is incomplete. Returns 0 on failure, 1 on success. .It Fn man_node Returns the first node of the parse. -Note that if -.Fn man_parseln -or -.Fn man_endparse -return 0, the tree will be incomplete. .It Fn man_meta Returns the document's parsed meta-data. -If this information has not yet been supplied or -.Fn man_parseln -or -.Fn man_endparse -return 0, the data will be incomplete. .El .Ss Variables The following variables are also defined: diff --git a/man.c b/man.c index d2ce5f1d..6788c923 100644 --- a/man.c +++ b/man.c @@ -1,4 +1,4 @@ -/* $Id: man.c,v 1.95 2011/01/01 13:54:58 kristaps Exp $ */ +/* $Id: man.c,v 1.96 2011/01/03 11:31:26 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons * @@ -64,7 +64,8 @@ const struct man_node * man_node(const struct man *m) { - return(MAN_HALT & m->flags ? NULL : m->first); + assert( ! (MAN_HALT & m->flags)); + return(m->first); } @@ -72,7 +73,8 @@ const struct man_meta * man_meta(const struct man *m) { - return(MAN_HALT & m->flags ? NULL : &m->meta); + assert( ! (MAN_HALT & m->flags)); + return(&m->meta); } @@ -115,9 +117,8 @@ int man_endparse(struct man *m) { - if (MAN_HALT & m->flags) - return(0); - else if (man_macroend(m)) + assert( ! (MAN_HALT & m->flags)); + if (man_macroend(m)) return(1); m->flags |= MAN_HALT; return(0); @@ -128,9 +129,7 @@ int man_parseln(struct man *m, int ln, char *buf, int offs) { - if (MAN_HALT & m->flags) - return(0); - + assert( ! (MAN_HALT & m->flags)); return(('.' == buf[offs] || '\'' == buf[offs]) ? man_pmacro(m, ln, buf, offs) : man_ptext(m, ln, buf, offs)); @@ -363,6 +362,7 @@ int man_addspan(struct man *m, const struct tbl_span *sp) { + assert( ! (MAN_HALT & m->flags)); if ( ! man_span_alloc(m, sp)) return(0); return(man_descope(m, 0, 0)); @@ -465,7 +465,7 @@ man_ptext(struct man *m, int line, char *buf, int offs) } -int +static int man_pmacro(struct man *m, int ln, char *buf, int offs) { int i, j, ppos; -- cgit v1.2.3-56-ge451