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

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. /* make-conf.c
  14.  * make a charset .conf file out of a ctype-charset.c file.
  15.  */
  16. #ifndef CHARSET
  17. #error You must define the charset, e.g.:  -DCHARSET=latin1
  18. #endif
  19. /* some pre-processor tricks to get us going */
  20. #define _STRINGIZE_HELPER(x)    #x
  21. #define STRINGIZE(x)            _STRINGIZE_HELPER(x)
  22. #define _JOIN_WORDS_HELPER(a, b)    a ## b
  23. #define JOIN_WORDS(a, b)            _JOIN_WORDS_HELPER(a, b)
  24. #define CH_SRC ctype- ## CHARSET ## .c
  25. #define CH_INCLUDE STRINGIZE(CH_SRC)
  26. /* aaaah, that's better */
  27. #include <my_my_global.h>
  28. #include CH_INCLUDE
  29. #include <stdio.h>
  30. #include <stdlib.h>
  31. #define ROW_LEN   16
  32. void print_array(const char *name, const uchar *array, uint size);
  33. int main(void)
  34. {
  35.   printf("# Configuration file for the "
  36.          STRINGIZE(CHARSET)
  37.          " character set.n");
  38.   print_array("ctype",      JOIN_WORDS(ctype_,      CHARSET), 257);
  39.   print_array("to_lower",   JOIN_WORDS(to_lower_,   CHARSET), 256);
  40.   print_array("to_upper",   JOIN_WORDS(to_upper_,   CHARSET), 256);
  41.   print_array("sort_order", JOIN_WORDS(sort_order_, CHARSET), 256);
  42.   exit(EXIT_SUCCESS);
  43. }
  44. void print_array(const char *name, const uchar *array, uint size)
  45. {
  46.   uint i;
  47.   printf("n# The %s array must have %d elements.n", name, size);
  48.   for (i = 0; i < size; ++i) {
  49.     printf("  %02X", array[i]);
  50.     if ((i+1) % ROW_LEN == size % ROW_LEN)
  51.       printf("n");
  52.   }
  53. }