summaryrefslogtreecommitdiffstats
path: root/file.c
diff options
context:
space:
mode:
authorGravatar Miika Turkia <miika.turkia@gmail.com>2015-08-23 20:56:18 +0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-08-25 10:59:15 -0700
commit5bda14802057ccbe0b01a3ebc1e2a5f5cea60ba5 (patch)
treeab82804bad59f7905570930f5a3c239e0640560a /file.c
parente47f62f869a17ce6858b4182827a8ac331a139a1 (diff)
downloadsubsurface-5bda14802057ccbe0b01a3ebc1e2a5f5cea60ba5.tar.gz
Remove excessive amount of parameters
This removes the excessive amount of parameters on manual CSV import. We just use appropriate string array than can be directly fed to XSLT parsing. 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.c128
1 files changed, 9 insertions, 119 deletions
diff --git a/file.c b/file.c
index f612656f9..ae6665607 100644
--- a/file.c
+++ b/file.c
@@ -1106,79 +1106,16 @@ int parse_seabear_csv_file(const char *filename, int timef, int depthf, int temp
return ret;
}
-int parse_manual_file(const char *filename, int sepidx, int units, int dateformat, int durationformat,
- int numberf, int datef, int timef, int durationf, int locationf, int gpsf, int maxdepthf, int meandepthf,
- int divemasterf, int buddyf, int suitf, int notesf, int weightf, int tagsf, int cylsizef, int startpresf, int endpresf,
- int o2f, int hef, int airtempf, int watertempf)
+int parse_manual_file(const char *filename, char **params, int pnr)
{
- if (verbose > 4) {
- fprintf(stderr, "filename %s, sepidx %d, units %d, dateformat %d, durationformat %d\n", filename, sepidx, units, dateformat, durationformat);
- fprintf(stderr, "numberf %d, datef %d, timef %d, durationf %d, locationf %d, gpsf %d, maxdepthf %d, meandepthf %d\n", numberf, datef, timef, durationf, locationf, gpsf, maxdepthf, meandepthf);
- fprintf(stderr, "divemasterf %d, buddyf %d, suitf %d, notesf %d, weightf %d, tagsf %d, cylsizef %d, startpresf %d, endpresf %d\n", divemasterf, buddyf, suitf, notesf, weightf, tagsf, cylsizef, startpresf, endpresf);
- fprintf(stderr, "o2f %d, hef %d, airtempf %d, watertempf %d\n", o2f, hef, airtempf, watertempf);
- }
struct memblock mem;
- int pnr = 0;
- char *params[55];
- char numberbuf[MAXCOLDIGITS];
- char datebuf[MAXCOLDIGITS];
- char timebuf[MAXCOLDIGITS];
- char durationbuf[MAXCOLDIGITS];
- char locationbuf[MAXCOLDIGITS];
- char gpsbuf[MAXCOLDIGITS];
- char maxdepthbuf[MAXCOLDIGITS];
- char meandepthbuf[MAXCOLDIGITS];
- char divemasterbuf[MAXCOLDIGITS];
- char buddybuf[MAXCOLDIGITS];
- char suitbuf[MAXCOLDIGITS];
- char notesbuf[MAXCOLDIGITS];
- char weightbuf[MAXCOLDIGITS];
- char tagsbuf[MAXCOLDIGITS];
- char separator_index[MAXCOLDIGITS];
- char unit[MAXCOLDIGITS];
- char datefmt[MAXCOLDIGITS];
- char durationfmt[MAXCOLDIGITS];
- char cylsizebuf[MAXCOLDIGITS];
- char startpresbuf[MAXCOLDIGITS];
- char endpresbuf[MAXCOLDIGITS];
- char o2buf[MAXCOLDIGITS];
- char hebuf[MAXCOLDIGITS];
- char airtempbuf[MAXCOLDIGITS];
- char watertempbuf[MAXCOLDIGITS];
time_t now;
struct tm *timep;
char curdate[9];
char curtime[6];
- int ret;
+ int ret, i;
- if (numberf >= MAXCOLS || datef >= MAXCOLS || timef >= MAXCOLS || durationf >= MAXCOLS || locationf >= MAXCOLS || gpsf >= MAXCOLS || maxdepthf >= MAXCOLS || meandepthf >= MAXCOLS || buddyf >= MAXCOLS || suitf >= MAXCOLS || notesf >= MAXCOLS || weightf >= MAXCOLS || tagsf >= MAXCOLS || cylsizef >= MAXCOLS || startpresf >= MAXCOLS || endpresf >= MAXCOLS || o2f >= MAXCOLS || hef >= MAXCOLS || airtempf >= MAXCOLS || watertempf >= MAXCOLS)
- return report_error(translate("gettextFromC", "Maximum number of supported columns on CSV import is %d"), MAXCOLS);
- snprintf(numberbuf, MAXCOLDIGITS, "%d", numberf);
- snprintf(datebuf, MAXCOLDIGITS, "%d", datef);
- snprintf(timebuf, MAXCOLDIGITS, "%d", timef);
- snprintf(durationbuf, MAXCOLDIGITS, "%d", durationf);
- snprintf(locationbuf, MAXCOLDIGITS, "%d", locationf);
- snprintf(gpsbuf, MAXCOLDIGITS, "%d", gpsf);
- snprintf(maxdepthbuf, MAXCOLDIGITS, "%d", maxdepthf);
- snprintf(meandepthbuf, MAXCOLDIGITS, "%d", meandepthf);
- snprintf(divemasterbuf, MAXCOLDIGITS, "%d", divemasterf);
- snprintf(buddybuf, MAXCOLDIGITS, "%d", buddyf);
- snprintf(suitbuf, MAXCOLDIGITS, "%d", suitf);
- snprintf(notesbuf, MAXCOLDIGITS, "%d", notesf);
- snprintf(weightbuf, MAXCOLDIGITS, "%d", weightf);
- snprintf(tagsbuf, MAXCOLDIGITS, "%d", tagsf);
- snprintf(separator_index, MAXCOLDIGITS, "%d", sepidx);
- snprintf(unit, MAXCOLDIGITS, "%d", units);
- snprintf(datefmt, MAXCOLDIGITS, "%d", dateformat);
- snprintf(durationfmt, MAXCOLDIGITS, "%d", durationformat);
- snprintf(cylsizebuf, MAXCOLDIGITS, "%d", cylsizef);
- snprintf(startpresbuf, MAXCOLDIGITS, "%d", startpresf);
- snprintf(endpresbuf, MAXCOLDIGITS, "%d", endpresf);
- snprintf(o2buf, MAXCOLDIGITS, "%d", o2f);
- snprintf(hebuf, MAXCOLDIGITS, "%d", hef);
- snprintf(airtempbuf, MAXCOLDIGITS, "%d", airtempf);
- snprintf(watertempbuf, MAXCOLDIGITS, "%d", watertempf);
time(&now);
timep = localtime(&now);
strftime(curdate, DATESTR, "%Y%m%d", timep);
@@ -1187,60 +1124,11 @@ int parse_manual_file(const char *filename, int sepidx, int units, int dateforma
* is not discarded during the transform, thus prepend time with 1 */
strftime(curtime, TIMESTR, "1%H%M", timep);
- params[pnr++] = "numberField";
- params[pnr++] = numberbuf;
- params[pnr++] = "dateField";
- params[pnr++] = datebuf;
- params[pnr++] = "timeField";
- params[pnr++] = timebuf;
- params[pnr++] = "durationField";
- params[pnr++] = durationbuf;
- params[pnr++] = "locationField";
- params[pnr++] = locationbuf;
- params[pnr++] = "gpsField";
- params[pnr++] = gpsbuf;
- params[pnr++] = "maxDepthField";
- params[pnr++] = maxdepthbuf;
- params[pnr++] = "meanDepthField";
- params[pnr++] = meandepthbuf;
- params[pnr++] = "divemasterField";
- params[pnr++] = divemasterbuf;
- params[pnr++] = "buddyField";
- params[pnr++] = buddybuf;
- params[pnr++] = "suitField";
- params[pnr++] = suitbuf;
- params[pnr++] = "notesField";
- params[pnr++] = notesbuf;
- params[pnr++] = "weightField";
- params[pnr++] = weightbuf;
- params[pnr++] = "tagsField";
- params[pnr++] = tagsbuf;
- params[pnr++] = "date";
- params[pnr++] = curdate;
- params[pnr++] = "time";
- params[pnr++] = curtime;
- params[pnr++] = "separatorIndex";
- params[pnr++] = separator_index;
- params[pnr++] = "units";
- params[pnr++] = unit;
- params[pnr++] = "datefmt";
- params[pnr++] = datefmt;
- params[pnr++] = "durationfmt";
- params[pnr++] = durationfmt;
- params[pnr++] = "cylindersizeField";
- params[pnr++] = cylsizebuf;
- params[pnr++] = "startpressureField";
- params[pnr++] = startpresbuf;
- params[pnr++] = "endpressureField";
- params[pnr++] = endpresbuf;
- params[pnr++] = "o2Field";
- params[pnr++] = o2buf;
- params[pnr++] = "heField";
- params[pnr++] = hebuf;
- params[pnr++] = "airtempField";
- params[pnr++] = airtempbuf;
- params[pnr++] = "watertempField";
- params[pnr++] = watertempbuf;
+
+ params[pnr++] = strdup("date");
+ params[pnr++] = strdup(curdate);
+ params[pnr++] = strdup("time");
+ params[pnr++] = strdup(curtime);
params[pnr++] = NULL;
if (filename == NULL)
@@ -1253,5 +1141,7 @@ int parse_manual_file(const char *filename, int sepidx, int units, int dateforma
ret = parse_xml_buffer(filename, mem.buffer, mem.size, &dive_table, (const char **)params);
free(mem.buffer);
+ for (i = 0; i < pnr - 2; ++i)
+ free(params[i]);
return ret;
}