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

Diff for /mandoc/Attic/hash.c between version 1.5 and 1.8

version 1.5, 2009/01/20 13:44:05 version 1.8, 2009/03/08 20:29:45
Line 28 
Line 28 
 /*  /*
  * Routines for the perfect-hash hashtable used by the parser to look up   * Routines for the perfect-hash hashtable used by the parser to look up
  * tokens by their string-ified names (`.Fl' -> MDOC_Fl).  The   * tokens by their string-ified names (`.Fl' -> MDOC_Fl).  The
  * allocation penalty for this is 27 * 26 * sizeof(ptr).   * allocation penalty for this is 27 * 26 * sizeof(ptr).
  */   */
   
   
 void  void
 mdoc_tokhash_free(void *htab)  mdoc_tokhash_free(void *htab)
 {  {
Line 96  mdoc_tokhash_find(const void *arg, const char *tmp)
Line 95  mdoc_tokhash_find(const void *arg, const char *tmp)
   
         if (0 == tmp[0] || 0 == tmp[1])          if (0 == tmp[0] || 0 == tmp[1])
                 return(MDOC_MAX);                  return(MDOC_MAX);
           if (tmp[2] && tmp[3])
                   return(MDOC_MAX);
   
         if ( ! (tmp[0] == 37 || (tmp[0] >= 65 && tmp[0] <= 90)))          if ( ! (tmp[0] == 37 || (tmp[0] >= 65 && tmp[0] <= 90)))
                 return(MDOC_MAX);                  return(MDOC_MAX);
Line 129  mdoc_tokhash_find(const void *arg, const char *tmp)
Line 130  mdoc_tokhash_find(const void *arg, const char *tmp)
         assert(0 == (size_t)slot % sizeof(struct mdoc_macro));          assert(0 == (size_t)slot % sizeof(struct mdoc_macro));
         slot /= sizeof(struct mdoc_macro);          slot /= sizeof(struct mdoc_macro);
   
         if (0 != strcmp(mdoc_macronames[slot], tmp))          if (0 == tmp[2])
                 return(MDOC_MAX);                  return(slot);
         return(slot);  
           assert(0 == tmp[3]);
           return(tmp[2] == mdoc_macronames[slot][2] ? slot : MDOC_MAX);
 }  }
   

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.8

CVSweb