Print this page
5051 import mdocml-1.12.3
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Approved by: TBD

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/mandoc/chars.c
          +++ new/usr/src/cmd/mandoc/chars.c
   1      -/*      $Id: chars.c,v 1.52 2011/11/08 00:15:23 kristaps Exp $ */
        1 +/*      $Id: chars.c,v 1.54 2013/06/20 22:39:30 schwarze Exp $ */
   2    2  /*
   3    3   * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
   4    4   * Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org>
   5    5   *
   6    6   * Permission to use, copy, modify, and distribute this software for any
   7    7   * purpose with or without fee is hereby granted, provided that the above
   8    8   * copyright notice and this permission notice appear in all copies.
   9    9   *
  10   10   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  11   11   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
↓ open down ↓ 18 lines elided ↑ open up ↑
  30   30  #define PRINT_HI         126
  31   31  #define PRINT_LO         32
  32   32  
  33   33  struct  ln {
  34   34          struct ln        *next;
  35   35          const char       *code;
  36   36          const char       *ascii;
  37   37          int               unicode;
  38   38  };
  39   39  
  40      -#define LINES_MAX         328
       40 +#define LINES_MAX         329
  41   41  
  42   42  #define CHAR(in, ch, code) \
  43   43          { NULL, (in), (ch), (code) },
  44   44  
  45   45  #define CHAR_TBL_START    static struct ln lines[LINES_MAX] = {
  46   46  #define CHAR_TBL_END      };
  47   47  
  48   48  #include "chars.in"
  49   49  
  50   50  struct  mchars {
↓ open down ↓ 19 lines elided ↑ open up ↑
  70   70          struct ln        *pp;
  71   71          int               i, hash;
  72   72  
  73   73          /*
  74   74           * Constructs a very basic chaining hashtable.  The hash routine
  75   75           * is simply the integral value of the first character.
  76   76           * Subsequent entries are chained in the order they're processed.
  77   77           */
  78   78  
  79   79          tab = mandoc_malloc(sizeof(struct mchars));
  80      -        htab = mandoc_calloc(PRINT_HI - PRINT_LO + 1, sizeof(struct ln **));
       80 +        htab = mandoc_calloc(PRINT_HI - PRINT_LO + 1, sizeof(struct ln *));
  81   81  
  82   82          for (i = 0; i < LINES_MAX; i++) {
  83   83                  hash = (int)lines[i].code[0] - PRINT_LO;
  84   84  
  85   85                  if (NULL == (pp = htab[hash])) {
  86   86                          htab[hash] = &lines[i];
  87   87                          continue;
  88   88                  }
  89   89  
  90   90                  for ( ; pp->next; pp = pp->next)
↓ open down ↓ 77 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX