]> git.cameronkatri.com Git - mandoc.git/blobdiff - eqn.c
MANDOCERR_BADTAB needs checking, but .UR/.UE is done
[mandoc.git] / eqn.c
diff --git a/eqn.c b/eqn.c
index da085fa19b3991ca3965203e4047bd399e88b87d..37f01bcb5b6e67c6c7fb90c7bc8b411f7c86cc98 100644 (file)
--- a/eqn.c
+++ b/eqn.c
@@ -1,4 +1,4 @@
-/*     $Id: eqn.c,v 1.36 2011/07/23 18:41:18 kristaps Exp $ */
+/*     $Id: eqn.c,v 1.38 2011/07/25 15:37:00 kristaps Exp $ */
 /*
  * Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -205,9 +205,11 @@ static     const struct eqnstr eqnposs[EQNPOS__MAX] = {
 
 static const struct eqnstr eqnpiles[EQNPILE__MAX] = {
        { "", 0 }, /* EQNPILE_NONE */
+       { "pile", 4 }, /* EQNPILE_PILE */
        { "cpile", 5 }, /* EQNPILE_CPILE */
        { "rpile", 5 }, /* EQNPILE_RPILE */
        { "lpile", 5 }, /* EQNPILE_LPILE */
+       { "col", 3 }, /* EQNPILE_COL */
        { "ccol", 4 }, /* EQNPILE_CCOL */
        { "rcol", 4 }, /* EQNPILE_RCOL */
        { "lcol", 4 }, /* EQNPILE_LCOL */
@@ -292,8 +294,7 @@ eqn_read(struct eqn_node **epp, int ln,
         */
 
        if (0 == strncmp(p, ".EN", 3)) {
-               er = eqn_end(ep);
-               *epp = NULL;
+               er = eqn_end(epp);
                p += 3;
                while (' ' == *p || '\t' == *p)
                        p++;
@@ -331,7 +332,7 @@ eqn_alloc(const char *name, int pos, int line, struct mparse *parse)
 
        p = mandoc_calloc(1, sizeof(struct eqn_node));
 
-       if ('\0' != *name) {
+       if (name && '\0' != *name) {
                sz = strlen(name);
                assert(sz);
                do {
@@ -350,11 +351,15 @@ eqn_alloc(const char *name, int pos, int line, struct mparse *parse)
 }
 
 enum rofferr
-eqn_end(struct eqn_node *ep)
+eqn_end(struct eqn_node **epp)
 {
+       struct eqn_node *ep;
        struct eqn_box  *root;
        enum eqn_rest    c;
 
+       ep = *epp;
+       *epp = NULL;
+
        ep->eqn.root = mandoc_calloc(1, sizeof(struct eqn_box));
 
        root = ep->eqn.root;