summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2011-09-01 16:41:10 -0700
committerGravatar Linus Torvalds <torvalds@linux-foundation.org>2011-09-01 16:41:10 -0700
commit99c111e34833bb7b8af2ad5a6494790191b18e2c (patch)
tree95f3aa08972990352cef1aee15fe25685c6f1558
parent1155ad3f0fb2471163335d1d7c6856a81f495e49 (diff)
downloadsubsurface-99c111e34833bb7b8af2ad5a6494790191b18e2c.tar.gz
Fix up small details in input/output
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>
-rw-r--r--parse-xml.c8
-rw-r--r--save-xml.c3
2 files changed, 7 insertions, 4 deletions
diff --git a/parse-xml.c b/parse-xml.c
index 9b0797ea0..ea568f740 100644
--- a/parse-xml.c
+++ b/parse-xml.c
@@ -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))
diff --git a/save-xml.c b/save-xml.c
index 64254b45e..29f22e6dd 100644
--- a/save-xml.c
+++ b/save-xml.c
@@ -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");