Commit 7aa25240 authored by hf@deer.(none)'s avatar hf@deer.(none)

Fix for bug #4809 (Backticks not handled in mysql)

parent 4c7c2343
...@@ -2201,17 +2201,49 @@ static int com_source(String *buffer, char *line) ...@@ -2201,17 +2201,49 @@ static int com_source(String *buffer, char *line)
static int static int
com_use(String *buffer __attribute__((unused)), char *line) com_use(String *buffer __attribute__((unused)), char *line)
{ {
char *tmp, buff[FN_REFLEN + 1]; char tmp[FN_REFLEN], buff[FN_REFLEN + 1];
MYSQL_RES *res; MYSQL_RES *res;
MYSQL_ROW row; MYSQL_ROW row;
char *c_buff, *c_tmp;
while (isspace(*line)) while (isspace(*line))
line++; line++;
strnmov(buff,line,sizeof(buff)-1); // Don't destroy history strnmov(buff,line,sizeof(buff)-1); // Don't destroy history
if (buff[0] == '\\') // Short command if (buff[0] == '\\') // Short command
buff[1]=' '; buff[1]=' ';
tmp=(char *) strtok(buff," \t;"); // Skip connect command c_buff= buff;
if (!tmp || !(tmp=(char *) strtok(NullS," \t;"))) while ((*c_buff != ' ') && (*c_buff != '\t')) // Skip connect command
c_buff++;
c_buff++;
while ((*c_buff == ' ') || (*c_buff == '\t'))
c_buff++;
c_tmp= tmp;
if (*c_buff == '`') // Handling backticks
{
c_buff++;
for (; *c_buff; c_tmp++)
{
if (*c_buff == '`')
{
if (c_buff[1] == '`')
{
*c_tmp= '`';
c_buff+= 2;
}
else
break;
}
else
*c_tmp= *(c_buff++);
}
}
else
for (; !strchr(" \t;", *c_buff); c_buff++, c_tmp++)
*c_tmp= *c_buff;
*c_tmp= '\0';
if (!*tmp)
{ {
put_info("USE must be followed by a database name",INFO_ERROR); put_info("USE must be followed by a database name",INFO_ERROR);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment