Hi Dave, Thanks for the tip, I didn't realize this was causing this issue But I might not be alone on that one :
$ grep -R "unformat_check_input (input) != UNFORMAT_END_OF_INPUT" ./src/ | wc -l >> 459 This might be a good use-case for trying out coccinelle. Cheers -Nathan Le ven. 25 sept. 2020 à 23:15, Dave Barach via lists.fd.io <dbarach= cisco....@lists.fd.io> a écrit : > Please don’t be this person: > > > > static clib_error_t * > > my_cli_command_fn (vlib_main_t * vm, > > unformat_input_t * input, > > vlib_cli_command_t * cmd) > > { > > while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) > > { > > if (unformat (input, "mystuff")) > > else > > return (clib_error_return (0, "unknown input '%U'", > > format_unformat_error, input)); > > } > > return (NULL); > > } > > /* *INDENT-OFF* */ > > VLIB_CLI_COMMAND (my_command, static) = > > { > > .path = "my command", > > .function = my_cli_command_fn, > > }; > > > > Commands coded like this work fine when typed one at a time, but they blow > chunks when scripted... > > > > Script: > > my command mystuff > > comment { ouch my_cli_command_fn ate the word comment and threw up! } > > > > Instead, wrap the while(...) loop with the unformat_line_input guitar lick: > > > > elib_error_t *e = 0; > > /* Get a line of input. */ > > if (!unformat_user (input, unformat_line_input, line_input)) > > return 0; > > > > while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) > > { > > if (unformat (line_input, “mystuff”)) > > ; > > else { > > e = clib_error_return (0, "unknown input '%U'", > > format_unformat_error, input); > > goto done; > > } > > } > > > > > > done: > > unformat_free (line_input); > > return e; > > > > Thanks... Dave > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#17545): https://lists.fd.io/g/vpp-dev/message/17545 Mute This Topic: https://lists.fd.io/mt/77125668/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-