version 1.79, 2018/11/22 12:01:46 |
version 1.84, 2023/04/28 19:11:03 |
|
|
/* $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> |
|
|
#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) |