18 #include <drizzled/charset.h>
19 #include <drizzled/internal/my_sys.h>
20 #include <drizzled/internal/m_string.h>
33 static const char *reserved_names[]=
36 "CON",
"PRN",
"AUX",
"NUL",
37 "COM1",
"COM2",
"COM3",
"COM4",
"COM5",
"COM6",
"COM7",
"COM8",
"COM9",
38 "LPT1",
"LPT2",
"LPT3",
"LPT4",
"LPT5",
"LPT6",
"LPT7",
"LPT8",
"LPT9",
56 static int str_list_find(
const char **list,
const char *str)
58 for (
const char** name= list; *name; name++)
60 if (!my_charset_utf8_general_ci.strcasecmp(*name, str))
74 static char reserved_map[256]=
76 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
77 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
78 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
79 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
80 0,1,0,1,0,0,0,0,0,0,0,0,7,4,5,2,
81 3,0,2,0,4,2,0,0,4,0,0,0,0,0,0,0,
82 0,1,0,1,0,0,0,0,0,0,0,0,7,4,5,2,
83 3,0,2,0,4,2,0,0,4,0,0,0,0,0,0,0,
84 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
85 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
86 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
87 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
88 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
89 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
90 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
91 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
113 int check_if_legal_tablename(
const char *name)
115 return((reserved_map[(
unsigned char) name[0]] & 1) &&
116 (reserved_map[(
unsigned char) name[1]] & 2) &&
117 (reserved_map[(
unsigned char) name[2]] & 4) &&
118 str_list_find(&reserved_names[1], name));