diff options
author | unknown <serg@serg.mylan> | 2006-02-13 23:27:51 +0100 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2006-02-13 23:27:51 +0100 |
commit | 3649a68fab9132828125e9b1107cfc7fb4201699 (patch) | |
tree | 3d5a3d14033679124ac742e1cc561d1bddbec755 /sql/sql_plugin.cc | |
parent | c4b5ba5643d2b3e734445bc6236bc31b7c78feac (diff) | |
parent | 8017e9c4e726f8ab6b8b2c71f81e0e0036c21fcd (diff) | |
download | mariadb-git-3649a68fab9132828125e9b1107cfc7fb4201699.tar.gz |
Merge bk-internal.mysql.com:/home/bk/mysql-5.1-new
into serg.mylan:/usr/home/serg/Abk/mysql-5.1-nl
sql/sql_plugin.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
Diffstat (limited to 'sql/sql_plugin.cc')
-rw-r--r-- | sql/sql_plugin.cc | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index 9f17694a137..8c5579d978b 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -105,7 +105,7 @@ static st_plugin_dl *plugin_dl_add(LEX_STRING *dl, int report) { #ifdef HAVE_DLOPEN char dlpath[FN_REFLEN]; - uint plugin_dir_len, dummy_errors; + uint plugin_dir_len, dummy_errors, dlpathlen; struct st_plugin_dl *tmp, plugin_dl; void *sym; DBUG_ENTER("plugin_dl_add"); @@ -133,15 +133,24 @@ static st_plugin_dl *plugin_dl_add(LEX_STRING *dl, int report) } bzero(&plugin_dl, sizeof(plugin_dl)); /* Compile dll path */ - strxnmov(dlpath, sizeof(dlpath) - 1, opt_plugin_dir, "/", dl->str, NullS); + dlpathlen= + strxnmov(dlpath, sizeof(dlpath) - 1, opt_plugin_dir, "/", dl->str, NullS) - + dlpath; plugin_dl.ref_count= 1; /* Open new dll handle */ if (!(plugin_dl.handle= dlopen(dlpath, RTLD_NOW))) { + const char *errmsg=dlerror(); + if (!strncmp(dlpath, errmsg, dlpathlen)) + { // if errmsg starts from dlpath, trim this prefix. + errmsg+=dlpathlen; + if (*errmsg == ':') errmsg++; + if (*errmsg == ' ') errmsg++; + } if (report & REPORT_TO_USER) - my_error(ER_CANT_OPEN_LIBRARY, MYF(0), dlpath, errno, dlerror()); + my_error(ER_CANT_OPEN_LIBRARY, MYF(0), dlpath, errno, errmsg); if (report & REPORT_TO_LOG) - sql_print_error(ER(ER_CANT_OPEN_LIBRARY), dlpath, errno, dlerror()); + sql_print_error(ER(ER_CANT_OPEN_LIBRARY), dlpath, errno, errmsg); DBUG_RETURN(0); } /* Determine interface version */ |