mansearch.c (cec8643b41ebefad6c677010fc784dc4bb0550f3) mansearch.c (4d131170e62381276a07ffc0aeb1b62e527d940c)
1/* $Id: mansearch.c,v 1.80 2018/12/13 11:55:46 schwarze Exp $ */
1/* $Id: mansearch.c,v 1.82 2019/07/01 22:56:24 schwarze Exp $ */
2/*
3 * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv>
4 * Copyright (c) 2013-2018 Ingo Schwarze <schwarze@openbsd.org>
5 *
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *

--- 184 unchanged lines hidden (view full) ---

194 "bogus %s entry, run makewhatis %s",
195 page->file + 1, paths->paths[i]);
196 free(mpage->file);
197 free(rp);
198 continue;
199 }
200 mpage->names = buildnames(page);
201 mpage->output = buildoutput(outkey, page);
2/*
3 * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv>
4 * Copyright (c) 2013-2018 Ingo Schwarze <schwarze@openbsd.org>
5 *
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *

--- 184 unchanged lines hidden (view full) ---

194 "bogus %s entry, run makewhatis %s",
195 page->file + 1, paths->paths[i]);
196 free(mpage->file);
197 free(rp);
198 continue;
199 }
200 mpage->names = buildnames(page);
201 mpage->output = buildoutput(outkey, page);
202 mpage->bits = search->firstmatch ? rp->bits : 0;
202 mpage->ipath = i;
203 mpage->sec = *page->sect - '0';
204 if (mpage->sec < 0 || mpage->sec > 9)
205 mpage->sec = 10;
206 mpage->form = *page->file;
207 free(rp);
208 cur++;
209 }

--- 79 unchanged lines hidden (view full) ---

289 */
290
291 for (;;) {
292 res = dbm_page_next();
293 if (res.page == -1)
294 break;
295 slot = ohash_lookup_memory(htab,
296 (char *)&res, sizeof(res.page), res.page);
203 mpage->ipath = i;
204 mpage->sec = *page->sect - '0';
205 if (mpage->sec < 0 || mpage->sec > 9)
206 mpage->sec = 10;
207 mpage->form = *page->file;
208 free(rp);
209 cur++;
210 }

--- 79 unchanged lines hidden (view full) ---

290 */
291
292 for (;;) {
293 res = dbm_page_next();
294 if (res.page == -1)
295 break;
296 slot = ohash_lookup_memory(htab,
297 (char *)&res, sizeof(res.page), res.page);
297 if ((rp = ohash_find(htab, slot)) != NULL)
298 if ((rp = ohash_find(htab, slot)) != NULL) {
299 rp->bits |= res.bits;
298 continue;
300 continue;
301 }
299 rp = mandoc_malloc(sizeof(*rp));
300 *rp = res;
301 ohash_insert(htab, slot, rp);
302 }
303 }
304 return htab;
305}
306

--- 96 unchanged lines hidden (view full) ---

403{
404 const struct manpage *mp1, *mp2;
405 const char *cp1, *cp2;
406 size_t sz1, sz2;
407 int diff;
408
409 mp1 = vp1;
410 mp2 = vp2;
302 rp = mandoc_malloc(sizeof(*rp));
303 *rp = res;
304 ohash_insert(htab, slot, rp);
305 }
306 }
307 return htab;
308}
309

--- 96 unchanged lines hidden (view full) ---

406{
407 const struct manpage *mp1, *mp2;
408 const char *cp1, *cp2;
409 size_t sz1, sz2;
410 int diff;
411
412 mp1 = vp1;
413 mp2 = vp2;
411 if ((diff = mp1->sec - mp2->sec))
414 if ((diff = mp2->bits - mp1->bits) ||
415 (diff = mp1->sec - mp2->sec))
412 return diff;
413
414 /* Fall back to alphabetic ordering of names. */
415 sz1 = strcspn(mp1->names, "(");
416 sz2 = strcspn(mp2->names, "(");
417 if (sz1 < sz2)
418 sz1 = sz2;
419 if ((diff = strncasecmp(mp1->names, mp2->names, sz1)))

--- 428 unchanged lines hidden ---
416 return diff;
417
418 /* Fall back to alphabetic ordering of names. */
419 sz1 = strcspn(mp1->names, "(");
420 sz2 = strcspn(mp2->names, "(");
421 if (sz1 < sz2)
422 sz1 = sz2;
423 if ((diff = strncasecmp(mp1->names, mp2->names, sz1)))

--- 428 unchanged lines hidden ---