X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=parse-xml.c;h=22ab8458e1f5871d932d4d5666c5df7ccc1a94dc;hb=2db85596e52ea0852bfe67f2fb67df8440b43d1b;hp=cecfbb30417b9a167371540e6f67fae36599c926;hpb=c6b13fad5aebdf7ee7f1b67da58512e49840a7c1;p=ext%2Fsubsurface.git diff --git a/parse-xml.c b/parse-xml.c index cecfbb3..22ab845 100644 --- a/parse-xml.c +++ b/parse-xml.c @@ -422,7 +422,7 @@ static void water_pressure(char *buffer, void *_depth) * atm to cm. Why not mm? The precision just isn't * there. */ - cm = 100 * (atm - 1) + 0.5; + cm = 100 * atm + 0.5; if (cm > 0) { depth->mm = 10 * (long)cm; break; @@ -521,7 +521,7 @@ static void fahrenheit(char *buffer, void *_temperature) * pressures are in PSI. But the tank working pressure is in * bar. WTF^2? * - * Crazy stuff like this is why diveclog has everything in + * Crazy stuff like this is why subsurface has everything in * these inconvenient typed structures, and you have to say * "pressure->mbar" to get the actual value. Exactly so that * you can never have unit confusion. @@ -882,6 +882,20 @@ static int uddf_dive_match(struct dive *dive, const char *name, int len, char *b 0; } +static void gps_location(char *buffer, void *_dive) +{ + int i; + struct dive *dive = _dive; + double latitude, longitude; + + i = sscanf(buffer, "%lf %lf", &latitude, &longitude); + if (i == 2) { + dive->latitude = latitude; + dive->longitude = longitude; + } + free(buffer); +} + /* We're in the top-level dive xml. Try to convert whatever value to a dive value */ static void try_to_fill_dive(struct dive *dive, const char *name, char *buf) { @@ -950,6 +964,8 @@ static void try_to_fill_dive(struct dive *dive, const char *name, char *buf) return; if (MATCH(".cylinderendpressure", pressure, &dive->cylinder[0].end)) return; + if (MATCH(".gps", gps_location, dive)) + return; if (MATCH(".location", utf8_string, &dive->location)) return; if (MATCH(".notes", utf8_string, &dive->notes)) @@ -1357,7 +1373,7 @@ void parse_xml_file(const char *filename, GError **error) fprintf(stderr, "Failed to parse '%s'.\n", filename); if (error != NULL) { - *error = g_error_new(g_quark_from_string("divelog"), + *error = g_error_new(g_quark_from_string("subsurface"), DIVE_ERROR_PARSE, "Failed to parse '%s'", filename);