diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2015-09-28 22:30:20 -0400 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-09-28 22:30:20 -0400 |
commit | 7ad1485c398b8bea651e28acb5eed2c78ff8a18e (patch) | |
tree | 6643ae4a849d1ae729d5ef87cf6e0af294c0efd7 /save-xml.c | |
parent | 55cc0ee9c158607378f8277143eab731c6f91e6c (diff) | |
download | subsurface-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.c | 15 |
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; |