diff options
author | Alexander Barkov <bar@mysql.com> | 2009-10-21 15:48:22 +0500 |
---|---|---|
committer | Alexander Barkov <bar@mysql.com> | 2009-10-21 15:48:22 +0500 |
commit | 344ddc85faa7b6936f0f2d9b925af112cbaa1d79 (patch) | |
tree | d2522e7182d47f0be16e18e95d3830f7ff496ce0 /mysys | |
parent | 479b602fd6453e9e5907d7a2554f9682bac6a1b8 (diff) | |
parent | ac2a0348a24f501fdd2ffb1dcf3bde5d3ce101db (diff) | |
download | mariadb-git-344ddc85faa7b6936f0f2d9b925af112cbaa1d79.tar.gz |
Merging mysql-next-mr-merge to mysql-next-mr.
Diffstat (limited to 'mysys')
-rw-r--r-- | mysys/charset.c | 10 | ||||
-rw-r--r-- | mysys/errors.c | 5 | ||||
-rw-r--r-- | mysys/my_error.c | 24 |
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; |