summaryrefslogtreecommitdiffstats
path: root/save-xml.c
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-09-28 22:30:20 -0400
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-09-28 22:30:20 -0400
commit7ad1485c398b8bea651e28acb5eed2c78ff8a18e (patch)
tree6643ae4a849d1ae729d5ef87cf6e0af294c0efd7 /save-xml.c
parent55cc0ee9c158607378f8277143eab731c6f91e6c (diff)
downloadsubsurface-7ad1485c398b8bea651e28acb5eed2c78ff8a18e.tar.gz
Don't save unused, auto-create dive sites
Normally the auto-created sites that are used when downloading GPS data from the webservice that aren't associated with a dive will immediately discarded. But if such a site is used for a dive but then the user changes their mind and uses another site for that dive (for example because they had a previous dive at that spot and decided they liked that one better after all), then the dive site can stick around as an orphan. Having orphan dive site may make sense for named dive sites that for some reason are no longer used but may be used again in the future, but having an auto-named orphaned dive site in the data file seems silly. So let's remove them. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'save-xml.c')
-rw-r--r--save-xml.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/save-xml.c b/save-xml.c
index 6921e3b2e..6d0284056 100644
--- a/save-xml.c
+++ b/save-xml.c
@@ -523,9 +523,22 @@ void save_dives_buffer(struct membuffer *b, const bool select_only)
if (d->dive_site_uuid == ds->uuid)
d->dive_site_uuid = 0;
}
- delete_dive_site(get_dive_site(i)->uuid);
+ delete_dive_site(ds->uuid);
i--; // since we just deleted that one
continue;
+ } else if (ds->name &&
+ (strncmp(ds->name, "Auto-created dive", 17) == 0 ||
+ strncmp(ds->name, "New Dive", 8) == 0)) {
+ // these are the two default names for sites from
+ // the web service; if the site isn't used in any
+ // dive (really? you didn't rename it?), delete it
+ if (!is_dive_site_used(ds->uuid, false)) {
+ if (verbose)
+ fprintf(stderr, "Deleted unused auto-created dive site %s\n", ds->name);
+ delete_dive_site(ds->uuid);
+ i--; // since we just deleted that one
+ continue;
+ }
}
if (select_only && !is_dive_site_used(ds->uuid, true))
continue;