1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

New ctype functions/macros to support many charsets at a time

This commit is contained in:
bar@gw.udmsearch.izhnet.ru
2002-03-12 21:37:58 +04:00
parent 4237e7ace7
commit b37ce8e769
83 changed files with 1336 additions and 956 deletions

View File

@@ -924,14 +924,14 @@ static COMMANDS *find_command (char *name,char cmd_char)
}
else
{
while (isspace(*name))
while (my_isspace(system_charset_info,*name))
name++;
if (strchr(name,';') || strstr(name,"\\g"))
return ((COMMANDS *) 0);
if ((end=strcont(name," \t")))
{
len=(uint) (end - name);
while (isspace(*end))
while (my_isspace(system_charset_info,*end))
end++;
if (!*end)
end=0; // no arguments to function
@@ -943,7 +943,8 @@ static COMMANDS *find_command (char *name,char cmd_char)
for (uint i= 0; commands[i].name; i++)
{
if (commands[i].func &&
((name && !my_casecmp(name,commands[i].name,len) &&
((name &&
!my_strncasecmp(system_charset_info,name,commands[i].name,len) &&
!commands[i].name[len] &&
(!end || (end && commands[i].takes_params))) ||
!name && commands[i].cmd_char == cmd_char))
@@ -971,7 +972,8 @@ static bool add_line(String &buffer,char *line,char *in_string)
for (pos=out=line ; (inchar= (uchar) *pos) ; pos++)
{
if (isspace(inchar) && out == line && buffer.is_empty())
if (my_isspace(default_charset_info,inchar) && out == line &&
buffer.is_empty())
continue;
#ifdef USE_MB
int l;
@@ -1039,7 +1041,7 @@ static bool add_line(String &buffer,char *line,char *in_string)
}
else if (!*in_string && (inchar == '#' ||
inchar == '-' && pos[1] == '-' &&
isspace(pos[2])))
my_isspace(system_charset_info,pos[2])))
break; // comment to end of line
else
{ // Add found char to buffer
@@ -1439,7 +1441,8 @@ com_go(String *buffer,char *line __attribute__((unused)))
(void) com_print(buffer,0);
if (skip_updates &&
(buffer->length() < 4 || my_sortcmp(buffer->ptr(),"SET ",4)))
(buffer->length() < 4 || my_sortcmp(system_charset_info,buffer->ptr(),
"SET ",4)))
{
(void) put_info("Ignoring query to other database",INFO_INFO);
return 0;
@@ -1871,7 +1874,7 @@ com_tee(String *buffer, char *line __attribute__((unused)))
if (status.batch)
return 0;
while (isspace(*line))
while (my_isspace(system_charset_info,*line))
line++;
if (!(param = strchr(line, ' '))) // if outfile wasn't given, use the default
{
@@ -1884,10 +1887,11 @@ com_tee(String *buffer, char *line __attribute__((unused)))
}
else
{
while (isspace(*param))
while (my_isspace(system_charset_info,*param))
param++;
end=strmake(file_name, param, sizeof(file_name)-1);
while (end > file_name && (isspace(end[-1]) || iscntrl(end[-1])))
while (end > file_name && (my_isspace(system_charset_info,end[-1]) ||
my_iscntrl(system_charset_info,end[-1])))
end--;
end[0]=0;
strmov(outfile, file_name);
@@ -1930,7 +1934,7 @@ com_pager(String *buffer, char *line __attribute__((unused)))
if (status.batch)
return 0;
/* Skip space from file name */
while (isspace(*line))
while (my_isspace(system_charset_info,*line))
line++;
if (!(param = strchr(line, ' '))) // if pager was not given, use the default
{
@@ -1946,10 +1950,11 @@ com_pager(String *buffer, char *line __attribute__((unused)))
}
else
{
while (isspace(*param))
while (my_isspace(system_charset_info,*param))
param++;
end=strmake(pager_name, param, sizeof(pager_name)-1);
while (end > pager_name && (isspace(end[-1]) || iscntrl(end[-1])))
while (end > pager_name && (my_isspace(system_charset_info,end[-1]) ||
my_iscntrl(system_charset_info,end[-1])))
end--;
end[0]=0;
strmov(pager, pager_name);
@@ -2083,7 +2088,7 @@ com_connect(String *buffer, char *line)
if (buffer)
{
while (isspace(*line))
while (my_isspace(system_charset_info,*line))
line++;
strnmov(buff,line,sizeof(buff)-1); // Don't destroy history
if (buff[0] == '\\') // Short command
@@ -2129,15 +2134,16 @@ static int com_source(String *buffer, char *line)
FILE *sql_file;
/* Skip space from file name */
while (isspace(*line))
while (my_isspace(system_charset_info,*line))
line++;
if (!(param = strchr(line, ' '))) // Skip command name
return put_info("Usage: \\. <filename> | source <filename>",
INFO_ERROR, 0);
while (isspace(*param))
while (my_isspace(system_charset_info,*param))
param++;
end=strmake(source_name,param,sizeof(source_name)-1);
while (end > source_name && (isspace(end[-1]) || iscntrl(end[-1])))
while (end > source_name && (my_isspace(system_charset_info,end[-1]) ||
my_iscntrl(system_charset_info,end[-1])))
end--;
end[0]=0;
unpack_filename(source_name,source_name);
@@ -2178,7 +2184,7 @@ com_use(String *buffer __attribute__((unused)), char *line)
char *tmp;
char buff[256];
while (isspace(*line))
while (my_isspace(system_charset_info,*line))
line++;
strnmov(buff,line,sizeof(buff)-1); // Don't destroy history
if (buff[0] == '\\') // Short command
@@ -2463,7 +2469,7 @@ static void remove_cntrl(String &buffer)
{
char *start,*end;
end=(start=(char*) buffer.ptr())+buffer.length();
while (start < end && !isgraph(end[-1]))
while (start < end && !my_isgraph(system_charset_info,end[-1]))
end--;
buffer.length((uint) (end-start));
}