summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--divesite.c12
-rw-r--r--divesite.h1
-rw-r--r--save-xml.c3
3 files changed, 15 insertions, 1 deletions
diff --git a/divesite.c b/divesite.c
index 035c1b82d..93bd35e59 100644
--- a/divesite.c
+++ b/divesite.c
@@ -263,3 +263,15 @@ uint32_t find_or_create_dive_site_with_name(const char *name, timestamp_t diveti
return ds->uuid;
return create_dive_site(name, divetime);
}
+
+static int compare_sites(const void *_a, const void *_b)
+{
+ const struct dive_site *a = (const struct dive_site *)*(void **)_a;
+ const struct dive_site *b = (const struct dive_site *)*(void **)_b;
+ return a->uuid > b->uuid ? 1 : a->uuid == b->uuid ? 0 : -1;
+}
+
+void dive_site_table_sort()
+{
+ qsort(dive_site_table.dive_sites, dive_site_table.nr, sizeof(struct dive_site *), compare_sites);
+}
diff --git a/divesite.h b/divesite.h
index 1dd1d04e8..52901e9b4 100644
--- a/divesite.h
+++ b/divesite.h
@@ -49,6 +49,7 @@ static inline struct dive_site *get_dive_site_by_uuid(uint32_t uuid)
return NULL;
}
+void dive_site_table_sort();
struct dive_site *alloc_dive_site(uint32_t uuid);
int nr_of_dives_at_dive_site(uint32_t uuid, bool select_only);
bool is_dive_site_used(uint32_t uuid, bool select_only);
diff --git a/save-xml.c b/save-xml.c
index 67ae96a37..778218fa4 100644
--- a/save-xml.c
+++ b/save-xml.c
@@ -507,7 +507,8 @@ void save_dives_buffer(struct membuffer *b, const bool select_only)
put_format(b, " <autogroup state='1' />\n");
put_format(b, "</settings>\n");
- /* save the dive sites */
+ /* save the dive sites - to make the output consistent let's sort the table, first */
+ dive_site_table_sort();
put_format(b, "<divesites>\n");
for (i = 0; i < dive_site_table.nr; i++) {
int j;