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-git.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-git.c')
-rw-r--r-- | save-git.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/save-git.c b/save-git.c index 9aa7bfd0e..69ad0726d 100644 --- a/save-git.c +++ b/save-git.c @@ -892,9 +892,23 @@ static void save_divesites(git_repository *repo, struct dir *tree) 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)) { + fprintf(stderr, "found an auto divesite %s\n", ds->name); + // 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; + } } struct membuffer site_file_name = { 0 }; put_format(&site_file_name, "Site-%08x", ds->uuid); |