[BACK]Return to chars.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/chars.c between version 1.72 and 1.81

version 1.72, 2017/08/23 10:50:15 version 1.81, 2022/06/26 20:33:43
Line 1 
Line 1 
 /*      $Id$ */  /* $Id$ */
 /*  /*
  * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>   * 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   * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
Line 23 
Line 24 
 #include <ctype.h>  #include <ctype.h>
 #include <stddef.h>  #include <stddef.h>
 #include <stdint.h>  #include <stdint.h>
   #include <stdio.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
   
Line 46  static struct ln lines[] = {
Line 48  static struct ln lines[] = {
         /* Spacing. */          /* Spacing. */
         { " ",                  ascii_nbrsp,    0x00a0  },          { " ",                  ascii_nbrsp,    0x00a0  },
         { "~",                  ascii_nbrsp,    0x00a0  },          { "~",                  ascii_nbrsp,    0x00a0  },
         { "0",                  " ",            0x2002  },          { "0",                  ascii_nbrsp,    0x00a0  },
         { "|",                  "",             0       },  
         { "^",                  "",             0       },  
         { "&",                  "",             0       },  
         { "%",                  "",             0       },  
         { ":",                  ascii_break,    0       },          { ":",                  ascii_break,    0       },
         /* XXX The following three do not really belong here. */  
         { "t",                  "",             0       },  
         { "c",                  "",             0       },  
         { "}",                  "",             0       },  
   
         /* Lines. */          /* Lines. */
         { "ba",                 "|",            0x007c  },          { "ba",                 "|",            0x007c  },
         { "br",                 "|",            0x2502  },          { "br",                 "|",            0x2502  },
         { "ul",                 "_",            0x005f  },          { "ul",                 "_",            0x005f  },
           { "_",                  "_",            0x005f  },
         { "ru",                 "_",            0x005f  },          { "ru",                 "_",            0x005f  },
         { "rn",                 "-",            0x203e  },          { "rn",                 "-",            0x203e  },
         { "bb",                 "|",            0x00a6  },          { "bb",                 "|",            0x00a6  },
Line 82  static struct ln lines[] = {
Line 77  static struct ln lines[] = {
         { "sh",                 "#",            0x0023  },          { "sh",                 "#",            0x0023  },
         { "CR",                 "<cr>",         0x21b5  },          { "CR",                 "<cr>",         0x21b5  },
         { "OK",                 "\\/",          0x2713  },          { "OK",                 "\\/",          0x2713  },
         { "CL",                 "<club>",       0x2663  },          { "CL",                 "C",            0x2663  },
         { "SP",                 "<spade>",      0x2660  },          { "SP",                 "S",            0x2660  },
         { "HE",                 "<heart>",      0x2665  },          { "HE",                 "H",            0x2665  },
         { "DI",                 "<diamond>",    0x2666  },          { "DI",                 "D",            0x2666  },
   
         /* Legal symbols. */          /* Legal symbols. */
         { "co",                 "(C)",          0x00a9  },          { "co",                 "(C)",          0x00a9  },
Line 97  static struct ln lines[] = {
Line 92  static struct ln lines[] = {
         { "en",                 "-",            0x2013  },          { "en",                 "-",            0x2013  },
         { "hy",                 "-",            0x2010  },          { "hy",                 "-",            0x2010  },
         { "e",                  "\\",           0x005c  },          { "e",                  "\\",           0x005c  },
         { ".",                  ".",            0x002e  },  
         { "r!",                 "!",            0x00a1  },          { "r!",                 "!",            0x00a1  },
         { "r?",                 "?",            0x00bf  },          { "r?",                 "?",            0x00bf  },
   
Line 215  static struct ln lines[] = {
Line 209  static struct ln lines[] = {
         { "mo",                 "<element\037of>", 0x2208 },          { "mo",                 "<element\037of>", 0x2208 },
         { "nm",                 "<not\037element\037of>", 0x2209 },          { "nm",                 "<not\037element\037of>", 0x2209 },
         { "sb",                 "<proper\037subset>", 0x2282 },          { "sb",                 "<proper\037subset>", 0x2282 },
         { "nb",                 "(!=",          0x2284  },          { "nb",                 "<not\037subset>", 0x2284 },
         { "sp",                 "<proper\037superset>", 0x2283 },          { "sp",                 "<proper\037superset>", 0x2283 },
         { "nc",                 "!=)",          0x2285  },          { "nc",                 "<not\037superset>", 0x2285 },
         { "ib",                 "<subset\037or\037equal>", 0x2286 },          { "ib",                 "<subset\037or\037equal>", 0x2286 },
         { "ip",                 "<superset\037or\037equal>", 0x2287 },          { "ip",                 "<superset\037or\037equal>", 0x2287 },
         { "ca",                 "<intersection>", 0x2229 },          { "ca",                 "<intersection>", 0x2229 },
Line 225  static struct ln lines[] = {
Line 219  static struct ln lines[] = {
         { "/_",                 "<angle>",      0x2220  },          { "/_",                 "<angle>",      0x2220  },
         { "pp",                 "<perpendicular>", 0x22a5 },          { "pp",                 "<perpendicular>", 0x22a5 },
         { "is",                 "<integral>",   0x222b  },          { "is",                 "<integral>",   0x222b  },
         { "integral",           "'\b,\bI",      0x222b  },          { "integral",           "<integral>",   0x222b  },
         { "sum",                "E",            0x2211  },          { "sum",                "<sum>",        0x2211  },
         { "product",            "TT",           0x220f  },          { "product",            "<product>",    0x220f  },
         { "coproduct",          "U",            0x2210  },          { "coproduct",          "<coproduct>",  0x2210  },
         { "gr",                 "<nabla>",      0x2207  },          { "gr",                 "<nabla>",      0x2207  },
         { "sr",                 "<sqrt>",       0x221a  },          { "sr",                 "<sqrt>",       0x221a  },
         { "sqrt",               "\\/",          0x221a  },          { "sqrt",               "<sqrt>",       0x221a  },
         { "lc",                 "|~",           0x2308  },          { "lc",                 "|~",           0x2308  },
         { "rc",                 "~|",           0x2309  },          { "rc",                 "~|",           0x2309  },
         { "lf",                 "|_",           0x230a  },          { "lf",                 "|_",           0x230a  },
Line 240  static struct ln lines[] = {
Line 234  static struct ln lines[] = {
         { "Ah",                 "<Aleph>",      0x2135  },          { "Ah",                 "<Aleph>",      0x2135  },
         { "Im",                 "<Im>",         0x2111  },          { "Im",                 "<Im>",         0x2111  },
         { "Re",                 "<Re>",         0x211c  },          { "Re",                 "<Re>",         0x211c  },
         { "wp",                 "P",            0x2118  },          { "wp",                 "p",            0x2118  },
         { "pd",                 "<del>",        0x2202  },          { "pd",                 "<del>",        0x2202  },
         { "-h",                 "/h",           0x210f  },          { "-h",                 "/h",           0x210f  },
         { "hbar",               "/h",           0x210f  },          { "hbar",               "/h",           0x210f  },
Line 287  static struct ln lines[] = {
Line 281  static struct ln lines[] = {
         { "ho",                 ",",            0x02db  },          { "ho",                 ",",            0x02db  },
         { "ha",                 "^",            0x005e  },          { "ha",                 "^",            0x005e  },
         { "ti",                 "~",            0x007e  },          { "ti",                 "~",            0x007e  },
           { "u02DC",              "~",            0x02dc  },
   
         /* Accented letters. */          /* Accented letters. */
         { "'A",                 "'\bA",         0x00c1  },          { "'A",                 "'\bA",         0x00c1  },
Line 294  static struct ln lines[] = {
Line 289  static struct ln lines[] = {
         { "'I",                 "'\bI",         0x00cd  },          { "'I",                 "'\bI",         0x00cd  },
         { "'O",                 "'\bO",         0x00d3  },          { "'O",                 "'\bO",         0x00d3  },
         { "'U",                 "'\bU",         0x00da  },          { "'U",                 "'\bU",         0x00da  },
           { "'Y",                 "'\bY",         0x00dd  },
         { "'a",                 "'\ba",         0x00e1  },          { "'a",                 "'\ba",         0x00e1  },
         { "'e",                 "'\be",         0x00e9  },          { "'e",                 "'\be",         0x00e9  },
         { "'i",                 "'\bi",         0x00ed  },          { "'i",                 "'\bi",         0x00ed  },
         { "'o",                 "'\bo",         0x00f3  },          { "'o",                 "'\bo",         0x00f3  },
         { "'u",                 "'\bu",         0x00fa  },          { "'u",                 "'\bu",         0x00fa  },
           { "'y",                 "'\by",         0x00fd  },
         { "`A",                 "`\bA",         0x00c0  },          { "`A",                 "`\bA",         0x00c0  },
         { "`E",                 "`\bE",         0x00c8  },          { "`E",                 "`\bE",         0x00c8  },
         { "`I",                 "`\bI",         0x00cc  },          { "`I",                 "`\bI",         0x00cc  },
Line 359  static struct ln lines[] = {
Line 356  static struct ln lines[] = {
         { "Eu",                 "EUR",          0x20ac  },          { "Eu",                 "EUR",          0x20ac  },
         { "eu",                 "EUR",          0x20ac  },          { "eu",                 "EUR",          0x20ac  },
         { "Ye",                 "=\bY",         0x00a5  },          { "Ye",                 "=\bY",         0x00a5  },
         { "Po",                 "GBP",          0x00a3  },          { "Po",                 "-\bL",         0x00a3  },
         { "Cs",                 "o\bx",         0x00a4  },          { "Cs",                 "o\bx",         0x00a4  },
         { "Fn",                 ",\bf",         0x0192  },          { "Fn",                 ",\bf",         0x0192  },
   
Line 367  static struct ln lines[] = {
Line 364  static struct ln lines[] = {
         { "de",                 "<degree>",     0x00b0  },          { "de",                 "<degree>",     0x00b0  },
         { "%0",                 "<permille>",   0x2030  },          { "%0",                 "<permille>",   0x2030  },
         { "fm",                 "\'",           0x2032  },          { "fm",                 "\'",           0x2032  },
         { "sd",                 "''",           0x2033  },          { "sd",                 "\"",           0x2033  },
         { "mc",                 "<micro>",      0x00b5  },          { "mc",                 "<micro>",      0x00b5  },
         { "Of",                 "_\ba",         0x00aa  },          { "Of",                 "_\ba",         0x00aa  },
         { "Om",                 "_\bo",         0x00ba  },          { "Om",                 "_\bo",         0x00ba  },
Line 460  mchars_spec2cp(const char *p, size_t sz)
Line 457  mchars_spec2cp(const char *p, size_t sz)
   
         end = p + sz;          end = p + sz;
         ln = ohash_find(&mchars, ohash_qlookupi(&mchars, p, &end));          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  int
Line 490  mchars_spec2str(const char *p, size_t sz, size_t *rsz)
Line 487  mchars_spec2str(const char *p, size_t sz, size_t *rsz)
   
         end = p + sz;          end = p + sz;
         ln = ohash_find(&mchars, ohash_qlookupi(&mchars, p, &end));          ln = ohash_find(&mchars, ohash_qlookupi(&mchars, p, &end));
         if (ln == NULL) {          if (ln == NULL)
                 *rsz = 1;                  return NULL;
                 return sz == 1 ? p : NULL;  
         }  
   
         *rsz = strlen(ln->ascii);          *rsz = strlen(ln->ascii);
         return ln->ascii;          return ln->ascii;

Legend:
Removed from v.1.72  
changed lines
  Added in v.1.81

CVSweb