Improve dive site creation from v2 git storage

Fix broken helper function, move helper functions into the .c file (there
really wasn't a good reason for these to be inline), fix the logic that
decides if we want to create a new dive site or use an existing one.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-02-13 01:14:33 -08:00
parent 8c3efd2a22
commit d2baa36312
3 changed files with 60 additions and 52 deletions

View file

@ -140,19 +140,40 @@ static int get_hex(const char *line)
static void parse_dive_gps(char *line, struct membuffer *str, void *_dive)
{
uint32_t uuid;
degrees_t latitude = parse_degrees(line, &line);
degrees_t longitude = parse_degrees(line, &line);
struct dive *dive = _dive;
struct dive_site *ds = get_or_create_dive_site_by_uuid(dive->dive_site_uuid);
dive->dive_site_uuid = ds->uuid;
ds->latitude = parse_degrees(line, &line);
ds->longitude = parse_degrees(line, &line);
struct dive_site *ds = get_dive_site_for_dive(dive);
if (!ds) {
uuid = get_dive_site_uuid_by_gps(latitude, longitude, NULL);
if (!uuid)
uuid = create_dive_site_with_gps("", latitude, longitude);
dive->dive_site_uuid = uuid;
} else {
ds->latitude = latitude;
ds->longitude = longitude;
}
}
static void parse_dive_location(char *line, struct membuffer *str, void *_dive)
{
uint32_t uuid;
char *name = get_utf8(str);
struct dive *dive = _dive;
struct dive_site *ds = get_or_create_dive_site_by_uuid(dive->dive_site_uuid);
dive->dive_site_uuid = ds->uuid;
ds->name = get_utf8(str);
struct dive_site *ds = get_dive_site_for_dive(dive);
fprintf(stderr, "looking for a site named {%s} ", name);
if (!ds) {
uuid = get_dive_site_uuid_by_name(name, NULL);
if (!uuid) { fprintf(stderr, "found none, creating\n");
uuid = create_dive_site(name);
} else { fprintf(stderr, "found one with uuid %8x\n", uuid); }
dive->dive_site_uuid = uuid;
} else {
fprintf(stderr, "dive had site with uuid %8x and name {%s}\n", ds->uuid, ds->name);
ds->name = name;
}
}
static void parse_dive_divemaster(char *line, struct membuffer *str, void *_dive)