From: Ingo Schwarze <schwarze@usta.de>
To: Yuri Pankov <yuripv@yuripv.net>
Cc: discuss@mandoc.bsd.lv, Edward Tomasz Napierala <trasz@FreeBSD.org>
Subject: Re: using "bits" comparison in manpage_compare()
Date: Thu, 22 Nov 2018 13:11:31 +0100 [thread overview]
Message-ID: <20181122121131.GB35604@athene.usta.de> (raw)
In-Reply-To: <ccbfd775-6f30-1e33-d919-17698a084095@yuripv.net>
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 <trasz at
FreeBSD>, see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=227408.
Smaller patch provided by Yuri Pankov <yuripv at FreeBSD>, 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
prev parent reply other threads:[~2018-11-22 12:49 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-29 22:41 Yuri Pankov
2018-11-21 15:17 ` Yuri Pankov
2018-11-22 12:11 ` Ingo Schwarze [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181122121131.GB35604@athene.usta.de \
--to=schwarze@usta.de \
--cc=discuss@mandoc.bsd.lv \
--cc=trasz@FreeBSD.org \
--cc=yuripv@yuripv.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).