=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/mansearch.c,v retrieving revision 1.58 retrieving revision 1.59 diff -c -r1.58 -r1.59 *** src/usr.bin/mandoc/mansearch.c 2017/07/19 14:05:09 1.58 --- src/usr.bin/mandoc/mansearch.c 2017/08/02 13:28:35 1.59 *************** *** 1,4 **** ! /* $OpenBSD: mansearch.c,v 1.58 2017/07/19 14:05:09 schwarze Exp $ */ /* * Copyright (c) 2012 Kristaps Dzonsons * Copyright (c) 2013-2017 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: mansearch.c,v 1.59 2017/08/02 13:28:35 schwarze Exp $ */ /* * Copyright (c) 2012 Kristaps Dzonsons * Copyright (c) 2013-2017 Ingo Schwarze *************** *** 168,174 **** page = dbm_page_get(rp->page); if (lstmatch(search->sec, page->sect) == 0 || ! lstmatch(search->arch, page->arch) == 0) continue; if (res == NULL) { --- 168,176 ---- page = dbm_page_get(rp->page); if (lstmatch(search->sec, page->sect) == 0 || ! lstmatch(search->arch, page->arch) == 0 || ! (search->argmode == ARG_NAME && ! rp->bits <= (int32_t)(NAME_SYN & NAME_MASK))) continue; if (res == NULL) { *************** *** 449,462 **** { size_t sz; ! for (sz = 0;; sz++) { ! if (cp[0] == '\0') { ! if (cp[1] == '\0') ! break; ! sz += sep - 1; ! } else if (cp[0] < ' ') ! sz--; ! cp++; } return sz; } --- 451,478 ---- { size_t sz; ! for (sz = 0; *cp != '\0'; cp++) { ! ! /* Skip names appearing only in the SYNOPSIS. */ ! 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 (sz) ! sz += sep; ! ! /* Copy one string. */ ! while (*cp != '\0') { ! sz++; ! cp++; ! } } return sz; } *************** *** 468,486 **** static void lstcat(char *buf, size_t *i, const char *cp, const char *sep) { ! const char *s; ! for (;;) { ! if (cp[0] == '\0') { ! if (cp[1] == '\0') ! break; s = sep; while (*s != '\0') buf[(*i)++] = *s++; ! } else if (cp[0] >= ' ') ! buf[(*i)++] = cp[0]; ! cp++; } } /* --- 484,517 ---- static void lstcat(char *buf, size_t *i, const char *cp, const char *sep) { ! const char *s; ! size_t i_start; ! for (i_start = *i; *cp != '\0'; cp++) { ! ! /* Skip names appearing only in the SYNOPSIS. */ ! 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; while (*s != '\0') buf[(*i)++] = *s++; ! } ! ! /* Copy one string. */ ! while (*cp != '\0') ! buf[(*i)++] = *cp++; } + } /*