X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=parse-xml.c;h=e14d9db2b74ed0e7ac94ba9f2e6f30807d7d22ac;hb=add58148bc30060e99e9c896fa4d390460c55694;hp=91bcced6ed7f4c0a72d102ae0d72e6404400d2f2;hpb=0c4e1697db2d9e15a05bc76056fca13e9ccb9ba4;p=ext%2Fsubsurface.git diff --git a/parse-xml.c b/parse-xml.c index 91bcced..e14d9db 100644 --- a/parse-xml.c +++ b/parse-xml.c @@ -488,6 +488,16 @@ static int uemis_fill_sample(struct sample *sample, const char *name, int len, c * Divinglog is crazy. The temperatures are in celsius. EXCEPT * for the sample temperatures, that are in Fahrenheit. * WTF? + * + * Oh, and I think Diving Log *internally* probably kept them + * in celsius, because I'm seeing entries like + * + * 32.0 + * + * in there. Which is freezing, aka 0 degC. I bet the "0" is + * what Diving Log uses for "no temperature". + * + * So throw away crap like that. */ static void fahrenheit(char *buffer, void *_temperature) { @@ -496,6 +506,9 @@ static void fahrenheit(char *buffer, void *_temperature) switch (integer_or_float(buffer, &val)) { case FLOAT: + /* Floating point equality is evil, but works for small integers */ + if (val.fp == 32.0) + break; temperature->mkelvin = (val.fp + 459.67) * 5000/9; break; default: @@ -1034,7 +1047,7 @@ static void match_standard_cylinder(cylinder_type_t *type) fmt = "LP%d"; break; case 2600 ... 2700: /* 2640 psi: LP+10% */ - fmt = "LP%d+"; + fmt = "LP%d"; break; case 2900 ... 3100: /* 3000 psi: ALx tank */ fmt = "AL%d";