X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=parse.c;h=58d446db099c46f408a3c27d35bdfec99e249d40;hb=3d01a5f71a29a8b7ce2a3648130660dabe62fae9;hp=f90c16ce12fbf05fde39ce39e9840ffd8536c211;hpb=3aa02ccba93648f2decab899a5b9c42b6bcea9bf;p=ext%2Fsubsurface.git diff --git a/parse.c b/parse.c index f90c16c..58d446d 100644 --- a/parse.c +++ b/parse.c @@ -222,11 +222,10 @@ static void depth(char *buffer, void *_depth) union int_or_float val; switch (integer_or_float(buffer, &val)) { - /* Integer values are probably in feet */ + /* All values are probably in meters */ case INTEGER: - depth->mm = 304.8 * val.i; - break; - /* Float? Probably meters.. */ + val.fp = val.i; + /* fallthrough */ case FLOAT: depth->mm = val.fp * 1000; break; @@ -402,7 +401,7 @@ static char *generate_name(struct dive *dive) len = snprintf(buffer, sizeof(buffer), "%04d-%02d-%02d " "%02d:%02d:%02d " - "(%d ft, %d min)\n", + "(%d ft, %d min)", tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, to_feet(dive->maxdepth), dive->duration.seconds / 60); @@ -445,9 +444,18 @@ static void sample_start(void) static void sample_end(void) { - sample = NULL; if (!dive) return; + + if (sample->time.seconds > dive->duration.seconds) { + if (sample->depth.mm) + dive->duration = sample->time; + } + + if (sample->depth.mm > dive->maxdepth.mm) + dive->maxdepth.mm = sample->depth.mm; + + sample = NULL; dive->samples++; }