X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Finput%2Fcsv.c;h=49bd73c8739623eaa3cedb93622666aa1bb6f861;hb=6508992d04bf972ae98b8c7e97201c5164501687;hp=e72357bb6d7f7983c02fd486af9c60467c8e3273;hpb=d5cc282ff8026173c14ff6957482a24b2d6feef3;p=libsigrok.git diff --git a/src/input/csv.c b/src/input/csv.c index e72357bb..49bd73c8 100644 --- a/src/input/csv.c +++ b/src/input/csv.c @@ -506,7 +506,7 @@ static int initial_parse(const struct sr_input *in, GString *buf) } if (!lines[l]) { /* Not enough data for a proper line yet. */ - ret = SR_OK_CONTINUE; + ret = SR_ERR_NA; goto out; } @@ -557,7 +557,7 @@ static int initial_parse(const struct sr_input *in, GString *buf) if (inc->header && inc->multi_column_mode && strlen(columns[i])) g_string_assign(channel_name, columns[i]); else - g_string_printf(channel_name, "%lu", i); + g_string_printf(channel_name, "%zu", i); ch = sr_channel_new(i, SR_CHANNEL_LOGIC, TRUE, channel_name->str); in->sdi->channels = g_slist_append(in->sdi->channels, ch); } @@ -651,6 +651,7 @@ static int process_buffer(struct sr_input *in) else max_columns = 1; + ret = SR_OK; lines = g_strsplit_set(in->buf->str, "\r\n", 0); for (l = 0; lines[l]; l++) { inc->line_number++; @@ -666,6 +667,13 @@ static int process_buffer(struct sr_input *in) continue; } + /* Skip the header line, its content was used as the channel names. */ + if (inc->header) { + sr_spew("Header line %zu skipped.", inc->line_number); + inc->header = FALSE; + continue; + } + if (!(columns = parse_line(lines[l], inc, max_columns))) { sr_err("Error while parsing line %zu.", inc->line_number); return SR_ERR;