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 --- |