From 89770249d0c71d6670fc61abbdca65c284dc77c2 Mon Sep 17 00:00:00 2001 From: Miika Turkia Date: Sat, 19 Oct 2013 08:17:13 +0300 Subject: 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 Signed-off-by: Dirk Hohndel --- file.c | 30 +++++++++++++++++++++++------- xslt/csv2xml.xslt | 8 ++++++++ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/file.c b/file.c index 39d9a256b..45b153d25 100644 --- a/file.c +++ b/file.c @@ -6,6 +6,7 @@ #include #include "gettext.h" #include +#include #include "dive.h" #include "file.h" @@ -326,24 +327,35 @@ void parse_file(const char *filename, char **error) #define MAXCOLDIGITS 3 #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; - char *params[7]; + char *params[11]; char timebuf[MAXCOLDIGITS]; char depthbuf[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; *error = malloc(len); snprintf(*error, len, translate("gettextFromC", "Maximum number of supported columns on CSV import is %d"), MAXCOLS); return; } - snprintf(timebuf, MAXCOLDIGITS, "%d", time); - snprintf(depthbuf, MAXCOLDIGITS, "%d", depth); - snprintf(tempbuf, MAXCOLDIGITS, "%d", temp); + snprintf(timebuf, MAXCOLDIGITS, "%d", timef); + snprintf(depthbuf, MAXCOLDIGITS, "%d", depthf); + 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[1] = timebuf; @@ -351,7 +363,11 @@ void parse_csv_file(const char *filename, int time, int depth, int temp, char ** params[3] = depthbuf; params[4] = "tempField"; params[5] = tempbuf; - params[6] = NULL; + params[6] = "date"; + params[7] = curdate; + params[8] = "time"; + params[9] = curtime; + params[10] = NULL; if (filename == NULL) return; diff --git a/xslt/csv2xml.xslt b/xslt/csv2xml.xslt index f50457257..5c9abfe1e 100644 --- a/xslt/csv2xml.xslt +++ b/xslt/csv2xml.xslt @@ -5,6 +5,8 @@ + + @@ -15,6 +17,12 @@ + + + + + + -- cgit v1.2.3-70-g09d2