diff options
-rw-r--r-- | include/my_sys.h | 1 | ||||
-rw-r--r-- | libmysql/libmysql.c | 16 | ||||
-rw-r--r-- | mysys/charset.c | 2 |
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"); |