diff options
author | Sergei Golubchik <sergii@pisem.net> | 2011-12-12 13:00:33 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2011-12-12 13:00:33 +0100 |
commit | 745c53ec06794c4faaf0c9c3f9a1bf4ffc3f0759 (patch) | |
tree | 560abf8d5af4977dcacbce07a9502cb84d6bb003 /client | |
parent | 63d32c115dd962b53cf7bcaa340472ee2f44f9e2 (diff) | |
parent | 6404504d0c10d58ad5861bdb72edd54508f1364c (diff) | |
download | mariadb-git-745c53ec06794c4faaf0c9c3f9a1bf4ffc3f0759.tar.gz |
5.2->5.3 merge
Diffstat (limited to 'client')
-rw-r--r-- | client/mysql.cc | 7 | ||||
-rw-r--r-- | client/mysqltest.cc | 44 |
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; +} + |