aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--man.333
-rw-r--r--man.c20
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 <kristaps@bsd.lv>
.\"
@@ -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 <kristaps@bsd.lv>
*
@@ -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;