#include <time.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
+#ifdef XSLT
+#include <libxslt/transform.h>
+#endif
#include "dive.h"
#include "uemis.h"
if (!val.fp)
break;
/* cbar to atm */
- atm = (val.fp / 100) / 1.01325;
+ atm = bar_to_atm(val.fp * 10);
/*
* atm to cm. Why not mm? The precision just isn't
* there.
struct tm tm;
time_t *when = _when;
- strptime(buffer, "%Y-%m-%dT%H:%M:%S", &tm);
+ memset(&tm, 0, sizeof(tm));
+ sscanf(buffer,"%d-%d-%dT%d:%d:%d",
+ &tm.tm_year, &tm.tm_mon, &tm.tm_mday,
+ &tm.tm_hour, &tm.tm_min, &tm.tm_sec);
+ tm.tm_mon -= 1;
+ tm.tm_year -= 1900;
*when = utc_mktime(&tm);
+
}
static void uemis_duration(char *buffer, void *_duration)
if (type->description)
return;
- cuft = type->size.mliter / 28317.0;
+ cuft = ml_to_cuft(type->size.mliter);
cuft *= to_ATM(type->workingpressure);
- psi = type->workingpressure.mbar / 68.95;
+ psi = to_PSI(type->workingpressure);
switch (psi) {
case 2300 ... 2500: /* 2400 psi: LP tank */
return;
if (input_units.volume == CUFT || import_source == SUUNTO) {
- volume_of_air = type->size.mliter * 28.317; /* milli-cu ft to milliliter */
+ /* confusing - we don't really start from ml but millicuft !*/
+ volume_of_air = cuft_to_l(type->size.mliter);
atm = to_ATM(type->workingpressure); /* working pressure in atm */
volume = volume_of_air / atm; /* milliliters at 1 atm: "true size" */
type->size.mliter = volume + 0.5;
set_filename(filename);
reset_all();
dive_start();
+#ifdef XSLT
+ doc = test_xslt_transforms(doc);
+#endif
traverse(xmlDocGetRootElement(doc));
dive_end();
xmlFreeDoc(doc);
{
LIBXML_TEST_VERSION
}
+
+#ifdef XSLT
+xmlDoc *test_xslt_transforms(xmlDoc *doc)
+{
+ xmlDoc *transformed;
+ xsltStylesheetPtr xslt = NULL;
+ xmlNode *root_element = xmlDocGetRootElement(doc);
+ if (strcasecmp(root_element->name, "JDiveLog") == 0) {
+ xmlSubstituteEntitiesDefault(1);
+ xslt = xsltParseStylesheetFile(XSLT G_DIR_SEPARATOR_S "jdivelog2subsurface.xslt");
+ if (xslt == NULL)
+ return doc;
+ transformed = xsltApplyStylesheet(xslt, doc, NULL);
+ xmlFreeDoc(doc);
+ xsltFreeStylesheet(xslt);
+ return transformed;
+ }
+ return doc;
+}
+#endif