/* no completion */
if (str[n] != '\0')
- return 0; // XXX add a no_match instead?
+ return EC_PARSED_NOMATCH;
if (ec_completed_add_item(completed, gen_node, NULL, EC_COMP_FULL,
str, node->string) < 0)
ec_free(node->string);
}
-static size_t ec_node_str_get_max_parse_len(const struct ec_node *gen_node)
-{
- (void)gen_node;
- return 1;
-}
-
static struct ec_node_type ec_node_str_type = {
.name = "str",
.parse = ec_node_str_parse,
.complete = ec_node_str_complete,
- .get_max_parse_len = ec_node_str_get_max_parse_len,
.desc = ec_node_str_desc,
.size = sizeof(struct ec_node_str),
.free_priv = ec_node_str_free_priv,
if (str == NULL)
return -EINVAL;
- if (node->string != NULL)
- return -EEXIST; // XXX allow to replace
-
+ ec_free(node->string);
node->string = ec_strdup(str);
if (node->string == NULL)
return -ENOMEM;
}
ret |= EC_TEST_CHECK_COMPLETE(node,
EC_NODE_ENDLIST,
- EC_NODE_ENDLIST,
- "");
+ EC_NODE_ENDLIST);
ret |= EC_TEST_CHECK_COMPLETE(node,
"", EC_NODE_ENDLIST,
"foo", EC_NODE_ENDLIST);