Fixed problem with CSV import and first two lines disappearing

SVN revision: 2446
This commit is contained in:
Stefan Ritt 2012-04-02 15:05:32 +00:00
parent ddb693c3ac
commit 5930d90292

View File

@ -14389,7 +14389,9 @@ void csv_import(LOGBOOK * lbs, const char *csv, const char *csvfile)
}
p = csv;
datecol = -1;
attr_offset = 0;
do {
for (i = 0; i < 10000 && *p; i++) {
if (!in_quotes && (*p == '\r' || *p == '\n'))
@ -14448,18 +14450,20 @@ void csv_import(LOGBOOK * lbs, const char *csv, const char *csvfile)
}
}
/* derive attributes from first line */
if (first && isparam("head")) {
if (first) {
/* check for date column */
for (i = attr_offset = 0; i < n; i++)
if (strieq(list + i * NAME_LENGTH, "Date"))
datecol = i;
/* skip message ID */
for (i = attr_offset = 0; i < n; i++)
if (strieq(list + i * NAME_LENGTH, "Message ID") || strieq(list + i * NAME_LENGTH, "Date"))
attr_offset++;
}
/* derive attributes from first line */
if (first && isparam("head")) {
if (isparam("preview")) {
rsprintf("<tr>\n");
@ -14491,6 +14495,7 @@ void csv_import(LOGBOOK * lbs, const char *csv, const char *csvfile)
return;
lbs->n_attr = n - attr_offset;
}
n_attr = lbs->n_attr;
}
} else {
@ -14501,9 +14506,6 @@ void csv_import(LOGBOOK * lbs, const char *csv, const char *csvfile)
continue;
}
datecol = 1;
attr_offset = 2;
if (isparam("preview")) {
rsprintf("<tr>\n");
for (i = j = attr_offset; i < n_attr + attr_offset; i++) {
@ -14540,24 +14542,27 @@ void csv_import(LOGBOOK * lbs, const char *csv, const char *csvfile)
} else {
/* get date and check it */
strlcpy(date, list + datecol * NAME_LENGTH, sizeof(date));
ltime = date_to_ltime(date);
if (ltime <= 0) {
/* try other date formats */
ltime = convert_datetime(date);
if (ltime <= 0)
ltime = convert_date(date);
if (datecol != -1) {
strlcpy(date, list + datecol * NAME_LENGTH, sizeof(date));
ltime = date_to_ltime(date);
if (ltime <= 0) {
strcpy(str, loc("Invalid date format"));
strlcat(str, ": \"", sizeof(str));
strlcat(str, date, sizeof(str));
strlcat(str, "\"", sizeof(str));
show_error(str);
return;
/* try other date formats */
ltime = convert_datetime(date);
if (ltime <= 0)
ltime = convert_date(date);
if (ltime <= 0) {
strcpy(str, loc("Invalid date format"));
strlcat(str, ": \"", sizeof(str));
strlcat(str, date, sizeof(str));
strlcat(str, "\"", sizeof(str));
show_error(str);
return;
}
/* convert back ltime to date */
get_rfc2822_date(date, sizeof(date), ltime);
}
/* convert back ltime to date */
get_rfc2822_date(date, sizeof(date), ltime);
}
} else
date[0] = 0;
if (!filltext) {
/* submit entry */