Save XML: sort the dive sites by uuid

This makes it much easier to compare XML files written by Subsurface.
The order of the dive_site_table depended on the order in which they were
encountered. This makes it easier to eye-ball changes in XML files. And
allows the GitStorage test to pass.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-08-24 11:07:57 -07:00
parent e03b553e80
commit 420afeef57
3 changed files with 15 additions and 1 deletions

View file

@ -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);
}

View file

@ -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);

View file

@ -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;