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