changeset 8793:0d10c63d2bd3

(struct hol_entry): New member `ord'. (HOL_ENTRY_PTRCMP): Use ord for comparison (hol_sort): Initialize ord.
author Sergey Poznyakoff <gray@gnu.org.ua>
date Wed, 02 May 2007 04:33:22 +0000
parents aa7338eb64bb
children 4e0d4efa70d7
files lib/argp-help.c
diffstat 1 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lib/argp-help.c
+++ b/lib/argp-help.c
@@ -375,6 +375,9 @@
 
   /* The argp from which this option came.  */
   const struct argp *argp;
+
+  /* Position in the array */
+  unsigned ord;
 };
 
 /* A cluster of entries to reflect the argp tree structure.  */
@@ -733,7 +736,7 @@
   return non_opt;
 }
 
-#define HOL_ENTRY_PTRCMP(a,b) ((a) < (b) ? -1 : 1)
+#define HOL_ENTRY_PTRCMP(a,b) ((a)->ord < (b)->ord ? -1 : 1)
 
 /* Order ENTRY1 & ENTRY2 by the order which they should appear in a help
    listing.  */
@@ -829,8 +832,14 @@
 hol_sort (struct hol *hol)
 {
   if (hol->num_entries > 0)
-    qsort (hol->entries, hol->num_entries, sizeof (struct hol_entry),
-	   hol_entry_qcmp);
+    {
+      unsigned i;
+      struct hol_entry *e;
+      for (i = 0, e = hol->entries; i < hol->num_entries; i++, e++)
+	e->ord = i;
+      qsort (hol->entries, hol->num_entries, sizeof (struct hol_entry),
+	     hol_entry_qcmp);
+    }
 }
 
 /* Append MORE to HOL, destroying MORE in the process.  Options in HOL shadow