aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-07-05 15:03:27 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-07-05 15:03:27 +0000
commitacb30a24128863f2d57ac9aa20a93c8dd243b80b (patch)
tree46474fe953b663899c9a6f1594eb3c8d197277ac
parent7db3d6e9ae386fc036279f2166b0ececc6cd6d27 (diff)
downloadmandoc-acb30a24128863f2d57ac9aa20a93c8dd243b80b.tar.gz
mandoc-acb30a24128863f2d57ac9aa20a93c8dd243b80b.tar.zst
mandoc-acb30a24128863f2d57ac9aa20a93c8dd243b80b.zip
The EQN_LISTONE box type is pointless.
Simplify by just using EQN_LIST with expectargs = 1. Noticed while investigating a bug report from bentley@. No functional change.
-rw-r--r--eqn.c19
-rw-r--r--eqn_html.c11
-rw-r--r--eqn_term.c11
-rw-r--r--mandoc.h3
-rw-r--r--tree.c3
5 files changed, 27 insertions, 20 deletions
diff --git a/eqn.c b/eqn.c
index 59972171..4806b933 100644
--- a/eqn.c
+++ b/eqn.c
@@ -1,4 +1,4 @@
-/* $Id: eqn.c,v 1.72 2017/06/29 16:31:15 schwarze Exp $ */
+/* $Id: eqn.c,v 1.73 2017/07/05 15:03:27 schwarze Exp $ */
/*
* Copyright (c) 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -729,7 +729,7 @@ next_tok:
cur->text = mandoc_strdup("");
}
parent = eqn_box_makebinary(ep, EQNPOS_NONE, parent);
- parent->type = EQN_LISTONE;
+ parent->type = EQN_LIST;
parent->expectargs = 1;
parent->font = EQNFONT_ROMAN;
switch (tok) {
@@ -782,7 +782,7 @@ next_tok:
* exactly one of those.
*/
parent = eqn_box_alloc(ep, parent);
- parent->type = EQN_LISTONE;
+ parent->type = EQN_LIST;
parent->expectargs = 1;
switch (tok) {
case EQN_TOK_FAT:
@@ -820,7 +820,7 @@ next_tok:
break;
}
parent = eqn_box_alloc(ep, parent);
- parent->type = EQN_LISTONE;
+ parent->type = EQN_LIST;
parent->expectargs = 1;
parent->size = size;
break;
@@ -908,6 +908,7 @@ next_tok:
*/
for (cur = parent; cur != NULL; cur = cur->parent)
if (cur->type == EQN_LIST &&
+ cur->expectargs > 1 &&
(tok == EQN_TOK_BRACE_CLOSE ||
cur->left != NULL))
break;
@@ -939,8 +940,9 @@ next_tok:
parent->type == EQN_MATRIX))
parent = parent->parent;
/* Close out any "singleton" lists. */
- while (parent->type == EQN_LISTONE &&
- parent->args == parent->expectargs)
+ while (parent->type == EQN_LIST &&
+ parent->expectargs == 1 &&
+ parent->args == 1)
parent = parent->parent;
break;
case EQN_TOK_BRACE_OPEN:
@@ -1100,8 +1102,9 @@ next_tok:
/*
* Post-process list status.
*/
- while (parent->type == EQN_LISTONE &&
- parent->args == parent->expectargs)
+ while (parent->type == EQN_LIST &&
+ parent->expectargs == 1 &&
+ parent->args == 1)
parent = parent->parent;
break;
default:
diff --git a/eqn_html.c b/eqn_html.c
index 2d9eeb8a..feeae102 100644
--- a/eqn_html.c
+++ b/eqn_html.c
@@ -1,4 +1,4 @@
-/* $Id: eqn_html.c,v 1.14 2017/06/23 23:00:01 schwarze Exp $ */
+/* $Id: eqn_html.c,v 1.15 2017/07/05 15:03:27 schwarze Exp $ */
/*
* Copyright (c) 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -51,7 +51,8 @@ eqn_box(struct html *p, const struct eqn_box *bp)
if (EQN_MATRIX == bp->type) {
if (NULL == bp->first)
goto out;
- if (EQN_LIST != bp->first->type) {
+ if (bp->first->type != EQN_LIST ||
+ bp->first->expectargs == 1) {
eqn_box(p, bp->first);
goto out;
}
@@ -131,9 +132,11 @@ eqn_box(struct html *p, const struct eqn_box *bp)
if (EQN_PILE == bp->type) {
assert(NULL == post);
- if (bp->first != NULL && bp->first->type == EQN_LIST)
+ if (bp->first != NULL &&
+ bp->first->type == EQN_LIST &&
+ bp->first->expectargs > 1)
post = print_otag(p, TAG_MTABLE, "");
- } else if (bp->type == EQN_LIST &&
+ } else if (bp->type == EQN_LIST && bp->expectargs > 1 &&
bp->parent && bp->parent->type == EQN_PILE) {
assert(NULL == post);
post = print_otag(p, TAG_MTR, "");
diff --git a/eqn_term.c b/eqn_term.c
index 43580152..33edf415 100644
--- a/eqn_term.c
+++ b/eqn_term.c
@@ -1,4 +1,4 @@
-/* $Id: eqn_term.c,v 1.9 2017/02/12 14:19:01 schwarze Exp $ */
+/* $Id: eqn_term.c,v 1.10 2017/07/05 15:03:27 schwarze Exp $ */
/*
* Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -52,7 +52,7 @@ eqn_box(struct termp *p, const struct eqn_box *bp)
{
const struct eqn_box *child;
- if (bp->type == EQN_LIST ||
+ if ((bp->type == EQN_LIST && bp->expectargs > 1) ||
(bp->type == EQN_PILE && (bp->prev || bp->next)) ||
(bp->parent != NULL && bp->parent->pos == EQNPOS_SQRT)) {
if (bp->parent->type == EQN_SUBEXPR && bp->prev != NULL)
@@ -96,12 +96,15 @@ eqn_box(struct termp *p, const struct eqn_box *bp)
} else {
child = bp->first;
if (bp->type == EQN_MATRIX &&
- child != NULL && child->type == EQN_LIST)
+ child != NULL &&
+ child->type == EQN_LIST &&
+ child->expectargs > 1)
child = child->first;
while (child != NULL) {
eqn_box(p,
bp->type == EQN_PILE &&
child->type == EQN_LIST &&
+ child->expectargs > 1 &&
child->args == 1 ?
child->first : child);
child = child->next;
@@ -110,7 +113,7 @@ eqn_box(struct termp *p, const struct eqn_box *bp)
if (bp->font != EQNFONT_NONE)
term_fontpop(p);
- if (bp->type == EQN_LIST ||
+ if ((bp->type == EQN_LIST && bp->expectargs > 1) ||
(bp->type == EQN_PILE && (bp->prev || bp->next)) ||
(bp->parent != NULL && bp->parent->pos == EQNPOS_SQRT)) {
p->flags |= TERMP_NOSPACE;
diff --git a/mandoc.h b/mandoc.h
index 2c7cdaee..4310f12c 100644
--- a/mandoc.h
+++ b/mandoc.h
@@ -1,4 +1,4 @@
-/* $Id: mandoc.h,v 1.241 2017/07/03 17:33:05 schwarze Exp $ */
+/* $Id: mandoc.h,v 1.242 2017/07/05 15:03:27 schwarze Exp $ */
/*
* Copyright (c) 2010, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -338,7 +338,6 @@ enum eqn_boxt {
EQN_TEXT, /* text (number, variable, whatever) */
EQN_SUBEXPR, /* nested `eqn' subexpression */
EQN_LIST, /* list (braces, etc.) */
- EQN_LISTONE, /* singleton list */
EQN_PILE, /* vertical pile */
EQN_MATRIX /* pile of piles */
};
diff --git a/tree.c b/tree.c
index 989a2c3c..9ecaddb4 100644
--- a/tree.c
+++ b/tree.c
@@ -1,4 +1,4 @@
-/* $Id: tree.c,v 1.74 2017/04/24 23:06:18 schwarze Exp $ */
+/* $Id: tree.c,v 1.75 2017/07/05 15:03:27 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2013, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -316,7 +316,6 @@ print_box(const struct eqn_box *ep, int indent)
case EQN_ROOT:
t = "eqn-root";
break;
- case EQN_LISTONE:
case EQN_LIST:
t = "eqn-list";
break;