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 94baa506 for ; Wed, 3 Apr 2019 10:04:33 -0500 (EST) Date: Wed, 3 Apr 2019 10:04:33 -0500 (EST) 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: docbook2mdoc: Make macro_addnode() more flexible: Iteratively descend X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Message-ID: Log Message: ----------- Make macro_addnode() more flexible: Iteratively descend singleton children to find a singleton text node. Modified Files: -------------- docbook2mdoc: macro.c Revision Data ------------- Index: macro.c =================================================================== RCS file: /home/cvs/mdocml/docbook2mdoc/macro.c,v retrieving revision 1.4 retrieving revision 1.5 diff -Lmacro.c -Lmacro.c -u -p -r1.4 -r1.5 --- macro.c +++ macro.c @@ -153,6 +153,7 @@ macro_argline(struct format *f, const ch void macro_addnode(struct format *f, struct pnode *pn, int flags) { + struct pnode *nc; int quote_now; assert(f->linestate == LINE_MACRO); @@ -162,10 +163,11 @@ macro_addnode(struct format *f, struct p * that text, letting macro_addarg() decide about quoting. */ - if (pn->node == NODE_TEXT || pn->node == NODE_ESCAPE || - ((pn = TAILQ_FIRST(&pn->childq)) != NULL && - (pn->node == NODE_TEXT || pn->node == NODE_ESCAPE) && - TAILQ_NEXT(pn, child) == NULL)) { + while ((nc = TAILQ_FIRST(&pn->childq)) != NULL && + TAILQ_NEXT(nc, child) == NULL) + pn = nc; + + if (pn->node == NODE_TEXT || pn->node == NODE_ESCAPE) { macro_addarg(f, pn->b, flags); return; } @@ -194,9 +196,9 @@ macro_addnode(struct format *f, struct p * inserting whitespace between nodes. */ - while (pn != NULL) { - macro_addnode(f, pn, flags); - pn = TAILQ_NEXT(pn, child); + while (nc != NULL) { + macro_addnode(f, nc, flags); + nc = TAILQ_NEXT(nc, child); flags |= ARG_SPACE; } if (quote_now) -- To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv