version 1.11, 2022/06/06 12:09:48 |
version 1.13, 2022/06/07 09:54:40 |
|
|
/* $OpenBSD$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2011, 2012, 2013, 2014, 2015, 2017, 2018, 2020, 2022 |
* Copyright (c) 2011, 2012, 2013, 2014, 2015, 2017, 2018, 2020, 2022 |
* Ingo Schwarze <schwarze@openbsd.org> |
* Ingo Schwarze <schwarze@openbsd.org> |
Line 270 roff_escape(const char *buf, const int ln, const int a |
|
Line 270 roff_escape(const char *buf, const int ln, const int a |
|
goto out_sub; |
goto out_sub; |
|
|
if (term == '\b') { |
if (term == '\b') { |
if ((buf[inam] == 'N' && isdigit((unsigned char)buf[iarg])) || |
if (strchr("BDHLRSvxNhl", buf[inam]) != NULL && |
(buf[inam] == 'h' && strchr(" %&()*+-./0123456789:<=>", |
strchr(" %&()*+-./0123456789:<=>", buf[iarg]) != NULL) { |
buf[iarg]) != NULL)) { |
err = MANDOCERR_ESC_DELIM; |
iendarg = iend = iarg + 1; |
if (rval != ESCAPE_EXPAND) |
rval = ESCAPE_ERROR; |
rval = ESCAPE_ERROR; |
goto out; |
if (buf[inam] != 'D') { |
|
iendarg = iend = iarg + 1; |
|
goto out; |
|
} |
} |
} |
term = buf[iarg++]; |
term = buf[iarg++]; |
} else if (term == '\0' && maxl == INT_MAX) { |
} else if (term == '\0' && maxl == INT_MAX) { |
Line 289 roff_escape(const char *buf, const int ln, const int a |
|
Line 292 roff_escape(const char *buf, const int ln, const int a |
|
case '[': |
case '[': |
if (buf[++iarg] == ' ') { |
if (buf[++iarg] == ' ') { |
iendarg = iend = iarg + 1; |
iendarg = iend = iarg + 1; |
|
err = MANDOCERR_ESC_ARG; |
rval = ESCAPE_ERROR; |
rval = ESCAPE_ERROR; |
goto out; |
goto out; |
} |
} |
Line 366 roff_escape(const char *buf, const int ln, const int a |
|
Line 370 roff_escape(const char *buf, const int ln, const int a |
|
case '2': |
case '2': |
case '3': |
case '3': |
case '4': |
case '4': |
rval = argl == 1 ? ESCAPE_IGNORE : ESCAPE_ERROR; |
if (argl == 1) |
|
rval = ESCAPE_IGNORE; |
|
else { |
|
err = MANDOCERR_ESC_ARG; |
|
rval = ESCAPE_ERROR; |
|
} |
break; |
break; |
case '5': |
case '5': |
rval = buf[iarg - 1] == '[' ? ESCAPE_UNSUPP : |
if (buf[iarg - 1] == '[') |
ESCAPE_ERROR; |
rval = ESCAPE_UNSUPP; |
|
else { |
|
err = MANDOCERR_ESC_ARG; |
|
rval = ESCAPE_ERROR; |
|
} |
break; |
break; |
default: |
default: |
|
err = MANDOCERR_ESC_ARG; |
rval = ESCAPE_ERROR; |
rval = ESCAPE_ERROR; |
break; |
break; |
} |
} |
Line 384 roff_escape(const char *buf, const int ln, const int a |
|
Line 398 roff_escape(const char *buf, const int ln, const int a |
|
switch (rval) { |
switch (rval) { |
case ESCAPE_FONT: |
case ESCAPE_FONT: |
rval = mandoc_font(buf + iarg, argl); |
rval = mandoc_font(buf + iarg, argl); |
|
if (rval == ESCAPE_ERROR) |
|
err = MANDOCERR_ESC_ARG; |
break; |
break; |
|
|
case ESCAPE_SPECIAL: |
case ESCAPE_SPECIAL: |
|
|
|
|
*resc = iesc; |
*resc = iesc; |
switch (rval) { |
switch (rval) { |
case ESCAPE_ERROR: |
|
if (err == MANDOCERR_OK) |
|
err = MANDOCERR_ESC_BAD; |
|
break; |
|
case ESCAPE_UNSUPP: |
case ESCAPE_UNSUPP: |
err = MANDOCERR_ESC_UNSUPP; |
err = MANDOCERR_ESC_UNSUPP; |
break; |
break; |