version 1.8, 2022/06/02 14:51:41 |
version 1.9, 2022/06/05 10:19:54 |
Line 98 roff_escape(const char *buf, const int ln, const int a |
|
Line 98 roff_escape(const char *buf, const int ln, const int a |
|
iarg = iendarg = iend = inam + 1; |
iarg = iendarg = iend = inam + 1; |
maxl = INT_MAX; |
maxl = INT_MAX; |
term = '\0'; |
term = '\0'; |
|
err = MANDOCERR_OK; |
switch (buf[inam]) { |
switch (buf[inam]) { |
|
|
/* Escape sequences taking no arguments at all. */ |
/* Escape sequences taking no arguments at all. */ |
Line 312 roff_escape(const char *buf, const int ln, const int a |
|
Line 313 roff_escape(const char *buf, const int ln, const int a |
|
/* Ignore an incomplete argument except for \w. */ |
/* Ignore an incomplete argument except for \w. */ |
if (buf[inam] != 'w') |
if (buf[inam] != 'w') |
iendarg = iarg; |
iendarg = iarg; |
|
if (rval == ESCAPE_EXPAND) |
|
err = MANDOCERR_ESC_BAD; |
|
else |
|
rval = ESCAPE_ERROR; |
break; |
break; |
} |
} |
if (buf[iendarg] == term) { |
if (buf[iendarg] == term) { |
Line 343 roff_escape(const char *buf, const int ln, const int a |
|
Line 348 roff_escape(const char *buf, const int ln, const int a |
|
iend = ++iendarg; |
iend = ++iendarg; |
} |
} |
} |
} |
if (resc != NULL && ((maxl != INT_MAX && maxl != 0) || |
|
(term != '\0' && buf[iendarg] != term))) |
|
mandoc_msg(MANDOCERR_ESC_BAD, ln, iesc, "%s", buf + iesc); |
|
|
|
/* Post-process depending on the content of the argument. */ |
/* Post-process depending on the content of the argument. */ |
|
|
|
|
err = MANDOCERR_ESC_UNSUPP; |
err = MANDOCERR_ESC_UNSUPP; |
break; |
break; |
case ESCAPE_UNDEF: |
case ESCAPE_UNDEF: |
if (buf[inam] == '\\' || buf[inam] == '.') |
if (buf[inam] != '\\' && buf[inam] != '.') |
return rval; |
err = MANDOCERR_ESC_UNDEF; |
err = MANDOCERR_ESC_UNDEF; |
|
break; |
break; |
case ESCAPE_SPECIAL: |
case ESCAPE_SPECIAL: |
if (mchars_spec2cp(buf + iarg, argl) >= 0) |
if (mchars_spec2cp(buf + iarg, argl) < 0) |
return rval; |
err = MANDOCERR_ESC_BAD; |
err = MANDOCERR_ESC_BAD; |
|
break; |
break; |
default: |
default: |
return rval; |
break; |
} |
} |
mandoc_msg(err, ln, iesc, "%.*s", iend - iesc, buf + iesc); |
if (err != MANDOCERR_OK) |
|
mandoc_msg(err, ln, iesc, "%.*s", iend - iesc, buf + iesc); |
return rval; |
return rval; |
} |
} |