diff options
-rw-r--r-- | dive.h | 1 | ||||
-rw-r--r-- | equipment.c | 19 | ||||
-rw-r--r-- | info.c | 2 |
3 files changed, 18 insertions, 4 deletions
@@ -95,6 +95,7 @@ typedef struct { extern gboolean cylinder_none(void *_data); extern gboolean no_cylinders(cylinder_t *cyl); extern gboolean cylinders_equal(cylinder_t *cyl1, cylinder_t *cyl2); +extern void copy_cylinders(cylinder_t *cyl1, cylinder_t *cyl2); extern gboolean no_weightsystems(weightsystem_t *ws); extern gboolean weightsystems_equal(weightsystem_t *ws1, weightsystem_t *ws2); diff --git a/equipment.c b/equipment.c index 43bb29d59..d676fc05d 100644 --- a/equipment.c +++ b/equipment.c @@ -461,13 +461,11 @@ gboolean description_equal(const char *desc1, const char *desc2) } /* when checking for the same cylinder we want the size and description to match - but don't compare the start and end pressures */ + but don't compare the start and end pressures, nor the Nitrox/He values */ static gboolean one_cylinder_equal(cylinder_t *cyl1, cylinder_t *cyl2) { return cyl1->type.size.mliter == cyl2->type.size.mliter && cyl1->type.workingpressure.mbar == cyl2->type.workingpressure.mbar && - cyl1->gasmix.o2.permille == cyl2->gasmix.o2.permille && - cyl1->gasmix.he.permille == cyl2->gasmix.he.permille && description_equal(cyl1->type.description, cyl2->type.description); } @@ -481,6 +479,21 @@ gboolean cylinders_equal(cylinder_t *cyl1, cylinder_t *cyl2) return TRUE; } +/* copy size and description of all cylinders from cyl1 to cyl2 */ +void copy_cylinders(cylinder_t *cyl1, cylinder_t *cyl2) +{ + int i; + + for (i = 0; i < MAX_CYLINDERS; i++) { + cyl2[i].type.size.mliter = cyl1[i].type.size.mliter; + cyl2[i].type.workingpressure.mbar = cyl1[i].type.workingpressure.mbar; + if (cyl1[i].type.description) + cyl2[i].type.description = strdup(cyl1[i].type.description); + else + cyl2[i].type.description = NULL; + } +} + static gboolean weightsystem_none(void *_data) { weightsystem_t *ws = _data; @@ -482,7 +482,7 @@ void update_equipment_data(struct dive *dive, struct dive *master) if ( ! cylinders_equal(remember_cyl, master->cylinder) && (no_cylinders(dive->cylinder) || cylinders_equal(dive->cylinder, remember_cyl))) - memcpy(dive->cylinder, master->cylinder, CYL_BYTES); + copy_cylinders(master->cylinder, dive->cylinder); if (! weightsystems_equal(remember_ws, master->weightsystem) && (no_weightsystems(dive->weightsystem) || weightsystems_equal(dive->weightsystem, remember_ws))) |