From 6504d97ca81d1e2b763ab1d7d41b13448c48c754 Mon Sep 17 00:00:00 2001 From: glerch Date: Thu, 10 Sep 2015 19:05:29 +0200 Subject: Uemis downloader: assure empty divespots are not added If the load_uemis_divespot returns false we must assure we delete the divespot that was created during process_raw_buffer Also added some comments Signed-off-by: glerch Signed-off-by: Dirk Hohndel --- uemis-downloader.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'uemis-downloader.c') diff --git a/uemis-downloader.c b/uemis-downloader.c index f1f17828d..1472d428a 100644 --- a/uemis-downloader.c +++ b/uemis-downloader.c @@ -1191,17 +1191,30 @@ const char *do_uemis_import(device_data_t *data) last_found_log_file_nr = dive_to_read; int divespot_id = uemis_get_divespot_id_by_diveid(dive->dc.diveid); if (load_uemis_divespot(mountpath, divespot_id)) { + /* get the divesite based on the diveid, this should give us + * the newly created site + */ struct dive_site *nds = get_dive_site_by_uuid(dive->dive_site_uuid); struct dive_site *ods = NULL; if (nds) { + /* with the divesite name we got from parse_dive, that is called on load_uemis_divespot + * we search all existing divesites if we have one with the same name already. The function + * returns the first found which is luckily not the newly created. + */ (void)get_dive_site_uuid_by_name(nds->name, &ods); if (ods) { + /* if the uuid's are the same, the new site is a duplicat and can be deleted */ if (nds->uuid != ods->uuid) { delete_dive_site(nds->uuid); dive->dive_site_uuid = ods->uuid; } } } + } else { + /* if we cant load the dive site details, delete the site we + * created in process_raw_buffer + */ + delete_dive_site(dive->dive_site_uuid); } } else { /* in this case we found a deleted file, so let's increment */ -- cgit v1.2.3-70-g09d2