struct context *inc;
const char *s;
- in->sdi = sr_dev_inst_new(SR_ST_ACTIVE, NULL, NULL, NULL);
+ in->sdi = g_malloc0(sizeof(struct sr_dev_inst));
in->priv = inc = g_malloc0(sizeof(struct context));
inc->single_column = g_variant_get_int32(g_hash_table_lookup(options, "single-column"));
static int initial_parse(const struct sr_input *in, GString *buf)
{
struct context *inc;
- struct sr_channel *ch;
GString *channel_name;
gsize num_columns, l, i;
unsigned int line_number;
g_string_assign(channel_name, columns[i]);
else
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);
+ sr_channel_new(in->sdi, i, SR_CHANNEL_LOGIC, TRUE, channel_name->str);
}
g_string_free(channel_name, TRUE);
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;
.id = "csv",
.name = "CSV",
.desc = "Comma-separated values",
+ .exts = (const char*[]){"csv", NULL},
.metadata = { SR_INPUT_META_MIMETYPE },
.options = get_options,
.format_match = format_match,