]> git.cameronkatri.com Git - mandoc.git/blobdiff - mandoc.c
MANWIDTH
[mandoc.git] / mandoc.c
index aad9a272f5c381f6b0d4c9edee89b984cdf8b61e..302f4fa1425c02252a5e24b61702c17b8a720e6c 100644 (file)
--- a/mandoc.c
+++ b/mandoc.c
@@ -1,4 +1,4 @@
-/*     $Id: mandoc.c,v 1.117 2020/01/19 16:44:50 schwarze Exp $ */
+/*     $Id: mandoc.c,v 1.118 2020/10/24 22:57:39 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011-2015, 2017-2020 Ingo Schwarze <schwarze@openbsd.org>
@@ -203,7 +203,18 @@ mandoc_escape(const char **end, const char **start, int *sz)
        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, int *sz)
                        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
@@ -459,6 +463,9 @@ mandoc_escape(const char **end, const char **start, int *sz)
                    + 1 == *sz)
                        gly = ESCAPE_UNICODE;
                break;
+       case ESCAPE_DEVICE:
+               assert(*sz == 2 && (*start)[0] == '.' && (*start)[1] == 'T');
+               break;
        default:
                break;
        }