#include <glib.h>
#include "sigrok-cli.h"
-struct sr_channel *find_channel(GSList *channellist, const char *channelname)
+struct sr_channel *find_channel(GSList *channellist, const char *channelname,
+ gboolean exact_case)
{
struct sr_channel *ch;
GSList *l;
ch = NULL;
for (l = channellist; l; l = l->next) {
ch = l->data;
- if (!strcmp(ch->name, channelname))
- break;
+ if (exact_case) {
+ if (strcmp(ch->name, channelname) == 0)
+ break;
+ } else {
+ if (g_ascii_strcasecmp(ch->name, channelname) == 0)
+ break;
+ }
}
ch = l ? l->data : NULL;
ret = SR_ERR;
break;
}
- ch = find_channel(channels, str);
+ ch = find_channel(channels, str, TRUE);
if (!ch) {
g_critical("unknown channel '%d'.", b);
ret = SR_ERR;
break;
}
- ch = find_channel(channels, names[0]);
+ ch = find_channel(channels, names[0], TRUE);
if (!ch) {
g_critical("unknown channel '%s'.", names[0]);
g_strfreev(names);
}
if (names[1]) {
/* Rename channel. */
- g_free(ch->name);
- ch->name = g_strdup(names[1]);
+ sr_dev_channel_name_set(ch, names[1]);
}
channellist = g_slist_append(channellist, ch);
i++;
}
for (; elements[i]; i++) {
+ if (!elements[i][0])
+ continue;
split_key_value(elements[i], &k, &v);
k = g_strdup(k);
v = v ? g_strdup(v) : NULL;
g_hash_table_insert(hash, g_strdup(opts[i]->id),
g_variant_ref_sink(gvar));
} else if (g_variant_is_of_type(opts[i]->def, G_VARIANT_TYPE_INT32)) {
- gvar = g_variant_new_int32(strtoul(s, NULL, 10));
+ gvar = g_variant_new_int32(strtol(s, NULL, 10));
g_hash_table_insert(hash, g_strdup(opts[i]->id),
g_variant_ref_sink(gvar));
} else if (g_variant_is_of_type(opts[i]->def, G_VARIANT_TYPE_UINT64)) {
- gvar = g_variant_new_uint64(strtoul(s, NULL, 10));
+ gvar = g_variant_new_uint64(strtoull(s, NULL, 10));
g_hash_table_insert(hash, g_strdup(opts[i]->id),
g_variant_ref_sink(gvar));
} else if (g_variant_is_of_type(opts[i]->def, G_VARIANT_TYPE_DOUBLE)) {