Module Name: src
Committed By: christos
Date: Tue Apr 16 23:43:08 UTC 2024
Modified Files:
src/external/gpl2/texinfo/dist/makeinfo: index.c
Log Message:
Add comparison function so that it can be used to provide a stable sort
(Jan-Benedict Glaw)
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 src/external/gpl2/texinfo/dist/makeinfo/index.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/gpl2/texinfo/dist/makeinfo/index.c
diff -u src/external/gpl2/texinfo/dist/makeinfo/index.c:1.1.1.1 src/external/gpl2/texinfo/dist/makeinfo/index.c:1.2
--- src/external/gpl2/texinfo/dist/makeinfo/index.c:1.1.1.1 Wed Jan 13 19:11:29 2016
+++ src/external/gpl2/texinfo/dist/makeinfo/index.c Tue Apr 16 19:43:08 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: index.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
+/* $NetBSD: index.c,v 1.2 2024/04/16 23:43:08 christos Exp $ */
/* index.c -- indexing for Texinfo.
Id: index.c,v 1.17 2004/11/30 02:03:23 karl Exp
@@ -511,8 +511,30 @@ index_element_compare (const void *eleme
{
INDEX_ELT **elt1 = (INDEX_ELT **) element1;
INDEX_ELT **elt2 = (INDEX_ELT **) element2;
+ int ret = 0;
- return index_compare_fn ((*elt1)->entry, (*elt2)->entry);
+ /* Find a stable sort order. */
+ if (ret == 0)
+ ret = index_compare_fn ((*elt1)->entry, (*elt2)->entry);
+ if (ret == 0)
+ ret = strcmp ((*elt1)->defining_file, (*elt2)->defining_file);
+ if (ret == 0)
+ ret = strcmp ((*elt1)->node, (*elt2)->node);
+ if (ret == 0)
+ if ((*elt1)->defining_line < (*elt2)->defining_line)
+ ret = -1;
+ else if ((*elt1)->defining_line > (*elt2)->defining_line)
+ ret = 1;
+ if (ret == 0)
+ if ((*elt1)->entry_number < (*elt2)->entry_number)
+ ret = -1;
+ else if ((*elt1)->entry_number > (*elt2)->entry_number)
+ ret = 1;
+ if (ret == 0) {
+ abort ();
+ }
+
+ return ret;
}
/* Force all index entries to be unique. */