CHARSET_INFO *get_charset_IB(char* charsets_dir, uint cs_number, myf flags) { CHARSET_INFO *cs; char index_file[FN_REFLEN + sizeof(MY_CHARSET_INDEX)]; if (cs_number == default_charset_info->number) return default_charset_info; strcpy(index_file, charsets_dir); strcat(index_file, MY_CHARSET_INDEX); init_available_charsets_IB(index_file); /* If it isn't initialized */ if (!cs_number || cs_number >= array_elements(all_charsets)-1) return NULL; cs=get_internal_charset_IB(charsets_dir, cs_number, flags); if (!cs && (flags & MY_WME)) { char cs_string[23]; cs_string[0]='#'; int10_to_str(cs_number, cs_string+1, 10); my_error(EE_UNKNOWN_CHARSET, MYF(ME_BELL), cs_string, index_file); } return cs; }
CHARSET_INFO *get_charset(uint cs_number, myf flags) { CHARSET_INFO *cs; MY_CHARSET_LOADER loader; if (cs_number == default_charset_info->number) return default_charset_info; my_pthread_once(&charsets_initialized, init_available_charsets); if (cs_number >= array_elements(all_charsets)) return NULL; my_charset_loader_init_mysys(&loader); cs= get_internal_charset(&loader, cs_number, flags); if (!cs && (flags & MY_WME)) { char index_file[FN_REFLEN + sizeof(MY_CHARSET_INDEX)], cs_string[23]; my_stpcpy(get_charsets_dir(index_file),MY_CHARSET_INDEX); cs_string[0]='#'; int10_to_str(cs_number, cs_string+1, 10); my_error(EE_UNKNOWN_CHARSET, MYF(ME_BELL), cs_string, index_file); } return cs; }