示例#1
0
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;
}
示例#2
0
文件: charset.c 项目: lanqiyi/CacheDB
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;
}