summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2011-12-12 13:00:33 +0100
committerSergei Golubchik <sergii@pisem.net>2011-12-12 13:00:33 +0100
commit745c53ec06794c4faaf0c9c3f9a1bf4ffc3f0759 (patch)
tree560abf8d5af4977dcacbce07a9502cb84d6bb003 /client
parent63d32c115dd962b53cf7bcaa340472ee2f44f9e2 (diff)
parent6404504d0c10d58ad5861bdb72edd54508f1364c (diff)
downloadmariadb-git-745c53ec06794c4faaf0c9c3f9a1bf4ffc3f0759.tar.gz
5.2->5.3 merge
Diffstat (limited to 'client')
-rw-r--r--client/mysql.cc7
-rw-r--r--client/mysqltest.cc44
2 files changed, 48 insertions, 3 deletions
diff --git a/client/mysql.cc b/client/mysql.cc
index 34995b413b4..ecef2214848 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -4337,9 +4337,10 @@ char *get_arg(char *line, my_bool get_next_arg)
string, and the "dialog" plugin will free() it.
*/
-extern "C" char *mysql_authentication_dialog_ask(MYSQL *mysql, int type,
- const char *prompt,
- char *buf, int buf_len)
+MYSQL_PLUGIN_EXPORT
+char *mysql_authentication_dialog_ask(MYSQL *mysql, int type,
+ const char *prompt,
+ char *buf, int buf_len)
{
char *s=buf;
diff --git a/client/mysqltest.cc b/client/mysqltest.cc
index 189da40dbf6..6d54fa8ad7b 100644
--- a/client/mysqltest.cc
+++ b/client/mysqltest.cc
@@ -117,6 +117,7 @@ static my_bool disable_connect_log= 1;
static my_bool disable_warnings= 0, disable_column_names= 0;
static my_bool prepare_warnings_enabled= 0;
static my_bool disable_info= 1;
+static char *opt_plugin_dir= 0, *opt_default_auth;
static my_bool abort_on_error= 1;
static my_bool server_initialized= 0;
static my_bool is_windows= 0;
@@ -6238,6 +6239,13 @@ static struct my_option my_long_options[] =
{"view-protocol", OPT_VIEW_PROTOCOL, "Use views for select.",
&view_protocol, &view_protocol, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"plugin_dir", OPT_PLUGIN_DIR, "Directory for client-side plugins.",
+ (uchar**) &opt_plugin_dir, (uchar**) &opt_plugin_dir, 0,
+ GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"default_auth", OPT_PLUGIN_DIR,
+ "Default authentication client-side plugin to use.",
+ (uchar**) &opt_default_auth, (uchar**) &opt_default_auth, 0,
+ GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
@@ -8228,6 +8236,12 @@ int main(int argc, char **argv)
if (opt_protocol)
mysql_options(con->mysql,MYSQL_OPT_PROTOCOL,(char*)&opt_protocol);
+ if (opt_plugin_dir && *opt_plugin_dir)
+ mysql_options(con->mysql, MYSQL_PLUGIN_DIR, opt_plugin_dir);
+
+ if (opt_default_auth && *opt_default_auth)
+ mysql_options(con->mysql, MYSQL_DEFAULT_AUTH, opt_default_auth);
+
#ifdef HAVE_OPENSSL
if (opt_use_ssl)
@@ -10194,3 +10208,33 @@ static int setenv(const char *name, const char *value, int overwrite)
return 0;
}
#endif
+
+/*
+ for the purpose of testing (see dialog.test)
+ we replace default mysql_authentication_dialog_ask function with the one,
+ that always reads from stdin with explicit echo.
+
+*/
+MYSQL_PLUGIN_EXPORT
+char *mysql_authentication_dialog_ask(MYSQL *mysql, int type,
+ const char *prompt,
+ char *buf, int buf_len)
+{
+ char *s=buf;
+
+ fputs(prompt, stdout);
+ fputs(" ", stdout);
+
+ if (!fgets(buf, buf_len-1, stdin))
+ buf[0]= 0;
+ else if (buf[0] && (s= strend(buf))[-1] == '\n')
+ s[-1]= 0;
+
+ for (s= buf; *s; s++)
+ fputc(type == 2 ? '*' : *s, stdout);
+
+ fputc('\n', stdout);
+
+ return buf;
+}
+