From: Bert Vermeulen Date: Thu, 31 May 2012 21:57:16 +0000 (+0200) Subject: cli: strip off PD arguments before selecting for annotation X-Git-Tag: sigrok-cli-0.4.0~108 X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=commitdiff_plain;h=41e915a698501da5a8689d020d913e78815868ee cli: strip off PD arguments before selecting for annotation This fixes the bug where -A didn't work if the PD in question had arguments. --- diff --git a/sigrok-cli.c b/sigrok-cli.c index f13e092..a8e263d 100644 --- a/sigrok-cli.c +++ b/sigrok-cli.c @@ -745,7 +745,7 @@ int setup_pd_stack(void) { struct srd_decoder_inst *di_from, *di_to; int ret, i; - char **pds; + char **pds, **ids; /* Set up the protocol decoder stack. */ pds = g_strsplit(opt_pds, ",", 0); @@ -761,17 +761,26 @@ int setup_pd_stack(void) } } - if (!(di_from = srd_inst_find_by_id(pds[0]))) { + /* First PD goes at the bottom of the stack. */ + ids = g_strsplit(pds[0], ":", 0); + if (!(di_from = srd_inst_find_by_id(ids[0]))) { + g_strfreev(ids); g_critical("Cannot stack protocol decoder '%s': " "instance not found.", pds[0]); return 1; } + g_strfreev(ids); + + /* Every subsequent PD goes on top. */ for (i = 1; pds[i]; i++) { - if (!(di_to = srd_inst_find_by_id(pds[i]))) { + ids = g_strsplit(pds[i], ":", 0); + if (!(di_to = srd_inst_find_by_id(ids[0]))) { + g_strfreev(ids); g_critical("Cannot stack protocol decoder '%s': " "instance not found.", pds[i]); return 1; } + g_strfreev(ids); if ((ret = srd_inst_stack(di_from, di_to)) != SRD_OK) return 1;