diff options
-rw-r--r-- | include/mysql/client_plugin.h | 20 | ||||
-rw-r--r-- | libmysql/libmysql.def | 1 | ||||
-rw-r--r-- | plugin/auth/dialog.c | 3 | ||||
-rw-r--r-- | plugin/auth/test_plugin.c | 3 | ||||
-rw-r--r-- | sql-common/client.c | 6 | ||||
-rw-r--r-- | sql-common/client_plugin.c | 22 |
6 files changed, 54 insertions, 1 deletions
diff --git a/include/mysql/client_plugin.h b/include/mysql/client_plugin.h index 9631b090b14..ddd3b64ca56 100644 --- a/include/mysql/client_plugin.h +++ b/include/mysql/client_plugin.h @@ -50,8 +50,11 @@ const char *author; \ const char *desc; \ unsigned int version[3]; \ + const char *license; \ + void *mysql_api; \ int (*init)(char *, size_t, int, va_list); \ - int (*deinit)(); + int (*deinit)(); \ + int (*options)(const char *option, const void *); struct st_mysql_client_plugin { @@ -142,5 +145,20 @@ struct st_mysql_client_plugin * mysql_client_register_plugin(struct st_mysql *mysql, struct st_mysql_client_plugin *plugin); +/** + set plugin options + + Can be used to set extra options and affect behavior for a plugin. + This function may be called multiple times to set several options + + @param plugin an st_mysql_client_plugin structure + @param option a string which specifies the option to set + @param value value for the option. + + @retval 0 on success, 1 in case of failure +**/ +int STDCALL mysql_plugin_options(struct st_mysql_client_plugin *plugin, + const char *option, + const void *value); #endif diff --git a/libmysql/libmysql.def b/libmysql/libmysql.def index ce85d2a4086..fc15fcf0884 100644 --- a/libmysql/libmysql.def +++ b/libmysql/libmysql.def @@ -104,3 +104,4 @@ EXPORTS mysql_server_end mysql_set_character_set mysql_get_character_set_info + mysql_plugin_options diff --git a/plugin/auth/dialog.c b/plugin/auth/dialog.c index 61cc11e23e2..b7c65b3d601 100644 --- a/plugin/auth/dialog.c +++ b/plugin/auth/dialog.c @@ -319,8 +319,11 @@ mysql_declare_client_plugin(AUTHENTICATION) "Sergei Golubchik", "Dialog Client Authentication Plugin", {0,1,0}, + "GPL", + NULL, init_dialog, NULL, + NULL, perform_dialog mysql_end_client_plugin; diff --git a/plugin/auth/test_plugin.c b/plugin/auth/test_plugin.c index 1fa1ad4bf61..caea7795833 100644 --- a/plugin/auth/test_plugin.c +++ b/plugin/auth/test_plugin.c @@ -196,6 +196,9 @@ mysql_declare_client_plugin(AUTHENTICATION) "Georgi Kodinov", "Dialog Client Authentication Plugin", {0,1,0}, + "GPL", + NULL, + NULL, NULL, NULL, test_plugin_client diff --git a/sql-common/client.c b/sql-common/client.c index 3897e44fdaf..0a30ef150e1 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -2283,6 +2283,9 @@ static auth_plugin_t native_password_client_plugin= "R.J.Silk, Sergei Golubchik", "Native MySQL authentication", {1, 0, 0}, + "GPL", + NULL, + NULL, NULL, NULL, native_password_auth_client @@ -2296,6 +2299,9 @@ static auth_plugin_t old_password_client_plugin= "R.J.Silk, Sergei Golubchik", "Old MySQL-3.23 authentication", {1, 0, 0}, + "GPL", + NULL, + NULL, NULL, NULL, old_password_auth_client diff --git a/sql-common/client_plugin.c b/sql-common/client_plugin.c index 9526f5fdc4b..858eb492d7a 100644 --- a/sql-common/client_plugin.c +++ b/sql-common/client_plugin.c @@ -322,6 +322,9 @@ mysql_load_plugin_v(MYSQL *mysql, const char *name, int type, char dlpath[FN_REFLEN+1]; void *sym, *dlhandle; struct st_mysql_client_plugin *plugin; +#ifdef WIN32 + char win_errormsg[2048]; +#endif DBUG_ENTER ("mysql_load_plugin_v"); DBUG_PRINT ("entry", ("name=%s type=%d int argc=%d", name, type, argc)); @@ -359,8 +362,15 @@ mysql_load_plugin_v(MYSQL *mysql, const char *name, int type, if ((dlhandle= dlopen(dlpath, RTLD_NOW))) goto have_plugin; #endif + DBUG_PRINT ("info", ("failed to dlopen")); +#ifdef WIN32 + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, + 0, GetLastError(), 0, win_errormsg, 2048, NULL); + errormsg= win_errormsg; +#else errmsg= dlerror(); +#endif goto err; } @@ -451,3 +461,15 @@ mysql_client_find_plugin(MYSQL *mysql, const char *name, int type) DBUG_RETURN (p); } + +/* see <mysql/client_plugin.h> for a full description */ +int STDCALL mysql_plugin_options(struct st_mysql_client_plugin *plugin, + const char *option, + const void *value) +{ + DBUG_ENTER("mysql_plugin_options"); + /* does the plugin support options call? */ + if (!plugin || !plugin->options) + DBUG_RETURN(1); + DBUG_RETURN(plugin->options(option, value)); +} |