From 61fecfcd6f3e2e66e136c22195c38c99be8baa31 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Wed, 20 Jun 2018 11:08:56 +0200 Subject: Put lookup logic for meta-commands. --- src/exchange-lib/testing_api_loop.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/exchange-lib/testing_api_loop.c') diff --git a/src/exchange-lib/testing_api_loop.c b/src/exchange-lib/testing_api_loop.c index 7efadb39..03485068 100644 --- a/src/exchange-lib/testing_api_loop.c +++ b/src/exchange-lib/testing_api_loop.c @@ -57,11 +57,33 @@ TALER_TESTING_interpreter_lookup_command "Attempt to lookup command for empty label\n"); return NULL; } - for (unsigned int i=0;NULL != (cmd = &is->commands[i])->label;i++) + for (unsigned int i=0; + NULL != (cmd = &is->commands[i])->label; + i++) + { + /* Give precedence to top-level commands. */ if ( (NULL != cmd->label) && (0 == strcmp (cmd->label, label)) ) return cmd; + + if (GNUNET_YES == cmd->meta) + { + struct TALER_TESTING_Command *batch = cmd->cls; + + /* NOTE: the batch does need a "end" CMD in the + * last place. */ + for (unsigned int i=0; + NULL != (cmd = &batch[i])->label; + i++) + { + if ( (NULL != cmd->label) && + (0 == strcmp (cmd->label, + label)) ) + return cmd; + } + } + } GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Command not found: %s\n", label); -- cgit v1.2.3