]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc.c
Cleaned up ctype functions (netbsd).
[mandoc.git] / mdoc.c
diff --git a/mdoc.c b/mdoc.c
index 23f0d7bb5410e5fb97e83f79352b8a3a1a2faac4..58ad387412d0d5fca4ee6f547c25042bc3ed8723 100644 (file)
--- a/mdoc.c
+++ b/mdoc.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc.c,v 1.48 2009/02/23 12:45:19 kristaps Exp $ */
+/* $Id: mdoc.c,v 1.51 2009/03/05 13:12:12 kristaps Exp $ */
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -180,6 +180,12 @@ mdoc_endparse(struct mdoc *mdoc)
 }
 
 
 }
 
 
+/*
+ * Main line-parsing routine.  If the line is a macro-line (started with
+ * a '.' control character), then pass along to the parser, which parses
+ * subsequent macros until the end of line.  If normal text, simply
+ * append the entire line to the chain.
+ */
 int
 mdoc_parseln(struct mdoc *mdoc, int line, char *buf)
 {
 int
 mdoc_parseln(struct mdoc *mdoc, int line, char *buf)
 {
@@ -192,20 +198,30 @@ mdoc_parseln(struct mdoc *mdoc, int line, char *buf)
        mdoc->linetok = 0;
 
        if ('.' != *buf) {
        mdoc->linetok = 0;
 
        if ('.' != *buf) {
+               /*
+                * Free-form text.  Not allowed in the prologue.
+                */
                if (SEC_PROLOGUE == mdoc->lastnamed)
                if (SEC_PROLOGUE == mdoc->lastnamed)
-                       return(mdoc_perr(mdoc, line, 0, "text disallowed in document prologue"));
+                       return(mdoc_perr(mdoc, line, 0, 
+                                       "no text in prologue"));
+
                if ( ! mdoc_word_alloc(mdoc, line, 0, buf))
                        return(0);
                mdoc->next = MDOC_NEXT_SIBLING;
                return(1);
        }
 
                if ( ! mdoc_word_alloc(mdoc, line, 0, buf))
                        return(0);
                mdoc->next = MDOC_NEXT_SIBLING;
                return(1);
        }
 
+       /*
+        * Control-character detected.  Begin the parsing sequence.
+        */
+
        if (buf[1] && '\\' == buf[1])
                if (buf[2] && '\"' == buf[2])
                        return(1);
 
        i = 1;
        if (buf[1] && '\\' == buf[1])
                if (buf[2] && '\"' == buf[2])
                        return(1);
 
        i = 1;
-       while (buf[i] && ! isspace((int)buf[i]) && i < (int)sizeof(tmp))
+       while (buf[i] && ! isspace((u_char)buf[i]) && 
+                       i < (int)sizeof(tmp))
                i++;
 
        if (i == (int)sizeof(tmp)) {
                i++;
 
        if (i == (int)sizeof(tmp)) {
@@ -226,13 +242,14 @@ mdoc_parseln(struct mdoc *mdoc, int line, char *buf)
                return(mdoc_perr(mdoc, line, 1, "unknown macro"));
        }
 
                return(mdoc_perr(mdoc, line, 1, "unknown macro"));
        }
 
-       while (buf[i] && isspace((int)buf[i]))
+       while (buf[i] && isspace((u_char)buf[i]))
                i++;
 
        if ( ! mdoc_macro(mdoc, c, line, 1, &i, buf)) {
                mdoc->flags |= MDOC_HALT;
                return(0);
        }
                i++;
 
        if ( ! mdoc_macro(mdoc, c, line, 1, &i, buf)) {
                mdoc->flags |= MDOC_HALT;
                return(0);
        }
+
        return(1);
 }
 
        return(1);
 }