@@ -314,6 +314,76 @@ char *get_charsets_dir(char *buf)
314314 DBUG_RETURN (strend (buf ));
315315}
316316
317+ CHARSET_INFO * all_charsets [256 ];
318+ CHARSET_INFO * default_charset_info = & compiled_charsets [0 ];
319+ CHARSET_INFO * system_charset_info = & compiled_charsets [0 ];
320+
321+ #define MY_ADD_CHARSET (x ) all_charsets[(x)->number]=(x)
322+
323+
324+ static my_bool init_compiled_charsets (myf flags __attribute__((unused )))
325+ {
326+ CHARSET_INFO * cs ;
327+
328+ MY_ADD_CHARSET (my_charset_bin );
329+
330+ #ifdef HAVE_CHARSET_big5
331+ MY_ADD_CHARSET (& my_charset_big5 );
332+ #endif
333+
334+ #ifdef HAVE_CHARSET_czech
335+ MY_ADD_CHARSET (& my_charset_czech );
336+ #endif
337+
338+ #ifdef HAVE_CHARSET_euc_kr
339+ MY_ADD_CHARSET (& my_charset_euc_kr );
340+ #endif
341+
342+ #ifdef HAVE_CHARSET_gb2312
343+ MY_ADD_CHARSET (& my_charset_gb2312 );
344+ #endif
345+
346+ #ifdef HAVE_CHARSET_gbk
347+ MY_ADD_CHARSET (& my_charset_gbk );
348+ #endif
349+
350+ #ifdef HAVE_CHARSET_latin1_de
351+ MY_ADD_CHARSET (& my_charset_latin1_de );
352+ #endif
353+
354+ #ifdef HAVE_CHARSET_sjis
355+ MY_ADD_CHARSET (& my_charset_sjis );
356+ #endif
357+
358+ #ifdef HAVE_CHARSET_tis620
359+ MY_ADD_CHARSET (& my_charset_tis620 );
360+ #endif
361+
362+ #ifdef HAVE_CHARSET_ucs2
363+ MY_ADD_CHARSET (& my_charset_ucs2 );
364+ #endif
365+
366+ #ifdef HAVE_CHARSET_ujis
367+ MY_ADD_CHARSET (& my_charset_ujis );
368+ #endif
369+
370+ #ifdef HAVE_CHARSET_utf8
371+ MY_ADD_CHARSET (& my_charset_utf8 );
372+ #endif
373+
374+ #ifdef HAVE_CHARSET_win1250ch
375+ MY_ADD_CHARSET (& my_charset_win1250ch );
376+ #endif
377+
378+ /* Copy compiled charsets */
379+ for (cs = compiled_charsets ; cs -> name ; cs ++ )
380+ {
381+ all_charsets [cs -> number ]= cs ;
382+ }
383+
384+ return FALSE;
385+ }
386+
317387static my_bool init_available_charsets (myf myflags )
318388{
319389 char fname [FN_REFLEN ];
@@ -607,3 +677,5 @@ char *list_charsets(myf want_flags)
607677
608678 return p ;
609679}
680+
681+
0 commit comments