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

Diff for /mandoc/mansearch.c between version 1.79 and 1.84

version 1.79, 2018/11/22 12:01:46 version 1.84, 2023/04/28 19:11:03
Line 1 
Line 1 
 /*      $Id$ */  /* $Id$ */
 /*  /*
  * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2013-2018 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2013-2018 Ingo Schwarze <schwarze@openbsd.org>
Line 36 
Line 36 
 #include <string.h>  #include <string.h>
 #include <unistd.h>  #include <unistd.h>
   
 #include "mandoc.h"  
 #include "mandoc_aux.h"  #include "mandoc_aux.h"
 #include "mandoc_ohash.h"  #include "mandoc_ohash.h"
 #include "manconf.h"  #include "manconf.h"
Line 192  mansearch(const struct mansearch *search,
Line 191  mansearch(const struct mansearch *search,
                             mpage->file, R_OK) == -1) {                              mpage->file, R_OK) == -1) {
                                 warn("%s", mpage->file);                                  warn("%s", mpage->file);
                                 warnx("outdated mandoc.db contains "                                  warnx("outdated mandoc.db contains "
                                     "bogus %s entry, run makewhatis %s",                                      "bogus %s entry, run makewhatis %s",
                                     page->file + 1, paths->paths[i]);                                      page->file + 1, paths->paths[i]);
                                 free(mpage->file);                                  free(mpage->file);
                                 free(rp);                                  free(rp);
Line 200  mansearch(const struct mansearch *search,
Line 199  mansearch(const struct mansearch *search,
                         }                          }
                         mpage->names = buildnames(page);                          mpage->names = buildnames(page);
                         mpage->output = buildoutput(outkey, page);                          mpage->output = buildoutput(outkey, page);
                           mpage->bits = search->firstmatch ? rp->bits : 0;
                         mpage->ipath = i;                          mpage->ipath = i;
                         mpage->sec = *page->sect - '0';                          mpage->sec = *page->sect - '0';
                         if (mpage->sec < 0 || mpage->sec > 9)                          if (mpage->sec < 0 || mpage->sec > 9)
Line 220  mansearch(const struct mansearch *search,
Line 220  mansearch(const struct mansearch *search,
                 if (cur && search->firstmatch)                  if (cur && search->firstmatch)
                         break;                          break;
         }          }
         if (res != NULL)          if (res != NULL && cur > 1)
                 qsort(*res, cur, sizeof(struct manpage), manpage_compare);                  qsort(*res, cur, sizeof(struct manpage), manpage_compare);
         if (chdir_status && getcwd_status && chdir(buf) == -1)          if (chdir_status && getcwd_status && chdir(buf) == -1)
                 warn("%s", buf);                  warn("%s", buf);
Line 295  manmerge_term(struct expr *e, struct ohash *htab)
Line 295  manmerge_term(struct expr *e, struct ohash *htab)
                                 break;                                  break;
                         slot = ohash_lookup_memory(htab,                          slot = ohash_lookup_memory(htab,
                             (char *)&res, sizeof(res.page), res.page);                              (char *)&res, sizeof(res.page), res.page);
                         if ((rp = ohash_find(htab, slot)) != NULL)                          if ((rp = ohash_find(htab, slot)) != NULL) {
                                   rp->bits |= res.bits;
                                 continue;                                  continue;
                           }
                         rp = mandoc_malloc(sizeof(*rp));                          rp = mandoc_malloc(sizeof(*rp));
                         *rp = res;                          *rp = res;
                         ohash_insert(htab, slot, rp);                          ohash_insert(htab, slot, rp);
Line 409  manpage_compare(const void *vp1, const void *vp2)
Line 411  manpage_compare(const void *vp1, const void *vp2)
   
         mp1 = vp1;          mp1 = vp1;
         mp2 = vp2;          mp2 = vp2;
         if ((diff = mp1->sec - mp2->sec))          if ((diff = mp2->bits - mp1->bits) ||
               (diff = mp1->sec - mp2->sec))
                 return diff;                  return diff;
   
         /* Fall back to alphabetic ordering of names. */          /* Fall back to alphabetic ordering of names. */
Line 488  lstlen(const char *cp, size_t sep)
Line 491  lstlen(const char *cp, size_t sep)
   
 /*  /*
  * Print the NUL-terminated list of NUL-terminated strings   * Print the NUL-terminated list of NUL-terminated strings
  * into the buffer, seperating strings with sep.   * into the buffer, separating strings with sep.
  */   */
 static void  static void
 lstcat(char *buf, size_t *i, const char *cp, const char *sep)  lstcat(char *buf, size_t *i, const char *cp, const char *sep)

Legend:
Removed from v.1.79  
changed lines
  Added in v.1.84

CVSweb