mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	BitKeeper/etc/logging_ok: auto-union BitKeeper/deleted/.del-mytest-old.c~5237697b30cf59e4: Auto merged Build-tools/Bootstrap: Auto merged Build-tools/mysql-copyright: Auto merged configure.in: Auto merged BitKeeper/deleted/.del-mysql_fix_privilege_tables.sql: Auto merged VC++Files/innobase/innobase.dsp: Auto merged client/mysql.cc: Auto merged include/my_global.h: Auto merged innobase/dict/dict0crea.c: Auto merged innobase/dict/dict0dict.c: Auto merged innobase/include/mtr0log.h: Auto merged innobase/include/mtr0log.ic: Auto merged innobase/include/srv0srv.h: Auto merged innobase/include/ut0dbg.h: Auto merged innobase/lock/lock0lock.c: Auto merged innobase/os/os0file.c: Auto merged innobase/row/row0mysql.c: Auto merged innobase/row/row0sel.c: Auto merged innobase/srv/srv0srv.c: Auto merged innobase/ut/ut0dbg.c: Auto merged innobase/ut/ut0mem.c: Auto merged libmysql/Makefile.am: Auto merged libmysql/Makefile.shared: Auto merged libmysql/conf_to_src.c: Auto merged libmysql/dll.c: Auto merged libmysql/errmsg.c: Auto merged libmysql/manager.c: Auto merged libmysql_r/Makefile.am: Auto merged myisam/mi_key.c: Auto merged mysql-test/Makefile.am: Auto merged mysql-test/mysql-test-run.sh: Auto merged mysql-test/r/having.result: Auto merged mysql-test/r/heap.result: Auto merged mysql-test/r/type_date.result: Auto merged mysql-test/r/type_float.result: Auto merged mysql-test/t/having.test: Auto merged mysql-test/t/heap.test: Auto merged mysql-test/t/type_date.test: Auto merged mysql-test/t/type_float.test: Auto merged mysql-test/t/type_uint.test: Auto merged scripts/make_binary_distribution.sh: Auto merged scripts/make_win_src_distribution.sh: Auto merged sql/Makefile.am: Auto merged sql/field.h: Auto merged sql/ha_heap.cc: Auto merged sql/item_func.cc: Auto merged sql/item_func.h: Auto merged sql/item_sum.h: Auto merged sql/lock.cc: Auto merged sql/log.cc: Auto merged sql/protocol.cc: Auto merged sql/repl_failsafe.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_analyse.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_parse.cc: Auto merged sql/share/czech/errmsg.txt: Auto merged sql/share/danish/errmsg.txt: Auto merged sql/share/dutch/errmsg.txt: Auto merged sql/share/english/errmsg.txt: Auto merged sql/share/estonian/errmsg.txt: Auto merged sql/share/french/errmsg.txt: Auto merged sql/sql_select.cc: Auto merged sql/sql_table.cc: Auto merged sql/share/greek/errmsg.txt: Auto merged sql/share/hungarian/errmsg.txt: Auto merged sql/share/japanese/errmsg.txt: Auto merged sql/share/korean/errmsg.txt: Auto merged sql/share/norwegian-ny/errmsg.txt: Auto merged sql/share/norwegian/errmsg.txt: Auto merged sql/share/polish/errmsg.txt: Auto merged sql/share/portuguese/errmsg.txt: Auto merged sql/share/romanian/errmsg.txt: Auto merged sql/share/russian/errmsg.txt: Auto merged sql/share/slovak/errmsg.txt: Auto merged sql/share/spanish/errmsg.txt: Auto merged sql/share/swedish/errmsg.txt: Auto merged sql/share/ukrainian/errmsg.txt: Auto merged
		
			
				
	
	
		
			146 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Copyright (C) 2000-2004 MySQL AB
 | 
						|
 | 
						|
   This program is free software; you can redistribute it and/or modify
 | 
						|
   it under the terms of the GNU General Public License as published by
 | 
						|
   the Free Software Foundation.
 | 
						|
 | 
						|
   There are special exceptions to the terms and conditions of the GPL as it
 | 
						|
   is applied to this software. View the full text of the exception in file
 | 
						|
   EXCEPTIONS-CLIENT in the directory of this software distribution.
 | 
						|
 | 
						|
   This program is distributed in the hope that it will be useful,
 | 
						|
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
   GNU General Public License for more details.
 | 
						|
 | 
						|
   You should have received a copy of the GNU General Public License
 | 
						|
   along with this program; if not, write to the Free Software
 | 
						|
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
 | 
						|
 | 
						|
/* can't use -lmysys because this prog is used to create -lstrings */
 | 
						|
 | 
						|
 | 
						|
#include <my_global.h>
 | 
						|
#include <ctype.h>
 | 
						|
#include <string.h>
 | 
						|
#include <unistd.h>
 | 
						|
 | 
						|
#define CHARSETS_SUBDIR "sql/share/charsets"
 | 
						|
#define CTYPE_TABLE_SIZE      257
 | 
						|
#define TO_LOWER_TABLE_SIZE   256
 | 
						|
#define TO_UPPER_TABLE_SIZE   256
 | 
						|
#define SORT_ORDER_TABLE_SIZE 256
 | 
						|
#define ROW_LEN 16
 | 
						|
 | 
						|
void print_arrays_for(char *set);
 | 
						|
 | 
						|
char *prog;
 | 
						|
char buf[1024], *p, *endptr;
 | 
						|
 | 
						|
int
 | 
						|
main(int argc, char **argv)
 | 
						|
{
 | 
						|
  prog = *argv;
 | 
						|
 | 
						|
  if (argc < 2) {
 | 
						|
    fprintf(stderr, "usage: %s source-dir [charset [, charset]]\n", prog);
 | 
						|
    exit(EXIT_FAILURE);
 | 
						|
  }
 | 
						|
 | 
						|
  --argc; ++argv;       /* skip program name */
 | 
						|
 | 
						|
  if (chdir(*argv) != 0) {
 | 
						|
    fprintf(stderr, "%s: can't cd to %s\n", prog, *argv);
 | 
						|
    exit(EXIT_FAILURE);
 | 
						|
  }
 | 
						|
  --argc; ++argv;
 | 
						|
 | 
						|
  if (chdir(CHARSETS_SUBDIR) != 0) {
 | 
						|
    fprintf(stderr, "%s: can't cd to %s\n", prog, CHARSETS_SUBDIR);
 | 
						|
    exit(EXIT_FAILURE);
 | 
						|
  }
 | 
						|
 | 
						|
  while (argc--)
 | 
						|
    print_arrays_for(*argv++);
 | 
						|
 | 
						|
  exit(EXIT_SUCCESS);
 | 
						|
}
 | 
						|
 | 
						|
void
 | 
						|
print_array(FILE *f, const char *set, const char *name, int n)
 | 
						|
{
 | 
						|
  int i;
 | 
						|
  char val[100];
 | 
						|
 | 
						|
  printf("uchar %s_%s[] = {\n", name, set);
 | 
						|
 | 
						|
  p = buf;
 | 
						|
  *buf = '\0';
 | 
						|
  for (i = 0; i < n; ++i)
 | 
						|
  {
 | 
						|
    /* get a word from f */
 | 
						|
    endptr = p;
 | 
						|
    for (;;)
 | 
						|
    {
 | 
						|
      while (isspace(*endptr))
 | 
						|
        ++endptr;
 | 
						|
      if (*endptr && *endptr != '#')    /* not comment */
 | 
						|
        break;
 | 
						|
      if ((fgets(buf, sizeof(buf), f)) == NULL)
 | 
						|
        return;         /* XXX: break silently */
 | 
						|
      endptr = buf;
 | 
						|
    }
 | 
						|
 | 
						|
    p = val;
 | 
						|
    while (!isspace(*endptr))
 | 
						|
      *p++ = *endptr++;
 | 
						|
    *p = '\0';
 | 
						|
    p = endptr;
 | 
						|
 | 
						|
    /* write the value out */
 | 
						|
 | 
						|
    if (i == 0 || i % ROW_LEN == n % ROW_LEN)
 | 
						|
      printf("  ");
 | 
						|
 | 
						|
    printf("%3d", (unsigned char) strtol(val, (char **) NULL, 16));
 | 
						|
 | 
						|
    if (i < n - 1)
 | 
						|
      printf(",");
 | 
						|
 | 
						|
    if ((i+1) % ROW_LEN == n % ROW_LEN)
 | 
						|
      printf("\n");
 | 
						|
  }
 | 
						|
 | 
						|
  printf("};\n\n");
 | 
						|
}
 | 
						|
 | 
						|
void
 | 
						|
print_arrays_for(char *set)
 | 
						|
{
 | 
						|
  FILE *f;
 | 
						|
 | 
						|
  sprintf(buf, "%s.conf", set);
 | 
						|
 | 
						|
  if ((f = fopen(buf, "r")) == NULL) {
 | 
						|
    fprintf(stderr, "%s: can't read conf file for charset %s\n", prog, set);
 | 
						|
    exit(EXIT_FAILURE);
 | 
						|
  }
 | 
						|
 | 
						|
  printf("\
 | 
						|
/* The %s character set.  Generated automatically by configure and\n\
 | 
						|
 * the %s program\n\
 | 
						|
 */\n\n",
 | 
						|
	 set, prog);
 | 
						|
 | 
						|
  /* it would be nice if this used the code in mysys/charset.c, but... */
 | 
						|
  print_array(f, set, "ctype",      CTYPE_TABLE_SIZE);
 | 
						|
  print_array(f, set, "to_lower",   TO_LOWER_TABLE_SIZE);
 | 
						|
  print_array(f, set, "to_upper",   TO_UPPER_TABLE_SIZE);
 | 
						|
  print_array(f, set, "sort_order", SORT_ORDER_TABLE_SIZE);
 | 
						|
  printf("\n");
 | 
						|
 | 
						|
  fclose(f);
 | 
						|
 | 
						|
  return;
 | 
						|
}
 |