summaryrefslogtreecommitdiffstats
path: root/statistics.c
diff options
context:
space:
mode:
Diffstat (limited to 'statistics.c')
-rw-r--r--statistics.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/statistics.c b/statistics.c
index d71422043..4c6379443 100644
--- a/statistics.c
+++ b/statistics.c
@@ -125,10 +125,18 @@ void show_dive_stats(struct dive *dive)
const char *unit;
int idx, offset, gas_used;
struct dive *prev_dive;
+ struct tm *tm;
process_all_dives(dive, &prev_dive);
- strftime(buf, 80, "%a, %b %d, %Y, %k:%M", gmtime(&dive->when));
+ tm = gmtime(&dive->when);
+ snprintf(buf, sizeof(buf),
+ "%s, %s %d, %d %2d:%02d",
+ weekday(tm->tm_wday),
+ monthname(tm->tm_mon),
+ tm->tm_mday, tm->tm_year + 1900,
+ tm->tm_hour, tm->tm_min);
+
set_label(info_stat_w.date, buf);
set_label(info_stat_w.dive_time, "%d min", (dive->duration.seconds + 30) / 60);
if (prev_dive)
@@ -157,11 +165,14 @@ void show_dive_stats(struct dive *dive)
/* for the O2/He readings just create a list of them */
for (idx = 0; idx < MAX_CYLINDERS; idx++) {
cylinder_t *cyl = &dive->cylinder[idx];
+ unsigned int start, end;
+
+ start = cyl->start.mbar ? : cyl->sample_start.mbar;
+ end = cyl->end.mbar ? : cyl->sample_end.mbar;
/* we assume that every valid cylinder has either a working pressure
* or a size; but for good measure let's also accept cylinders with
* a starting or ending pressure*/
- if (cyl->type.workingpressure.mbar || cyl->type.size.mliter ||
- cyl->start.mbar || cyl->end.mbar) {
+ if (cyl->type.workingpressure.mbar || cyl->type.size.mliter || start || end) {
/* 0% O2 strangely means air, so 21% - I don't like that at all */
int o2 = cyl->gasmix.o2.permille ? : 209;
if (offset > 0) {
@@ -174,9 +185,8 @@ void show_dive_stats(struct dive *dive)
}
/* and if we have size, start and end pressure, we can
* calculate the total gas used */
- if (cyl->type.size.mliter && cyl->start.mbar && cyl->end.mbar)
- gas_used += cyl->type.size.mliter / 1000.0 *
- (cyl->start.mbar - cyl->end.mbar);
+ if (cyl->type.size.mliter && start && end)
+ gas_used += cyl->type.size.mliter / 1000.0 * (start - end);
}
set_label(info_stat_w.o2he, buf);
if (gas_used) {