summaryrefslogtreecommitdiffstats
path: root/equipment.c
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2012-09-21 14:06:57 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2012-09-21 21:01:42 -0700
commitc4c636fb4ffa942f282d57556a579de311b96c43 (patch)
tree23e25ad17c2bcd96117c6e5792c33932507d341f /equipment.c
parent26f550403db728640db0cb906224c6acb76edfde (diff)
downloadsubsurface-c4c636fb4ffa942f282d57556a579de311b96c43.tar.gz
Fix missing save of (almost empty) cylinder information
If we have no explicit cylinder info at all (it's normal air, no size or working pressure information, and no beginning/end pressure information), we don't save the cylinders in question because that would be redundant. Such non-saved cylinders may still show up in the equipment list because there may be implicit mention of them elsewhere, notably due to sample data, so not saving them is the right thing to do - there is nothing to save. However, we missed one case: if there were other cylinders that *did* have explicit information in it following such an uninteresting cylinder, we do need to save the cylinder information for the useless case - if only in order to be able to save the non-useless information for subsequent cylinders. This patch does that. Now, if you had an air-filled cylinder with no information as your first cylinder, and a 51% nitrox as your second one, it will save that information as <cylinder /> <cylinder o2='51.0%' /> rather than dropping the cylinder information entirely. This bug has been there for a long time, and was hidden by the fact that normally you'd fill in cylinder descriptions etc after importing new dives. It also used to be that we saved the cylinder beginning/end pressure even if that was generated from the sample data, so if you imported from a air-integrated computer and had samples for that cylinder, we used to save it even though it was technically redundant. We stopped saving redundant air sample information in commit 0089dd8819b7 ("Don't save cylinder start/end pressures unless set by hand"). Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Removed start and end in save_cylinder_info(). These two variables are no longer used. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'equipment.c')
-rw-r--r--equipment.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/equipment.c b/equipment.c
index fc31d9729..7c473f6df 100644
--- a/equipment.c
+++ b/equipment.c
@@ -444,20 +444,29 @@ static void show_weightsystem(weightsystem_t *ws, struct ws_widget *weightsystem
set_weight_weight_spinbutton(weightsystem_widget, ws->weight.grams);
}
-gboolean cylinder_none(void *_data)
+gboolean cylinder_nodata(cylinder_t *cyl)
{
- cylinder_t *cyl = _data;
return !cyl->type.size.mliter &&
!cyl->type.workingpressure.mbar &&
!cyl->type.description &&
!cyl->gasmix.o2.permille &&
!cyl->gasmix.he.permille &&
- !cyl->sample_start.mbar &&
- !cyl->sample_end.mbar &&
!cyl->start.mbar &&
!cyl->end.mbar;
}
+gboolean cylinder_nosamples(cylinder_t *cyl)
+{
+ return !cyl->sample_start.mbar &&
+ !cyl->sample_end.mbar;
+}
+
+gboolean cylinder_none(void *_data)
+{
+ cylinder_t *cyl = _data;
+ return cylinder_nodata(cyl) && cylinder_nosamples(cyl);
+}
+
gboolean no_cylinders(cylinder_t *cyl)
{
int i;