From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from scc-mailout-kit-01.scc.kit.edu (scc-mailout-kit-01.scc.kit.edu [129.13.231.81]) by fantadrom.bsd.lv (OpenSMTPD) with ESMTP id f94195d3 for ; Thu, 22 Nov 2018 07:49:24 -0500 (EST) Received: from asta-nat.asta.uni-karlsruhe.de ([172.22.63.82] helo=hekate.usta.de) by scc-mailout-kit-01.scc.kit.edu with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (envelope-from ) id 1gPnpV-0007mU-68; Thu, 22 Nov 2018 13:11:46 +0100 Received: from donnerwolke.usta.de ([172.24.96.3]) by hekate.usta.de with esmtp (Exim 4.77) (envelope-from ) id 1gPnpT-0005Rf-QI; Thu, 22 Nov 2018 13:11:31 +0100 Received: from athene.usta.de ([172.24.96.10]) by donnerwolke.usta.de with esmtp (Exim 4.84_2) (envelope-from ) id 1gPnpT-0000jn-Kn; Thu, 22 Nov 2018 13:11:31 +0100 Received: from localhost (athene.usta.de [local]) by athene.usta.de (OpenSMTPD) with ESMTPA id bbcef4a5; Thu, 22 Nov 2018 13:11:31 +0100 (CET) Date: Thu, 22 Nov 2018 13:11:31 +0100 From: Ingo Schwarze To: Yuri Pankov Cc: discuss@mandoc.bsd.lv, Edward Tomasz Napierala Subject: Re: using "bits" comparison in manpage_compare() Message-ID: <20181122121131.GB35604@athene.usta.de> References: X-Mailinglist: mandoc-discuss Reply-To: discuss@mandoc.bsd.lv MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.8.0 (2017-02-23) Hi Yuri, hi Edward, Yuri Pankov wrote on Tue, Oct 30, 2018 at 01:41:23AM +0300: > It looks like using "bits" comparison in manpage_compare() leads to > somewhat inconsistent output sorting for apropos(1), reported as > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=227408. > > So I've proposed the change below as a "fix", any thoughts on it? I think you are right, the feature wasn't even documented. Besides, i have been trying to gradually reduce the importance of the .Nm bits magic over the years, it is less useful than we originally thought, and it tends to cause confusion. Thanks for the suggestion, Ingo Log Message: ----------- In apropos(1) output, stop sorting .Nm search results by name priorities (bits). The obscure feature wasn't documented and merely confused people - for example Edward Tomasz Napierala , see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=227408. Smaller patch provided by Yuri Pankov , but i'm also retiring the now unused "bits" member from struct manpage. Simplification is good. Modified Files: -------------- mandoc: main.c mansearch.c mansearch.h Revision Data ------------- Index: main.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/main.c,v retrieving revision 1.309 retrieving revision 1.310 diff -Lmain.c -Lmain.c -u -p -r1.309 -r1.310 --- main.c +++ main.c @@ -405,7 +405,6 @@ main(int argc, char *argv[]) res[sz].names = NULL; res[sz].output = NULL; res[sz].ipath = SIZE_MAX; - res[sz].bits = 0; res[sz].sec = 10; res[sz].form = FORM_SRC; sz++; @@ -754,7 +753,6 @@ found: page->names = NULL; page->output = NULL; page->ipath = ipath; - page->bits = NAME_FILE & NAME_MASK; page->sec = (*sec >= '1' && *sec <= '9') ? *sec - '1' + 1 : 10; page->form = form; return 1; Index: mansearch.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/mansearch.c,v retrieving revision 1.78 retrieving revision 1.79 diff -Lmansearch.c -Lmansearch.c -u -p -r1.78 -r1.79 --- mansearch.c +++ mansearch.c @@ -201,7 +201,6 @@ mansearch(const struct mansearch *search mpage->names = buildnames(page); mpage->output = buildoutput(outkey, page); mpage->ipath = i; - mpage->bits = rp->bits; mpage->sec = *page->sect - '0'; if (mpage->sec < 0 || mpage->sec > 9) mpage->sec = 10; @@ -296,10 +295,8 @@ manmerge_term(struct expr *e, struct oha break; slot = ohash_lookup_memory(htab, (char *)&res, sizeof(res.page), res.page); - if ((rp = ohash_find(htab, slot)) != NULL) { - rp->bits |= res.bits; + if ((rp = ohash_find(htab, slot)) != NULL) continue; - } rp = mandoc_malloc(sizeof(*rp)); *rp = res; ohash_insert(htab, slot, rp); @@ -412,8 +409,7 @@ manpage_compare(const void *vp1, const v mp1 = vp1; mp2 = vp2; - if ((diff = mp2->bits - mp1->bits) || - (diff = mp1->sec - mp2->sec)) + if ((diff = mp1->sec - mp2->sec)) return diff; /* Fall back to alphabetic ordering of names. */ Index: mansearch.h =================================================================== RCS file: /home/cvs/mandoc/mandoc/mansearch.h,v retrieving revision 1.28 retrieving revision 1.29 diff -Lmansearch.h -Lmansearch.h -u -p -r1.28 -r1.29 --- mansearch.h +++ mansearch.h @@ -93,7 +93,6 @@ struct manpage { char *names; /* a list of names with sections */ char *output; /* user-defined additional output */ size_t ipath; /* number of the manpath */ - uint64_t bits; /* name type mask */ int sec; /* section number, 10 means invalid */ enum form form; }; -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv