+ type->description = p;
+}
+
+
+/*
+ * There are two ways to give cylinder size information:
+ * - total amount of gas in cuft (depends on working pressure and physical size)
+ * - physical size
+ *
+ * where "physical size" is the one that actually matters and is sane.
+ *
+ * We internally use physical size only. But we save the workingpressure
+ * so that we can do the conversion if required.
+ */
+static void sanitize_cylinder_type(cylinder_type_t *type)
+{
+ double volume_of_air, atm, volume;
+
+ /* If we have no working pressure, it had *better* be just a physical size! */
+ if (!type->workingpressure.mbar)
+ return;
+
+ /* No size either? Nothing to go on */
+ if (!type->size.mliter)
+ return;
+
+ /* Ok, we have both size and pressure: try to match a description */
+ match_standard_cylinder(type);
+
+ /* .. and let's assume that the 'size' was cu ft of air */
+ volume_of_air = type->size.mliter * 28.317; /* milli-cu ft to milliliter */
+ atm = type->workingpressure.mbar / 1013.25; /* working pressure in atm */
+ volume = volume_of_air / atm; /* milliliters at 1 atm: "true size" */
+ type->size.mliter = volume + 0.5;