version 1.2, 2019/03/28 20:41:33 |
version 1.4, 2019/04/03 13:42:35 |
Line 47 macro_open(struct format *f, const char *name) |
|
Line 47 macro_open(struct format *f, const char *name) |
|
void |
void |
macro_close(struct format *f) |
macro_close(struct format *f) |
{ |
{ |
assert(f->linestate == LINE_MACRO); |
if (f->linestate == LINE_NEW) |
|
return; |
putchar('\n'); |
putchar('\n'); |
f->linestate = LINE_NEW; |
f->linestate = LINE_NEW; |
} |
} |
Line 161 macro_addnode(struct format *f, struct pnode *pn, int |
|
Line 162 macro_addnode(struct format *f, struct pnode *pn, int |
|
* that text, letting macro_addarg() decide about quoting. |
* that text, letting macro_addarg() decide about quoting. |
*/ |
*/ |
|
|
if (pn->node == NODE_TEXT || |
if (pn->node == NODE_TEXT || pn->node == NODE_ESCAPE || |
((pn = TAILQ_FIRST(&pn->childq)) != NULL && |
((pn = TAILQ_FIRST(&pn->childq)) != NULL && |
pn->node == NODE_TEXT && TAILQ_NEXT(pn, child) == NULL)) { |
(pn->node == NODE_TEXT || pn->node == NODE_ESCAPE) && |
|
TAILQ_NEXT(pn, child) == NULL)) { |
macro_addarg(f, pn->b, flags); |
macro_addarg(f, pn->b, flags); |
return; |
return; |
} |
} |
Line 239 print_textnode(struct format *f, struct pnode *n) |
|
Line 241 print_textnode(struct format *f, struct pnode *n) |
|
{ |
{ |
struct pnode *nc; |
struct pnode *nc; |
|
|
if (n->node == NODE_TEXT) |
if (n->node == NODE_TEXT || n->node == NODE_ESCAPE) |
print_text(f, n->b, ARG_SPACE); |
print_text(f, n->b, ARG_SPACE); |
else |
else |
TAILQ_FOREACH(nc, &n->childq, child) |
TAILQ_FOREACH(nc, &n->childq, child) |