]> git.tdb.fi Git - ext/subsurface.git/blobdiff - parse.c
Boiler-plate code for opening/saving a file
[ext/subsurface.git] / parse.c
diff --git a/parse.c b/parse.c
index f90c16ce12fbf05fde39ce39e9840ffd8536c211..58d446db099c46f408a3c27d35bdfec99e249d40 100644 (file)
--- 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++;
 }