summaryrefslogtreecommitdiffstats
path: root/file.c
diff options
context:
space:
mode:
authorGravatar Miika Turkia <miika.turkia@gmail.com>2013-10-19 08:17:13 +0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-10-20 15:27:07 +0200
commit89770249d0c71d6670fc61abbdca65c284dc77c2 (patch)
tree1a12717204ea879be083505d66768badbd43a14e /file.c
parent3e485113185bf230ee408e921de958dfa804fc0e (diff)
downloadsubsurface-89770249d0c71d6670fc61abbdca65c284dc77c2.tar.gz
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>
Diffstat (limited to 'file.c')
-rw-r--r--file.c30
1 files changed, 23 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 <errno.h>
#include "gettext.h"
#include <zip.h>
+#include <time.h>
#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;