version 1.68, 2017/06/23 00:30:38 |
version 1.70, 2017/06/26 11:04:47 |
|
|
/* $Id$ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org> |
Line 722 static enum rofferr |
|
Line 722 static enum rofferr |
|
eqn_parse(struct eqn_node *ep, struct eqn_box *parent) |
eqn_parse(struct eqn_node *ep, struct eqn_box *parent) |
{ |
{ |
char sym[64]; |
char sym[64]; |
struct eqn_box *cur, *nbox; |
struct eqn_box *cur, *nbox, *split; |
const char *cp, *cpn, *start; |
const char *cp, *cpn, *start; |
char *p; |
char *p; |
size_t sz; |
size_t sz; |
|
|
break; |
break; |
cpn = p - 1; |
cpn = p - 1; |
ccln = CCL_LET; |
ccln = CCL_LET; |
|
split = NULL; |
for (;;) { |
for (;;) { |
/* Advance to next character. */ |
/* Advance to next character. */ |
cp = cpn++; |
cp = cpn++; |
|
|
break; |
break; |
if (ccln == ccl) |
if (ccln == ccl) |
continue; |
continue; |
/* Boundary found, add a new box. */ |
/* Boundary found, split the text. */ |
|
if (parent->args == parent->expectargs) { |
|
/* Remove the text from the tree. */ |
|
if (cur->prev == NULL) |
|
parent->first = cur->next; |
|
else |
|
cur->prev->next = NULL; |
|
parent->last = cur->prev; |
|
parent->args--; |
|
/* Set up a list instead. */ |
|
split = eqn_box_alloc(ep, parent); |
|
split->type = EQN_LIST; |
|
/* Insert the word into the list. */ |
|
split->first = split->last = cur; |
|
cur->parent = split; |
|
cur->prev = NULL; |
|
parent = split; |
|
} |
|
/* Append a new text box. */ |
nbox = eqn_box_alloc(ep, parent); |
nbox = eqn_box_alloc(ep, parent); |
nbox->type = EQN_TEXT; |
nbox->type = EQN_TEXT; |
nbox->text = mandoc_strdup(cpn); |
nbox->text = mandoc_strdup(cpn); |
|
|
cpn = p - 1; |
cpn = p - 1; |
ccln = CCL_LET; |
ccln = CCL_LET; |
} |
} |
|
if (split != NULL) |
|
parent = split->parent; |
break; |
break; |
} |
} |
/* |
/* |