discuss@mandoc.bsd.lv
 help / color / mirror / Atom feed
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

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