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

Diff for /mandoc/chars.c between version 1.74 and 1.79

version 1.74, 2018/08/19 23:48:36 version 1.79, 2020/02/13 16:18:29
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       },  
         { "%",                  "",             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 83  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 241  static struct ln lines[] = {
Line 235  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 288  static struct ln lines[] = {
Line 282  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 295  static struct ln lines[] = {
Line 290  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 360  static struct ln lines[] = {
Line 357  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 461  mchars_spec2cp(const char *p, size_t sz)
Line 458  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 491  mchars_spec2str(const char *p, size_t sz, size_t *rsz)
Line 488  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.74  
changed lines
  Added in v.1.79

CVSweb