version 1.341, 2018/08/25 16:53:39 |
version 1.343, 2018/11/26 17:44:34 |
Line 2107 roff_cond_sub(ROFF_ARGS) |
|
Line 2107 roff_cond_sub(ROFF_ARGS) |
|
if (ep[0] == '\\' && ep[1] == '}') |
if (ep[0] == '\\' && ep[1] == '}') |
rr = 0; |
rr = 0; |
|
|
/* Always check for the closing delimiter `\}'. */ |
/* |
|
* The closing delimiter `\}' rewinds the conditional scope |
|
* but is otherwise ignored when interpreting the line. |
|
*/ |
|
|
while ((ep = strchr(ep, '\\')) != NULL) { |
while ((ep = strchr(ep, '\\')) != NULL) { |
switch (ep[1]) { |
switch (ep[1]) { |
Line 2150 roff_cond_text(ROFF_ARGS) |
|
Line 2153 roff_cond_text(ROFF_ARGS) |
|
if (roffnode_cleanscope(r)) |
if (roffnode_cleanscope(r)) |
irc |= endloop; |
irc |= endloop; |
|
|
|
/* |
|
* If `\}' occurs on a text line with neither preceding |
|
* nor following characters, drop the line completely. |
|
*/ |
|
|
ep = buf->buf + pos; |
ep = buf->buf + pos; |
|
if (strcmp(ep, "\\}") == 0) |
|
rr = 0; |
|
|
|
/* |
|
* The closing delimiter `\}' rewinds the conditional scope |
|
* but is otherwise ignored when interpreting the line. |
|
*/ |
|
|
while ((ep = strchr(ep, '\\')) != NULL) { |
while ((ep = strchr(ep, '\\')) != NULL) { |
if (*(++ep) == '}') { |
switch (ep[1]) { |
*ep = '&'; |
case '}': |
if (roff_ccond(r, ln, ep - buf->buf - 1)) |
memmove(ep, ep + 2, strlen(ep + 2) + 1); |
|
if (roff_ccond(r, ln, ep - buf->buf)) |
irc |= endloop; |
irc |= endloop; |
} |
break; |
if (*ep != '\0') |
case '\0': |
++ep; |
++ep; |
|
break; |
|
default: |
|
ep += 2; |
|
break; |
|
} |
} |
} |
if (rr) |
if (rr) |
irc |= ROFF_CONT; |
irc |= ROFF_CONT; |
Line 3361 roff_char(ROFF_ARGS) |
|
Line 3383 roff_char(ROFF_ARGS) |
|
case ESCAPE_FONTITALIC: |
case ESCAPE_FONTITALIC: |
case ESCAPE_FONTBOLD: |
case ESCAPE_FONTBOLD: |
case ESCAPE_FONTBI: |
case ESCAPE_FONTBI: |
|
case ESCAPE_FONTCW: |
case ESCAPE_FONTPREV: |
case ESCAPE_FONTPREV: |
font++; |
font++; |
break; |
break; |