summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/my_sys.h1
-rw-r--r--libmysql/libmysql.c16
-rw-r--r--mysys/charset.c2
3 files changed, 14 insertions, 5 deletions
diff --git a/include/my_sys.h b/include/my_sys.h
index fd608599ba3..beee8e3dc1c 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -178,6 +178,7 @@ extern CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags);
extern my_bool set_default_charset_by_name(const char *cs_name, myf flags);
extern void free_charsets(void);
extern char *list_charsets(myf want_flags); /* my_free() this string... */
+extern char *get_charsets_dir(char *buf);
/* statistics */
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index 1f78dc2153b..fecdd073a47 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -1394,10 +1394,18 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
if (!mysql->charset)
{
net->last_errno=CR_CANT_READ_CHARSET;
- sprintf(net->last_error,ER(net->last_errno),
- charset_name ? charset_name : "unknown",
- mysql->options.charset_dir ? mysql->options.charset_dir :
- "default");
+ if (mysql->options.charset_dir)
+ sprintf(net->last_error,ER(net->last_errno),
+ charset_name ? charset_name : "unknown",
+ mysql->options.charset_dir);
+ else
+ {
+ char cs_dir_name[FN_REFLEN];
+ get_charsets_dir(cs_dir_name);
+ sprintf(net->last_error,ER(net->last_errno),
+ charset_name ? charset_name : "unknown",
+ cs_dir_name);
+ }
goto error;
}
diff --git a/mysys/charset.c b/mysys/charset.c
index 54b4dd1a13e..78e33be0c5f 100644
--- a/mysys/charset.c
+++ b/mysys/charset.c
@@ -94,7 +94,7 @@ static my_bool get_word(struct simpleconfig_buf_st *fb, char *buf)
}
-static char *get_charsets_dir(char *buf)
+char *get_charsets_dir(char *buf)
{
const char *sharedir = SHAREDIR;
DBUG_ENTER("get_charsets_dir");