]> git.cameronkatri.com Git - mandoc.git/blobdiff - mandoc.c
during prioritization for man(1), correctly extract the section name
[mandoc.git] / mandoc.c
index aad9a272f5c381f6b0d4c9edee89b984cdf8b61e..6adf1a4318b29f852c11ba9272a5d1953f554412 100644 (file)
--- a/mandoc.c
+++ b/mandoc.c
@@ -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 <kristaps@bsd.lv>
- * Copyright (c) 2011-2015, 2017-2020 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2011-2015, 2017-2021 Ingo Schwarze <schwarze@openbsd.org>
  *
  * 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, 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;
        }