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. */

Reply via email to