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

Diff for /mandoc/mansearch.c between version 1.75 and 1.76

version 1.75, 2017/07/19 14:05:13 version 1.76, 2017/08/02 13:29:04
Line 1 
Line 1 
 /*      $OpenBSD$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2013-2017 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2013-2017 Ingo Schwarze <schwarze@openbsd.org>
Line 171  mansearch(const struct mansearch *search,
Line 171  mansearch(const struct mansearch *search,
                         page = dbm_page_get(rp->page);                          page = dbm_page_get(rp->page);
   
                         if (lstmatch(search->sec, page->sect) == 0 ||                          if (lstmatch(search->sec, page->sect) == 0 ||
                             lstmatch(search->arch, page->arch) == 0)                              lstmatch(search->arch, page->arch) == 0 ||
                               (search->argmode == ARG_NAME &&
                                rp->bits <= (int32_t)(NAME_SYN & NAME_MASK)))
                                 continue;                                  continue;
   
                         if (res == NULL) {                          if (res == NULL) {
Line 452  lstlen(const char *cp, size_t sep)
Line 454  lstlen(const char *cp, size_t sep)
 {  {
         size_t   sz;          size_t   sz;
   
         for (sz = 0;; sz++) {          for (sz = 0; *cp != '\0'; cp++) {
                 if (cp[0] == '\0') {  
                         if (cp[1] == '\0')                  /* Skip names appearing only in the SYNOPSIS. */
                                 break;                  if (*cp <= (char)(NAME_SYN & NAME_MASK)) {
                         sz += sep - 1;                          while (*cp != '\0')
                 } else if (cp[0] < ' ')                                  cp++;
                         sz--;                          continue;
                 cp++;                  }
   
                   /* Skip name class markers. */
                   if (*cp < ' ')
                           cp++;
   
                   /* Print a separator before each but the first string. */
                   if (sz)
                           sz += sep;
   
                   /* Copy one string. */
                   while (*cp != '\0') {
                           sz++;
                           cp++;
                   }
         }          }
         return sz;          return sz;
 }  }
Line 471  lstlen(const char *cp, size_t sep)
Line 487  lstlen(const char *cp, size_t 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)
 {  {
         const char *s;          const char      *s;
           size_t           i_start;
   
         for (;;) {          for (i_start = *i; *cp != '\0'; cp++) {
                 if (cp[0] == '\0') {  
                         if (cp[1] == '\0')                  /* Skip names appearing only in the SYNOPSIS. */
                                 break;                  if (*cp <= (char)(NAME_SYN & NAME_MASK)) {
                           while (*cp != '\0')
                                   cp++;
                           continue;
                   }
   
                   /* Skip name class markers. */
                   if (*cp < ' ')
                           cp++;
   
                   /* Print a separator before each but the first string. */
                   if (*i > i_start) {
                         s = sep;                          s = sep;
                         while (*s != '\0')                          while (*s != '\0')
                                 buf[(*i)++] = *s++;                                  buf[(*i)++] = *s++;
                 } else if (cp[0] >= ' ')                  }
                         buf[(*i)++] = cp[0];  
                 cp++;                  /* Copy one string. */
                   while (*cp != '\0')
                           buf[(*i)++] = *cp++;
         }          }
   
 }  }
   
 /*  /*

Legend:
Removed from v.1.75  
changed lines
  Added in v.1.76

CVSweb