From 05163f5e8ca9c65145f845345a411d26f0cd5af4 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 15 Dec 2002 22:30:26 +0400 Subject: adding check for duplicated symbols BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted --- sql/gen_lex_hash.cc | 58 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 52 insertions(+), 6 deletions(-) (limited to 'sql/gen_lex_hash.cc') diff --git a/sql/gen_lex_hash.cc b/sql/gen_lex_hash.cc index 7daab228093..7ae28e0ce77 100644 --- a/sql/gen_lex_hash.cc +++ b/sql/gen_lex_hash.cc @@ -200,19 +200,21 @@ void insert_sql_functions() } } -void generate_find_structs() +void calc_length() { - root_by_len= 0; - max_len=0; - size_t i; - SYMBOL *cur, *end= symbols + array_elements(symbols); for (cur= symbols; cur < end; cur++) cur->length=(uchar) strlen(cur->name); end= sql_functions + array_elements(sql_functions); for (cur= sql_functions; curlength=(uchar) strlen(cur->name); - +} + +void generate_find_structs() +{ + root_by_len= 0; + max_len=0; + insert_symbols(); root_by_len2= root_by_len; @@ -351,6 +353,45 @@ static int get_options(int argc, char **argv) return(0); } +int check_dup_symbols(SYMBOL *s1, SYMBOL *s2) +{ + if (s1->length!=s2->length || strncmp(s1->name,s2->name,s1->length)) + return 0; + + const char *err_tmpl= "\ngen_lex_hash fatal error : \ +Unfortunately gen_lex_hash can not generate a hash,\n since \ +your lex.h has duplicate definition for a symbol \"%s\"\n\n"; + printf (err_tmpl,s1->name); + fprintf (stderr,err_tmpl,s1->name); + + return 1; +} + +int check_duplicates() +{ + SYMBOL *cur1, *cur2, *s_end, *f_end; + + s_end= symbols + array_elements(symbols); + f_end= sql_functions + array_elements(sql_functions); + + for (cur1= symbols; cur1