=================================================================== RCS file: /cvs/mandoc/mandoc.c,v retrieving revision 1.117 retrieving revision 1.119 diff -u -p -r1.117 -r1.119 --- mandoc/mandoc.c 2020/01/19 16:44:50 1.117 +++ mandoc/mandoc.c 2021/08/10 12:55:03 1.119 @@ -1,7 +1,7 @@ -/* $Id: mandoc.c,v 1.117 2020/01/19 16:44:50 schwarze Exp $ */ +/* $Id: mandoc.c,v 1.119 2021/08/10 12:55:03 schwarze Exp $ */ /* * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons - * Copyright (c) 2011-2015, 2017-2020 Ingo Schwarze + * Copyright (c) 2011-2015, 2017-2021 Ingo Schwarze * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -74,12 +74,12 @@ mandoc_font(const char *cp, int sz) case 'C': switch (cp[1]) { case 'B': - return ESCAPE_FONTBOLD; + return ESCAPE_FONTCB; case 'I': - return ESCAPE_FONTITALIC; + return ESCAPE_FONTCI; case 'R': case 'W': - return ESCAPE_FONTCW; + return ESCAPE_FONTCR; default: return ESCAPE_ERROR; } @@ -203,7 +203,18 @@ mandoc_escape(const char **end, const char **start, in case 'O': case 'V': case 'Y': - gly = (*start)[-1] == 'f' ? ESCAPE_FONT : ESCAPE_IGNORE; + case '*': + switch ((*start)[-1]) { + case 'f': + gly = ESCAPE_FONT; + break; + case '*': + gly = ESCAPE_DEVICE; + break; + default: + gly = ESCAPE_IGNORE; + break; + } switch (**start) { case '(': if ((*start)[-1] == 'O') @@ -238,13 +249,6 @@ mandoc_escape(const char **end, const char **start, in break; } break; - case '*': - if (strncmp(*start, "(.T", 3) != 0) - abort(); - gly = ESCAPE_DEVICE; - *start = ++*end; - *sz = 2; - break; /* * These escapes are of the form \X'Y', where 'X' is the trigger @@ -458,6 +462,9 @@ mandoc_escape(const char **end, const char **start, in if ((int)strspn(*start + 1, "0123456789ABCDEFabcdef") + 1 == *sz) gly = ESCAPE_UNICODE; + break; + case ESCAPE_DEVICE: + assert(*sz == 2 && (*start)[0] == '.' && (*start)[1] == 'T'); break; default: break;