test_charset.c
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2000 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #include <my_global.h>
  14. #include <m_ctype.h>
  15. #include <my_sys.h>
  16. #include <mysql_version.h>
  17. #include <stdio.h>
  18. static void _print_array(uint8 *data, uint size)
  19. {
  20.   uint i;
  21.   for (i = 0; i < size; ++i)
  22.   {
  23.     if (i == 0 || i % 16 == size % 16) printf("  ");
  24.     printf(" %02x", data[i]);
  25.     if ((i+1) % 16 == size % 16) printf("n");
  26.   }
  27. }
  28. static void _print_csinfo(CHARSET_INFO *cs)
  29. {
  30.   printf("%s #%dn", cs->name, cs->number);
  31.   printf("ctype:n"); _print_array(cs->ctype, 257);
  32.   printf("to_lower:n"); _print_array(cs->to_lower, 256);
  33.   printf("to_upper:n"); _print_array(cs->to_upper, 256);
  34.   printf("sort_order:n"); _print_array(cs->sort_order, 256);
  35.   printf("collate:    %3s (%d, %p, %p, %p)n",
  36.          cs->strxfrm_multiply ? "yes" : "no",
  37.          cs->strxfrm_multiply,
  38.          cs->strnncoll,
  39.          cs->strnxfrm,
  40.          cs->like_range);
  41.   printf("multi-byte: %3s (%d, %p, %p, %p)n",
  42.          cs->mbmaxlen > 1 ? "yes" : "no",
  43.          cs->mbmaxlen,
  44.          cs->ismbchar,
  45.          cs->ismbhead,
  46.          cs->mbcharlen);
  47. }
  48. int main(int argc, char **argv) {
  49.   const char *the_set = MYSQL_CHARSET;
  50.   char *cs_list;
  51.   int argcnt = 1;
  52.   CHARSET_INFO *cs;
  53.   my_init();
  54.   if (argc > argcnt && argv[argcnt][0] == '-' && argv[argcnt][1] == '#')
  55.     DBUG_PUSH(argv[argcnt++]+2);
  56.   if (argc > argcnt)
  57.     the_set = argv[argcnt++];
  58.   if (argc > argcnt)
  59.     charsets_dir = argv[argcnt++];
  60.   if (!(cs= get_charset_by_name(the_set, MYF(MY_WME))))
  61.     return 1;
  62.   puts("CHARSET INFO:");
  63.   _print_csinfo(cs);
  64.   fflush(stdout);
  65. #define NOT_USED_ANYMORE
  66.   cs_list = list_charsets(MYF(MY_CS_COMPILED | MY_CS_CONFIG));
  67.   printf("LIST OF CHARSETS (compiled + *.conf):n%sn", cs_list);
  68.   my_free(cs_list,MYF(0));
  69.   cs_list = list_charsets(MYF(MY_CS_INDEX | MY_CS_LOADED));
  70.   printf("LIST OF CHARSETS (index + loaded):n%sn", cs_list);
  71.   my_free(cs_list,MYF(0));
  72. #endif
  73.   return 0;
  74. }