]> git.cameronkatri.com Git - mandoc.git/blobdiff - chars.c
In the fallback code to look for manual pages without using mandoc.db(5),
[mandoc.git] / chars.c
diff --git a/chars.c b/chars.c
index fb9ded8baef6fb89fd9e1e7122d667b1ef105df3..d54fc458aea2c05aab00491b805de18394c81dea 100644 (file)
--- a/chars.c
+++ b/chars.c
@@ -1,7 +1,8 @@
-/*     $Id: chars.c,v 1.73 2017/08/23 13:01:29 schwarze Exp $ */
+/*     $Id: chars.c,v 1.79 2020/02/13 16:18:29 schwarze Exp $ */
 /*
  * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2011, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2011, 2014, 2015, 2017, 2018, 2020
+ *               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
@@ -23,6 +24,7 @@
 #include <ctype.h>
 #include <stddef.h>
 #include <stdint.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -46,21 +48,14 @@ static struct ln lines[] = {
        /* Spacing. */
        { " ",                  ascii_nbrsp,    0x00a0  },
        { "~",                  ascii_nbrsp,    0x00a0  },
-       { "0",                  " ",            0x2002  },
-       { "|",                  "",             0       },
-       { "^",                  "",             0       },
-       { "&",                  "",             0       },
-       { "%",                  "",             0       },
+       { "0",                  ascii_nbrsp,    0x00a0  },
        { ":",                  ascii_break,    0       },
-       /* XXX The following three do not really belong here. */
-       { "t",                  "",             0       },
-       { "c",                  "",             0       },
-       { "}",                  "",             0       },
 
        /* Lines. */
        { "ba",                 "|",            0x007c  },
        { "br",                 "|",            0x2502  },
        { "ul",                 "_",            0x005f  },
+       { "_",                  "_",            0x005f  },
        { "ru",                 "_",            0x005f  },
        { "rn",                 "-",            0x203e  },
        { "bb",                 "|",            0x00a6  },
@@ -82,10 +77,10 @@ static struct ln lines[] = {
        { "sh",                 "#",            0x0023  },
        { "CR",                 "<cr>",         0x21b5  },
        { "OK",                 "\\/",          0x2713  },
-       { "CL",                 "<club>",       0x2663  },
-       { "SP",                 "<spade>",      0x2660  },
-       { "HE",                 "<heart>",      0x2665  },
-       { "DI",                 "<diamond>",    0x2666  },
+       { "CL",                 "C",            0x2663  },
+       { "SP",                 "S",            0x2660  },
+       { "HE",                 "H",            0x2665  },
+       { "DI",                 "D",            0x2666  },
 
        /* Legal symbols. */
        { "co",                 "(C)",          0x00a9  },
@@ -240,7 +235,7 @@ static struct ln lines[] = {
        { "Ah",                 "<Aleph>",      0x2135  },
        { "Im",                 "<Im>",         0x2111  },
        { "Re",                 "<Re>",         0x211c  },
-       { "wp",                 "P",            0x2118  },
+       { "wp",                 "p",            0x2118  },
        { "pd",                 "<del>",        0x2202  },
        { "-h",                 "/h",           0x210f  },
        { "hbar",               "/h",           0x210f  },
@@ -287,6 +282,7 @@ static struct ln lines[] = {
        { "ho",                 ",",            0x02db  },
        { "ha",                 "^",            0x005e  },
        { "ti",                 "~",            0x007e  },
+       { "u02DC",              "~",            0x02dc  },
 
        /* Accented letters. */
        { "'A",                 "'\bA",         0x00c1  },
@@ -294,11 +290,13 @@ static struct ln lines[] = {
        { "'I",                 "'\bI",         0x00cd  },
        { "'O",                 "'\bO",         0x00d3  },
        { "'U",                 "'\bU",         0x00da  },
+       { "'Y",                 "'\bY",         0x00dd  },
        { "'a",                 "'\ba",         0x00e1  },
        { "'e",                 "'\be",         0x00e9  },
        { "'i",                 "'\bi",         0x00ed  },
        { "'o",                 "'\bo",         0x00f3  },
        { "'u",                 "'\bu",         0x00fa  },
+       { "'y",                 "'\by",         0x00fd  },
        { "`A",                 "`\bA",         0x00c0  },
        { "`E",                 "`\bE",         0x00c8  },
        { "`I",                 "`\bI",         0x00cc  },
@@ -359,7 +357,7 @@ static struct ln lines[] = {
        { "Eu",                 "EUR",          0x20ac  },
        { "eu",                 "EUR",          0x20ac  },
        { "Ye",                 "=\bY",         0x00a5  },
-       { "Po",                 "GBP",          0x00a3  },
+       { "Po",                 "-\bL",         0x00a3  },
        { "Cs",                 "o\bx",         0x00a4  },
        { "Fn",                 ",\bf",         0x0192  },
 
@@ -460,7 +458,7 @@ mchars_spec2cp(const char *p, size_t sz)
 
        end = p + sz;
        ln = ohash_find(&mchars, ohash_qlookupi(&mchars, p, &end));
-       return ln != NULL ? ln->unicode : sz == 1 ? (unsigned char)*p : -1;
+       return ln != NULL ? ln->unicode : -1;
 }
 
 int
@@ -490,10 +488,8 @@ mchars_spec2str(const char *p, size_t sz, size_t *rsz)
 
        end = p + sz;
        ln = ohash_find(&mchars, ohash_qlookupi(&mchars, p, &end));
-       if (ln == NULL) {
-               *rsz = 1;
-               return sz == 1 ? p : NULL;
-       }
+       if (ln == NULL)
+               return NULL;
 
        *rsz = strlen(ln->ascii);
        return ln->ascii;