1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

Changes that will enable proper wildcarding of databases, plus

proper escaping of databases with '_' in their name.
More explanations in the manual.
This commit is contained in:
unknown
2002-11-08 17:02:33 +02:00
parent 54ebb4175b
commit 91181f0905

View File

@ -51,6 +51,7 @@ static my_string opt_mysql_unix_port=0;
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
int error; int error;
my_bool first_argument_uses_wildcards=0;
char *wild; char *wild;
MYSQL mysql; MYSQL mysql;
MY_INIT(argv[0]); MY_INIT(argv[0]);
@ -58,21 +59,37 @@ int main(int argc, char **argv)
get_options(&argc,&argv); get_options(&argc,&argv);
wild=0; wild=0;
if (argc && strcont(argv[argc-1],"*?%_")) if (argc)
{ {
char *pos; char *pos= argv[argc-1], *to;
for (to= pos ; *pos ; pos++, to++)
wild=argv[--argc]; {
for (pos=wild ; *pos ; pos++) switch (*pos)
{ /* Unix wildcards to sql */ {
if (*pos == '*') case '*':
*pos='%'; *pos= '%';
else if (*pos == '?') first_argument_uses_wildcards= 1;
*pos='_'; break;
} case '?':
*pos= '_';
first_argument_uses_wildcards= 1;
break;
case '%':
case '_':
first_argument_uses_wildcards= 1;
break;
case '\\':
pos++;
default: break;
}
*to= *pos;
}
*to= *pos; // just to copy a '\0' if '\\' was used
} }
if (first_argument_uses_wildcards)
wild= argv[--argc];
else if (argc == 3) /* We only want one field */ else if (argc == 3) /* We only want one field */
wild=argv[--argc]; wild= argv[--argc];
if (argc > 2) if (argc > 2)
{ {
@ -88,7 +105,7 @@ int main(int argc, char **argv)
opt_ssl_capath, opt_ssl_cipher); opt_ssl_capath, opt_ssl_cipher);
#endif #endif
if (!(mysql_real_connect(&mysql,host,user,opt_password, if (!(mysql_real_connect(&mysql,host,user,opt_password,
argv[0],opt_mysql_port,opt_mysql_unix_port, (first_argument_uses_wildcards) ? "" : argv[0],opt_mysql_port,opt_mysql_unix_port,
0))) 0)))
{ {
fprintf(stderr,"%s: %s\n",my_progname,mysql_error(&mysql)); fprintf(stderr,"%s: %s\n",my_progname,mysql_error(&mysql));