1
0
Fork 0
mirror of https://github.com/subsurface/subsurface.git synced 2025-02-19 22:16:15 +00:00

Add current date to CSV import

Since CSV import does not include date/time stamp, we need to generate
one for ourselves. This patch uses current time of the import as dive
time.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Miika Turkia 2013-10-19 08:17:13 +03:00 committed by Dirk Hohndel
parent 3e48511318
commit 89770249d0
2 changed files with 31 additions and 7 deletions

30
file.c
View file

@ -6,6 +6,7 @@
#include <errno.h> #include <errno.h>
#include "gettext.h" #include "gettext.h"
#include <zip.h> #include <zip.h>
#include <time.h>
#include "dive.h" #include "dive.h"
#include "file.h" #include "file.h"
@ -326,24 +327,35 @@ void parse_file(const char *filename, char **error)
#define MAXCOLDIGITS 3 #define MAXCOLDIGITS 3
#define MAXCOLS 100 #define MAXCOLS 100
void parse_csv_file(const char *filename, int time, int depth, int temp, char **error) void parse_csv_file(const char *filename, int timef, int depthf, int tempf, char **error)
{ {
struct memblock mem; struct memblock mem;
char *params[7]; char *params[11];
char timebuf[MAXCOLDIGITS]; char timebuf[MAXCOLDIGITS];
char depthbuf[MAXCOLDIGITS]; char depthbuf[MAXCOLDIGITS];
char tempbuf[MAXCOLDIGITS]; char tempbuf[MAXCOLDIGITS];
time_t now;
struct tm *timep;
char curdate[9];
char curtime[6];
if (time >= MAXCOLS || depth >= MAXCOLS || temp >= MAXCOLS) { if (timef >= MAXCOLS || depthf >= MAXCOLS || tempf >= MAXCOLS) {
int len = strlen(translate("gettextFromC", "Maximum number of supported columns on CSV import is %d")) + MAXCOLDIGITS; int len = strlen(translate("gettextFromC", "Maximum number of supported columns on CSV import is %d")) + MAXCOLDIGITS;
*error = malloc(len); *error = malloc(len);
snprintf(*error, len, translate("gettextFromC", "Maximum number of supported columns on CSV import is %d"), MAXCOLS); snprintf(*error, len, translate("gettextFromC", "Maximum number of supported columns on CSV import is %d"), MAXCOLS);
return; return;
} }
snprintf(timebuf, MAXCOLDIGITS, "%d", time); snprintf(timebuf, MAXCOLDIGITS, "%d", timef);
snprintf(depthbuf, MAXCOLDIGITS, "%d", depth); snprintf(depthbuf, MAXCOLDIGITS, "%d", depthf);
snprintf(tempbuf, MAXCOLDIGITS, "%d", temp); snprintf(tempbuf, MAXCOLDIGITS, "%d", tempf);
time(&now);
timep = localtime(&now);
strftime(curdate, sizeof(curdate), "%Y%m%d", timep);
/* As the parameter is numeric, we need to ensure that the leading zero
* is not discarded during the transform, thus prepend time with 1 */
strftime(curtime, sizeof(curtime), "1%H%M", timep);
params[0] = "timeField"; params[0] = "timeField";
params[1] = timebuf; params[1] = timebuf;
@ -351,7 +363,11 @@ void parse_csv_file(const char *filename, int time, int depth, int temp, char **
params[3] = depthbuf; params[3] = depthbuf;
params[4] = "tempField"; params[4] = "tempField";
params[5] = tempbuf; params[5] = tempbuf;
params[6] = NULL; params[6] = "date";
params[7] = curdate;
params[8] = "time";
params[9] = curtime;
params[10] = NULL;
if (filename == NULL) if (filename == NULL)
return; return;

View file

@ -5,6 +5,8 @@
<xsl:param name="timeField" select="timeField"/> <xsl:param name="timeField" select="timeField"/>
<xsl:param name="depthField" select="depthField"/> <xsl:param name="depthField" select="depthField"/>
<xsl:param name="tempField" select="tempField"/> <xsl:param name="tempField" select="tempField"/>
<xsl:param name="date" select="date"/>
<xsl:param name="time" select="time"/>
<xsl:output method="xml" indent="yes"/> <xsl:output method="xml" indent="yes"/>
<xsl:variable name="lf"><xsl:text> <xsl:variable name="lf"><xsl:text>
@ -15,6 +17,12 @@
<divelog program="subsurface-import" version="2"> <divelog program="subsurface-import" version="2">
<dives> <dives>
<dive> <dive>
<xsl:attribute name="date">
<xsl:value-of select="concat(substring($date, 1, 4), '-', substring($date, 5, 2), '-', substring($date, 7, 2))"/>
</xsl:attribute>
<xsl:attribute name="time">
<xsl:value-of select="concat(substring($time, 2, 2), ':', substring($time, 4, 2))"/>
</xsl:attribute>
<divecomputerid deviceid="ffffffff" model="stone" /> <divecomputerid deviceid="ffffffff" model="stone" />
<xsl:call-template name="printLine"> <xsl:call-template name="printLine">
<xsl:with-param name="line" select="substring-before(//csv, $lf)"/> <xsl:with-param name="line" select="substring-before(//csv, $lf)"/>