]> sigrok.org Git - sigrok-cli.git/blobdiff - parsers.c
cli: more flexible generic arg parser
[sigrok-cli.git] / parsers.c
index 659bbad88dfca9bf8f4248309829126b4fbb1de3..65a265389f2d0dba79772b8e3cc3e19810bf12cf 100644 (file)
--- a/parsers.c
+++ b/parsers.c
@@ -96,7 +96,7 @@ char **parse_probestring(int max_probes, const char *probestring)
        return probelist;
 }
 
-GHashTable *parse_generic_arg(const char *arg)
+GHashTable *parse_generic_arg(const char *arg, gboolean sep_first)
 {
        GHashTable *hash;
        int i;
@@ -105,10 +105,14 @@ GHashTable *parse_generic_arg(const char *arg)
        if (!arg || !arg[0])
                return NULL;
 
-       hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
+       i = 0;
+       hash = g_hash_table_new_full(g_str_hash, g_str_equal,
+                       g_free, g_free);
        elements = g_strsplit(arg, ":", 0);
-       g_hash_table_insert(hash, g_strdup("sigrok_key"), g_strdup(elements[0]));
-       for (i = 1; elements[i]; i++) {
+       if (sep_first)
+               g_hash_table_insert(hash, g_strdup("sigrok_key"),
+                               g_strdup(elements[i++]));
+       for (; elements[i]; i++) {
                e = strchr(elements[i], '=');
                if (!e)
                        g_hash_table_insert(hash, g_strdup(elements[i]), NULL);