changeset 2174:25a5dfffef42

Sort location entries in the list.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 12 Oct 2019 19:53:19 +0300
parents ed4135c0a0f5
children 3a3282e8ae42
files mkcitymap.c mkloc.c
diffstat 2 files changed, 18 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mkcitymap.c	Sat Oct 12 19:44:52 2019 +0300
+++ b/mkcitymap.c	Sat Oct 12 19:53:19 2019 +0300
@@ -154,9 +154,20 @@
 }
 
 
+static int compareLocation(const void *pp1, const void *pp2)
+{
+    const LocMarker
+        *vp1 = *(const LocMarker **) pp1,
+        *vp2 = *(const LocMarker **) pp2;
+
+    if (vp1->flags == vp2->flags)
+        return th_strcasecmp(vp1->names[0].name, vp2->names[0].name);
+    else
+        return vp1->flags - vp2->flags;
+}
 
 
-void outputHTMLFooter(FILE *outFile, const MapLocations *locs)
+void outputHTMLFooter(FILE *outFile, MapLocations *locs)
 {
     fprintf(outFile,
     "</pre>"
@@ -164,6 +175,8 @@
     "<div class=\"loctab\">\n"
     );
 
+    qsort(locs->locations, locs->nlocations, sizeof(LocMarker *), compareLocation);
+
     for (int n = 0; n < locs->nlocations; n++)
     {
         const LocMarker *marker = locs->locations[n];
--- a/mkloc.c	Sat Oct 12 19:44:52 2019 +0300
+++ b/mkloc.c	Sat Oct 12 19:53:19 2019 +0300
@@ -447,9 +447,11 @@
 
 /* Quicksort comparision function for location names
  */
-int maplocCompare(const void *p1, const void *p2)
+int maplocCompare(const void *pp1, const void *pp2)
 {
-    LocMarker *vp1 = *(LocMarker **) p1, *vp2 = *(LocMarker **) p2;
+    const LocMarker
+        *vp1 = *(const LocMarker **) pp1,
+        *vp2 = *(const LocMarker **) pp2;
 
     if (vp1->vsort.v_int == vp2->vsort.v_int)
         return strcmp(vp1->names[0].name, vp2->names[0].name);