summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mysql.com>2009-10-21 15:48:22 +0500
committerAlexander Barkov <bar@mysql.com>2009-10-21 15:48:22 +0500
commit344ddc85faa7b6936f0f2d9b925af112cbaa1d79 (patch)
treed2522e7182d47f0be16e18e95d3830f7ff496ce0 /mysys
parent479b602fd6453e9e5907d7a2554f9682bac6a1b8 (diff)
parentac2a0348a24f501fdd2ffb1dcf3bde5d3ce101db (diff)
downloadmariadb-git-344ddc85faa7b6936f0f2d9b925af112cbaa1d79.tar.gz
Merging mysql-next-mr-merge to mysql-next-mr.
Diffstat (limited to 'mysys')
-rw-r--r--mysys/charset.c10
-rw-r--r--mysys/errors.c5
-rw-r--r--mysys/my_error.c24
3 files changed, 23 insertions, 16 deletions
diff --git a/mysys/charset.c b/mysys/charset.c
index 214ca170757..280b2ad6091 100644
--- a/mysys/charset.c
+++ b/mysys/charset.c
@@ -42,7 +42,7 @@ get_collation_number_internal(const char *name)
{
CHARSET_INFO **cs;
for (cs= all_charsets;
- cs < all_charsets+array_elements(all_charsets)-1 ;
+ cs < all_charsets + array_elements(all_charsets);
cs++)
{
if ( cs[0] && cs[0]->name &&
@@ -387,7 +387,7 @@ char *get_charsets_dir(char *buf)
DBUG_RETURN(res);
}
-CHARSET_INFO *all_charsets[256]={NULL};
+CHARSET_INFO *all_charsets[MY_ALL_CHARSETS_SIZE]={NULL};
CHARSET_INFO *default_charset_info = &my_charset_latin1;
void add_compiled_collation(CHARSET_INFO *cs)
@@ -429,7 +429,7 @@ static my_bool init_available_charsets(myf myflags)
/* Copy compiled charsets */
for (cs=all_charsets;
- cs < all_charsets+array_elements(all_charsets)-1 ;
+ cs < all_charsets + array_elements(all_charsets);
cs++)
{
if (*cs)
@@ -469,7 +469,7 @@ uint get_charset_number(const char *charset_name, uint cs_flags)
init_available_charsets(MYF(0));
for (cs= all_charsets;
- cs < all_charsets+array_elements(all_charsets)-1 ;
+ cs < all_charsets + array_elements(all_charsets);
cs++)
{
if ( cs[0] && cs[0]->csname && (cs[0]->state & cs_flags) &&
@@ -543,7 +543,7 @@ CHARSET_INFO *get_charset(uint cs_number, myf flags)
(void) init_available_charsets(MYF(0)); /* If it isn't initialized */
- if (!cs_number || cs_number >= array_elements(all_charsets)-1)
+ if (!cs_number || cs_number > array_elements(all_charsets))
return NULL;
cs=get_internal_charset(cs_number, flags);
diff --git a/mysys/errors.c b/mysys/errors.c
index 8d3303cac9f..4000c5c4e52 100644
--- a/mysys/errors.c
+++ b/mysys/errors.c
@@ -106,3 +106,8 @@ void wait_for_free_space(const char *filename, int errors)
MY_WAIT_GIVE_USER_A_MESSAGE * MY_WAIT_FOR_USER_TO_FIX_PANIC );
VOID(sleep(MY_WAIT_FOR_USER_TO_FIX_PANIC));
}
+
+const char **get_global_errmsgs()
+{
+ return globerrs;
+}
diff --git a/mysys/my_error.c b/mysys/my_error.c
index e407e7706fc..ff9156faf82 100644
--- a/mysys/my_error.c
+++ b/mysys/my_error.c
@@ -48,11 +48,11 @@
*/
static struct my_err_head
{
- struct my_err_head *meh_next; /* chain link */
- const char **meh_errmsgs; /* error messages array */
- int meh_first; /* error number matching array slot 0 */
- int meh_last; /* error number matching last slot */
-} my_errmsgs_globerrs = {NULL, globerrs, EE_ERROR_FIRST, EE_ERROR_LAST};
+ struct my_err_head *meh_next; /* chain link */
+ const char** (*get_errmsgs) (); /* returns error message format */
+ int meh_first; /* error number matching array slot 0 */
+ int meh_last; /* error number matching last slot */
+} my_errmsgs_globerrs = {NULL, get_global_errmsgs, EE_ERROR_FIRST, EE_ERROR_LAST};
static struct my_err_head *my_errmsgs_list= &my_errmsgs_globerrs;
@@ -84,12 +84,13 @@ void my_error(int nr, myf MyFlags, ...)
/* get the error message string. Default, if NULL or empty string (""). */
if (! (format= (meh_p && (nr >= meh_p->meh_first)) ?
- meh_p->meh_errmsgs[nr - meh_p->meh_first] : NULL) || ! *format)
+ meh_p->get_errmsgs()[nr - meh_p->meh_first] : NULL) || ! *format)
(void) my_snprintf (ebuff, sizeof(ebuff), "Unknown error %d", nr);
else
{
va_start(args,MyFlags);
- (void) my_vsnprintf (ebuff, sizeof(ebuff), format, args);
+ (void) my_vsnprintf_ex(&my_charset_utf8_general_ci, ebuff,
+ sizeof(ebuff), format, args);
va_end(args);
}
(*error_handler_hook)(nr, ebuff, MyFlags);
@@ -117,7 +118,8 @@ void my_printf_error(uint error, const char *format, myf MyFlags, ...)
error, MyFlags, errno, format));
va_start(args,MyFlags);
- (void) my_vsnprintf (ebuff, sizeof(ebuff), format, args);
+ (void) my_vsnprintf_ex(&my_charset_utf8_general_ci, ebuff,
+ sizeof(ebuff), format, args);
va_end(args);
(*error_handler_hook)(error, ebuff, MyFlags);
DBUG_VOID_RETURN;
@@ -161,7 +163,7 @@ void my_message(uint error, const char *str, register myf MyFlags)
!= 0 Error
*/
-int my_error_register(const char **errmsgs, int first, int last)
+int my_error_register(const char** (*get_errmsgs) (), int first, int last)
{
struct my_err_head *meh_p;
struct my_err_head **search_meh_pp;
@@ -170,7 +172,7 @@ int my_error_register(const char **errmsgs, int first, int last)
if (! (meh_p= (struct my_err_head*) my_malloc(sizeof(struct my_err_head),
MYF(MY_WME))))
return 1;
- meh_p->meh_errmsgs= errmsgs;
+ meh_p->get_errmsgs= get_errmsgs;
meh_p->meh_first= first;
meh_p->meh_last= last;
@@ -241,7 +243,7 @@ const char **my_error_unregister(int first, int last)
*search_meh_pp= meh_p->meh_next;
/* Save the return value and free the header. */
- errmsgs= meh_p->meh_errmsgs;
+ errmsgs= meh_p->get_errmsgs();
my_free((uchar*) meh_p, MYF(0));
return errmsgs;