From be79e9c3467b324216688047c81315f0d3e51d24 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Sat, 1 Dec 2018 12:06:46 +0100 Subject: src: introduce simple hints on incorrect identifier MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # cat test.nft define test = "1.2.3.4" table ip x { chain y { ip saddr $text } } # nft -f test.nft test.nft:5:13-16: Error: unknown identifier 'text'; did you mean identifier ‘test’? ip saddr $text ^^^^ Signed-off-by: Pablo Neira Ayuso --- src/rule.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/rule.c') diff --git a/src/rule.c b/src/rule.c index 0a3c1970..ad300129 100644 --- a/src/rule.c +++ b/src/rule.c @@ -692,6 +692,24 @@ struct symbol *symbol_lookup(const struct scope *scope, const char *identifier) return NULL; } +struct symbol *symbol_lookup_fuzzy(const struct scope *scope, + const char *identifier) +{ + struct string_misspell_state st; + struct symbol *sym; + + string_misspell_init(&st); + + while (scope != NULL) { + list_for_each_entry(sym, &scope->symbols, list) + string_misspell_update(sym->identifier, identifier, + sym, &st); + + scope = scope->parent; + } + return st.obj; +} + static const char * const chain_type_str_array[] = { "filter", "nat", -- cgit v1.2.3