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

Diff for /mandoc/tag.c between version 1.14 and 1.16

version 1.14, 2016/11/08 15:28:17 version 1.16, 2016/11/08 16:23:58
Line 130  tag_put(const char *s, int prio, size_t line)
Line 130  tag_put(const char *s, int prio, size_t line)
         size_t                   len;          size_t                   len;
         unsigned int             slot;          unsigned int             slot;
   
         if (tag_files.tfd <= 0 || strchr(s, ' ') != NULL)          /* Sanity checks. */
   
           if (tag_files.tfd <= 0)
                 return;                  return;
           if (s[0] == '\\' && (s[1] == '&' || s[1] == 'e'))
                   s += 2;
           if (*s == '\0' || strchr(s, ' ') != NULL)
                   return;
   
         slot = ohash_qlookup(&tag_data, s);          slot = ohash_qlookup(&tag_data, s);
         entry = ohash_find(&tag_data, slot);          entry = ohash_find(&tag_data, slot);
Line 149  tag_put(const char *s, int prio, size_t line)
Line 155  tag_put(const char *s, int prio, size_t line)
   
         } else {          } else {
   
                   /* Handle priority 0 entries. */
   
                   if (prio == 0) {
                           if (entry->prio == 0)
                                   entry->prio = -1;
                           return;
                   }
   
                 /* A better entry is already present, ignore the new one. */                  /* A better entry is already present, ignore the new one. */
   
                 if (entry->prio < prio)                  if (entry->prio > 0 && entry->prio < prio)
                         return;                          return;
   
                 /* The existing entry is worse, clear it. */                  /* The existing entry is worse, clear it. */
   
                 if (entry->prio > prio)                  if (entry->prio < 1 || entry->prio > prio)
                         entry->nlines = 0;                          entry->nlines = 0;
         }          }
   
Line 188  tag_write(void)
Line 202  tag_write(void)
         stream = fdopen(tag_files.tfd, "w");          stream = fdopen(tag_files.tfd, "w");
         entry = ohash_first(&tag_data, &slot);          entry = ohash_first(&tag_data, &slot);
         while (entry != NULL) {          while (entry != NULL) {
                 if (stream != NULL)                  if (stream != NULL && entry->prio >= 0)
                         for (i = 0; i < entry->nlines; i++)                          for (i = 0; i < entry->nlines; i++)
                                 fprintf(stream, "%s %s %zu\n",                                  fprintf(stream, "%s %s %zu\n",
                                     entry->s, tag_files.ofn, entry->lines[i]);                                      entry->s, tag_files.ofn, entry->lines[i]);

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.16

CVSweb