]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Fix up small details in input/output
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 1 Sep 2011 23:41:10 +0000 (16:41 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 1 Sep 2011 23:41:10 +0000 (16:41 -0700)
Be more careful with FP conversions, and with the Kelvin<->C offset.
And make sure to use the same names when saving as when parsing.

Now when we save a set of dives, then re-load them, and save again, the
second save image is identical to the first one.

Of course, we don't actually save everything we load, so we still do
lose information when we load and then save the result.  But at least we
now don't lose the information that we *do* save.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
parse-xml.c
save-xml.c

index 9b0797ea03f3f0dffa995e45967ed7c8f844d093..ea568f74084c183ae645b11ab2227c115254d7c3 100644 (file)
@@ -197,7 +197,7 @@ static void pressure(char *buffer, void *_press)
        case FLOAT:
                /* Maybe it's in Bar? */
                if (val.fp < 500.0) {
-                       pressure->mbar = val.fp * 1000;
+                       pressure->mbar = val.fp * 1000 + 0.5;
                        break;
                }
                printf("Unknown fractional pressure reading %s\n", buffer);
@@ -233,7 +233,7 @@ static void depth(char *buffer, void *_depth)
                val.fp = val.i;
                /* fallthrough */
        case FLOAT:
-               depth->mm = val.fp * 1000;
+               depth->mm = val.fp * 1000 + 0.5;
                break;
        default:
                printf("Strange depth reading %s\n", buffer);
@@ -257,7 +257,7 @@ static void temperature(char *buffer, void *_temperature)
                        break;
                /* Celsius */
                if (val.fp < 50.0) {
-                       temperature->mkelvin = (val.fp + 273.16) * 1000;
+                       temperature->mkelvin = (val.fp + 273.15) * 1000 + 0.5;
                        break;
                }
                /* Fahrenheit */
@@ -353,6 +353,8 @@ static void try_to_fill_sample(struct sample *sample, const char *name, char *bu
                return;
        if (MATCH(".sample.depth", depth, &sample->depth))
                return;
+       if (MATCH(".sample.temp", temperature, &sample->temperature))
+               return;
        if (MATCH(".sample.temperature", temperature, &sample->temperature))
                return;
        if (MATCH(".sample.sampletime", sampletime, &sample->time))
index 64254b45ec1f907483a71fced4f56afb92646f6f..29f22e6dd5cd0cf3d47aba59b357cfeb2e00e723 100644 (file)
@@ -26,6 +26,7 @@ static void save_overview(FILE *f, struct dive *dive)
 {
        fprintf(f, "  <maxdepth>%u.%03u m</maxdepth>\n", FRACTION(dive->maxdepth.mm, 1000));
        show_temperature(f, dive->airtemp, "  <airtemp>", " C</airtemp>\n");
+       show_temperature(f, dive->watertemp, "  <watertemp>", " C</airtemp>\n");
 }
 
 static void save_gasmix(FILE *f, struct dive *dive)
@@ -53,7 +54,7 @@ static void save_sample(FILE *f, struct sample *sample)
                FRACTION(sample->depth.mm, 1000));
        show_temperature(f, sample->temperature, " temp='", " C'");
        if (sample->tankpressure.mbar) {
-               fprintf(f, " tankpressure='%u.%03u bar'",
+               fprintf(f, " pressure='%u.%03u bar'",
                        FRACTION(sample->tankpressure.mbar, 1000));
        }
        fprintf(f, "></sample>\n");