Blame texlive-base-20210325-mendex-weird-arch-fixes.patch

1f40228
diff -U0 texlive-base-20210325/source/texk/mendexk/ChangeLog.archfix texlive-base-20210325/source/texk/mendexk/ChangeLog
1f40228
--- texlive-base-20210325/source/texk/mendexk/ChangeLog.archfix	2021-05-27 15:01:46.888501972 -0400
1f40228
+++ texlive-base-20210325/source/texk/mendexk/ChangeLog	2021-05-27 15:02:10.669627643 -0400
1f40228
@@ -0,0 +1,13 @@
1f40228
+2021-05-09  Karl Berry  <karl@freefriends.org>
1f40228
+
1f40228
+	* mendex.h (page.attr): use int, not char, since we do signed
1f40228
+	comparison and aarch64 apparently treats char as unsigned.
1f40228
+	(index.words): use unsigned char for consistency.
1f40228
+	* fwrite.c (printpage): factor out beginning/end page values.
1f40228
+	* tests/rangetwo.idx,
1f40228
+	* tests/rangetwo.ind,
1f40228
+	* tests/rangetwo.ist: new simple test.
1f40228
+	* tests/mendex.test: run the rangetwo test.
1f40228
+	Report from Johannes Hielscher,
1f40228
+	https://tug.org/pipermail/tlbuild/2021q1/004873.html.
1f40228
+
1f40228
diff -up texlive-base-20210325/source/texk/mendexk/fwrite.c.archfix texlive-base-20210325/source/texk/mendexk/fwrite.c
1f40228
--- texlive-base-20210325/source/texk/mendexk/fwrite.c.archfix	2021-05-27 15:02:37.867771347 -0400
1f40228
+++ texlive-base-20210325/source/texk/mendexk/fwrite.c	2021-05-27 15:07:00.875160968 -0400
1f40228
@@ -326,7 +326,11 @@ static void printpage(struct index *ind,
1f40228
 	for(j=0;j
1f40228
 		cc=range_check(ind[num],j,lbuff);
1f40228
 		if (cc>j) {
1f40228
-			if (pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0])==pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])) {
1f40228
+			int epage = pnumconv(ind[num].p[cc].page,
1f40228
+	                                     ind[num].p[cc].attr[0]);
1f40228
+			int bpage = pnumconv(ind[num].p[j].page,
1f40228
+					     ind[num].p[j].attr[0]);
1f40228
+			if (epage==bpage) {
1f40228
 				j=cc-1;
1f40228
 				continue;
1f40228
 			}
1f40228
@@ -337,20 +341,18 @@ static void printpage(struct index *ind,
1f40228
 			if (strlen(ind[num].p[j].enc)>0) {
1f40228
 				SPRINTF(buff,"%s%s%s",encap_prefix,ind[num].p[j].enc,encap_infix);
1f40228
 			}
1f40228
-			if (strlen(suffix_3p)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))==2) {
1f40228
-				SAPPENDF(buff,"%s",ind[num].p[j].page);
1f40228
+			/* print beginning of range */
1f40228
+			SAPPENDF(buff,"%s",ind[num].p[j].page);
1f40228
+			if (strlen(suffix_3p)>0 && (epage-bpage)==2) {
1f40228
 				SAPPENDF(buff,"%s",suffix_3p);
1f40228
 			}
1f40228
-			else if (strlen(suffix_mp)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))>=2) {
1f40228
-				SAPPENDF(buff,"%s",ind[num].p[j].page);
1f40228
+			else if (strlen(suffix_mp)>0 && (epage-bpage)>=2) {
1f40228
 				SAPPENDF(buff,"%s",suffix_mp);
1f40228
 			}
1f40228
-			else if (strlen(suffix_2p)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))==1) {
1f40228
-				SAPPENDF(buff,"%s",ind[num].p[j].page);
1f40228
+			else if (strlen(suffix_2p)>0 && (epage-bpage)==1) {
1f40228
 				SAPPENDF(buff,"%s",suffix_2p);
1f40228
 			}
1f40228
 			else {
1f40228
-				SAPPENDF(buff,"%s",ind[num].p[j].page);
1f40228
 				SAPPENDF(buff,"%s",delim_r);
1f40228
 				SAPPENDF(buff,"%s",ind[num].p[cc].page);
1f40228
 			}
1f40228
diff -up texlive-base-20210325/source/texk/mendexk/mendex.h.archfix texlive-base-20210325/source/texk/mendexk/mendex.h
1f40228
--- texlive-base-20210325/source/texk/mendexk/mendex.h.archfix	2021-05-27 15:07:31.173321042 -0400
1f40228
+++ texlive-base-20210325/source/texk/mendexk/mendex.h	2021-05-27 15:07:50.429422834 -0400
1f40228
@@ -14,12 +14,12 @@
1f40228
 struct page {
1f40228
 	char *page;
1f40228
 	char *enc;
1f40228
-	char attr[3];
1f40228
+	int attr[3];
1f40228
 };
1f40228
 
1f40228
 struct index {
1f40228
 	int num;
1f40228
-	char words;
1f40228
+	unsigned char words;
1f40228
 	char *org[3];
1f40228
 	char *dic[3];
1f40228
 	char *idx[3];
1f40228
diff -up texlive-base-20210325/source/texk/mendexk/tests/mendex.test.archfix texlive-base-20210325/source/texk/mendexk/tests/mendex.test
1f40228
--- texlive-base-20210325/source/texk/mendexk/tests/mendex.test.archfix	2021-05-27 15:08:12.848541283 -0400
1f40228
+++ texlive-base-20210325/source/texk/mendexk/tests/mendex.test	2021-05-27 15:13:28.110189451 -0400
1f40228
@@ -1,6 +1,6 @@
1f40228
 #! /bin/sh -vx
1f40228
 # $Id: mendex.test 58575 2021-03-21 08:54:52Z takuji $
1f40228
-# Copyright 2017 Karl Berry <tex-live@tug.org>
1f40228
+# Copyright 2017-2021 Karl Berry <tex-live@tug.org>
1f40228
 # Copyright 2013 Peter Breitenlohner <tex-live@tug.org>
1f40228
 # You may freely use, modify and/or distribute this file.
1f40228
 
1f40228
@@ -24,13 +24,21 @@ cat $srcdir/tests/uni.idx | \
1f40228
 	>uni.ind2 2>uni.ilg2 \
1f40228
 	&& diff $srcdir/tests/uni.ind uni.ind2 || exit 1
1f40228
 
1f40228
-# test for page_precedence
1f40228
-./mendex -s $srcdir/tests/pprec0.ist $srcdir/tests/pprecA.idx -o pprecA-0.ind1 -t pprecA-0.ilg \
1f40228
+# test for two-element range suffix_2p
1f40228
+./mendex -s $srcdir/tests/rangetwo.ist $srcdir/tests/rangetwo.idx \
1f40228
+	-o rangetwo.ind1 -t rangetwo.ilg \
1f40228
+	&& diff $srcdir/tests/rangetwo.ind rangetwo.ind1 || exit 1
1f40228
+
1f40228
+# test for page_precedence and suffix_3p
1f40228
+./mendex -s $srcdir/tests/pprec0.ist $srcdir/tests/pprecA.idx \
1f40228
+	-o pprecA-0.ind1 -t pprecA-0.ilg \
1f40228
 	&& diff $srcdir/tests/pprecA-0.ind pprecA-0.ind1 || exit 1
1f40228
 
1f40228
-./mendex -s $srcdir/tests/pprec1.ist $srcdir/tests/pprecA.idx -o pprecA-1.ind1 -t pprecA-1.ilg \
1f40228
+./mendex -s $srcdir/tests/pprec1.ist $srcdir/tests/pprecA.idx \
1f40228
+	-o pprecA-1.ind1 -t pprecA-1.ilg \
1f40228
 	&& diff $srcdir/tests/pprecA-1.ind pprecA-1.ind1 || exit 1
1f40228
 
1f40228
-./mendex -s $srcdir/tests/pprec2.ist $srcdir/tests/pprecA.idx -o pprecA-2.ind1 -t pprecA-2.ilg \
1f40228
+./mendex -s $srcdir/tests/pprec2.ist $srcdir/tests/pprecA.idx \
1f40228
+	-o pprecA-2.ind1 -t pprecA-2.ilg \
1f40228
 	&& diff $srcdir/tests/pprecA-2.ind pprecA-2.ind1 || exit 1
1f40228
 
1f40228
diff -up texlive-base-20210325/source/texk/mendexk/tests/rangetwo.idx.archfix texlive-base-20210325/source/texk/mendexk/tests/rangetwo.idx
1f40228
--- texlive-base-20210325/source/texk/mendexk/tests/rangetwo.idx.archfix	2021-05-27 15:14:09.048403077 -0400
1f40228
+++ texlive-base-20210325/source/texk/mendexk/tests/rangetwo.idx	2021-05-27 15:14:03.416373688 -0400
1f40228
@@ -0,0 +1,2 @@
1f40228
+\indexentry{entryA}{1}
1f40228
+\indexentry{entryA}{2}
1f40228
diff -up texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ind.archfix texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ind
1f40228
--- texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ind.archfix	2021-05-27 15:14:30.601515549 -0400
1f40228
+++ texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ind	2021-05-27 15:14:59.970668807 -0400
1f40228
@@ -0,0 +1,5 @@
1f40228
+\begin{theindex}
1f40228
+
1f40228
+  \item entryA, 1[[sfx2p]]
1f40228
+
1f40228
+\end{theindex}
1f40228
diff -up texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ist.archfix texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ist
1f40228
--- texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ist.archfix	2021-05-27 15:15:24.712797920 -0400
1f40228
+++ texlive-base-20210325/source/texk/mendexk/tests/rangetwo.ist	2021-05-27 15:15:51.412937250 -0400
1f40228
@@ -0,0 +1,2 @@
1f40228
+suffix_2p "[[sfx2p]]"
1f40228
+
1f40228
diff -U0 texlive-base-20210325/source/texk/upmendex/ChangeLog.archfix texlive-base-20210325/source/texk/upmendex/ChangeLog
1f40228
--- texlive-base-20210325/source/texk/upmendex/ChangeLog.archfix	2021-05-27 14:58:11.836365567 -0400
1f40228
+++ texlive-base-20210325/source/texk/upmendex/ChangeLog	2021-05-27 14:59:42.613845327 -0400
1f40228
@@ -0,0 +1,11 @@
1f40228
+2021-05-09  Karl Berry  <karl@freefriends.org>
1f40228
+         * mendex.h (page.attr): use int, not char, since we do signed
1f40228
+         comparison and aarch64 apparently treats char as unsigned.
1f40228
+         (index.words): use unsigned char for consistency.
1f40228
+
1f40228
+         Same fixes as for mendex; see mendexk/ChangeLog.
1f40228
+         Report from Johannes Hielscher,
1f40228
+           https://tug.org/pipermail/tlbuild/2021q1/004873.html
1f40228
+         and follow-up:
1f40228
+           https://tug.org/pipermail/tlbuild/2021q2/004911.html
1f40228
+
1f40228
diff -up texlive-base-20210325/source/texk/upmendex/mendex.h.archfix texlive-base-20210325/source/texk/upmendex/mendex.h
1f40228
--- texlive-base-20210325/source/texk/upmendex/mendex.h.archfix	2021-05-27 14:59:52.774899013 -0400
1f40228
+++ texlive-base-20210325/source/texk/upmendex/mendex.h	2021-05-27 15:01:33.381430577 -0400
1f40228
@@ -14,12 +14,12 @@
1f40228
 struct page {
1f40228
 	char *page;
1f40228
 	char *enc;
1f40228
-	char attr[3];
1f40228
+	int attr[3];
1f40228
 };
1f40228
 
1f40228
 struct index {
1f40228
 	int num;
1f40228
-	char words;
1f40228
+	unsigned char words;
1f40228
 	UChar *dic[3];
1f40228
 	UChar *org[3];
1f40228
 	UChar *idx[3];