From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]) by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id 726113ed for ; Wed, 5 Jul 2017 10:03:57 -0500 (EST) Date: Wed, 5 Jul 2017 10:03:57 -0500 (EST) Message-Id: <12527932234214448507.enqueue@fantadrom.bsd.lv> X-Mailinglist: mandoc-source Reply-To: source@mandoc.bsd.lv MIME-Version: 1.0 From: schwarze@mandoc.bsd.lv To: source@mandoc.bsd.lv Subject: mandoc: The EQN_LISTONE box type is pointless. X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- 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. Modified Files: -------------- mandoc: eqn.c eqn_html.c eqn_term.c mandoc.h tree.c Revision Data ------------- Index: eqn_html.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/eqn_html.c,v retrieving revision 1.14 retrieving revision 1.15 diff -Leqn_html.c -Leqn_html.c -u -p -r1.14 -r1.15 --- eqn_html.c +++ eqn_html.c @@ -51,7 +51,8 @@ eqn_box(struct html *p, const struct eqn 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 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, ""); Index: tree.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/tree.c,v retrieving revision 1.74 retrieving revision 1.75 diff -Ltree.c -Ltree.c -u -p -r1.74 -r1.75 --- tree.c +++ tree.c @@ -316,7 +316,6 @@ print_box(const struct eqn_box *ep, int case EQN_ROOT: t = "eqn-root"; break; - case EQN_LISTONE: case EQN_LIST: t = "eqn-list"; break; Index: eqn_term.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/eqn_term.c,v retrieving revision 1.9 retrieving revision 1.10 diff -Leqn_term.c -Leqn_term.c -u -p -r1.9 -r1.10 --- eqn_term.c +++ eqn_term.c @@ -52,7 +52,7 @@ eqn_box(struct termp *p, const struct eq { 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 eq } 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 eq 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; Index: eqn.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/eqn.c,v retrieving revision 1.72 retrieving revision 1.73 diff -Leqn.c -Leqn.c -u -p -r1.72 -r1.73 --- eqn.c +++ eqn.c @@ -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: Index: mandoc.h =================================================================== RCS file: /home/cvs/mandoc/mandoc/mandoc.h,v retrieving revision 1.241 retrieving revision 1.242 diff -Lmandoc.h -Lmandoc.h -u -p -r1.241 -r1.242 --- mandoc.h +++ mandoc.h @@ -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 */ }; -- To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv