mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 00:56:19 +00:00
lib: Fix broken disambiguation on leader tokens
Fix incorrect assumption that the set of first tokens of all commands are perfectly unambiguous Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
parent
b84f1d850a
commit
eaf46b79b6
@ -91,17 +91,18 @@ match_command (struct graph_node *start,
|
|||||||
{
|
{
|
||||||
matcher_rv = MATCHER_NO_MATCH;
|
matcher_rv = MATCHER_NO_MATCH;
|
||||||
|
|
||||||
// call recursive matcher on each starting child
|
// prepend a dummy token to match that pesky start node
|
||||||
for (unsigned int i = 0; i < vector_active (start->children); i++)
|
vector vvline = vector_init (vline->alloced + 1);
|
||||||
|
vector_set_index (vvline, 0, (void *) "dummy");
|
||||||
|
memcpy (vvline->index + 1, vline->index, sizeof (void *) * vline->alloced);
|
||||||
|
vvline->active = vline->active + 1;
|
||||||
|
|
||||||
|
if ((*argv = match_command_r (start, vvline, 0))) // successful match
|
||||||
{
|
{
|
||||||
*argv = match_command_r (vector_slot (start->children, i), vline, 0);
|
list_delete_node (*argv, listhead (*argv));
|
||||||
if (*argv) // successful match
|
struct graph_node *end = listgetdata (listtail (*argv));
|
||||||
{
|
*el = end->element;
|
||||||
struct graph_node *end = listgetdata (listtail (*argv));
|
assert (*el);
|
||||||
*el = end->element;
|
|
||||||
assert (*el);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return matcher_rv;
|
return matcher_rv;
|
||||||
@ -344,6 +345,9 @@ min_match_level (enum node_type type)
|
|||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
|
// anything matches a start node, for the sake of recursion
|
||||||
|
case START_GN:
|
||||||
|
return no_match;
|
||||||
// allowing words to partly match enables command abbreviation
|
// allowing words to partly match enables command abbreviation
|
||||||
case WORD_GN:
|
case WORD_GN:
|
||||||
return partly_match;
|
return partly_match;
|
||||||
|
Loading…
Reference in New Issue
Block a user