From 4b87e256eba51a8711c24fbae501ac7975b4ecd3 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Wed, 19 Jan 2000 12:30:19 +0000 Subject: Split off general commands to cmds.c. Added `show symbols' command which dumps whole symbol table together with symbol types etc. --- conf/cf-lex.l | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'conf/cf-lex.l') diff --git a/conf/cf-lex.l b/conf/cf-lex.l index df0f3c1..a54cdd9 100644 --- a/conf/cf-lex.l +++ b/conf/cf-lex.l @@ -308,3 +308,43 @@ cf_pop_scope(void) conf_this_scope = conf_this_scope->next; ASSERT(conf_this_scope); } + +struct symbol * +cf_walk_symbols(struct config *cf, struct symbol *sym, int *pos) +{ + for(;;) + { + if (!sym) + { + if (*pos >= SYM_HASH_SIZE) + return NULL; + sym = cf->sym_hash[(*pos)++]; + } + else + sym = sym->next; + if (sym && sym->scope->active) + return sym; + } +} + +char * +cf_symbol_class_name(struct symbol *sym) +{ + switch (sym->class) + { + case SYM_VOID: + return "undefined"; + case SYM_PROTO: + return "protocol"; + case SYM_NUMBER: + return "numeric constant"; + case SYM_FUNCTION: + return "function"; + case SYM_FILTER: + return "filter"; + case SYM_TABLE: + return "routing table"; + default: + return "unknown type"; + } +} -- cgit v1.2.3