comparison src/file-coding.c @ 563:183866b06e0b

[xemacs-hg @ 2001-05-24 07:50:48 by ben] Makefile.in.in, abbrev.c, alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, casetab.c, chartab.c, cmdloop.c, cmds.c, console-msw.c, console-msw.h, console-stream.c, console-tty.c, console-x.c, console.c, data.c, database.c, debug.c, device-gtk.c, device-msw.c, device-tty.c, device-x.c, device.c, dialog-gtk.c, dialog-msw.c, dialog-x.c, dialog.c, dired-msw.c, dired.c, doc.c, doprnt.c, dragdrop.c, editfns.c, eldap.c, eldap.h, elhash.c, emacs-widget-accessors.c, emacs.c, emodules.c, esd.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, events.c, extents.c, faces.c, file-coding.c, fileio.c, filelock.c, floatfns.c, fns.c, font-lock.c, frame-gtk.c, frame-x.c, frame.c, general-slots.h, glade.c, glyphs-gtk.c, glyphs-msw.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gui-gtk.c, gui-x.c, gui.c, gutter.c, hpplay.c, indent.c, input-method-xlib.c, insdel.c, intl.c, keymap.c, libsst.c, libsst.h, linuxplay.c, lisp.h, lread.c, lstream.c, lstream.h, macros.c, marker.c, md5.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, miscplay.c, miscplay.h, mule-ccl.c, mule-charset.c, mule-wnnfns.c, mule.c, nas.c, ntplay.c, ntproc.c, objects-gtk.c, objects-msw.c, objects-x.c, objects.c, postgresql.c, print.c, process-nt.c, process-unix.c, process.c, ralloc.c, rangetab.c, redisplay.c, scrollbar.c, search.c, select-gtk.c, select-x.c, select.c, sgiplay.c, sheap.c, sound.c, specifier.c, sunplay.c, symbols.c, symeval.h, symsinit.h, syntax.c, sysdep.c, toolbar-msw.c, toolbar.c, tooltalk.c, ui-byhand.c, ui-gtk.c, undo.c, unexaix.c, unexapollo.c, unexconvex.c, unexec.c, widget.c, win32.c, window.c: -- defsymbol -> DEFSYMBOL. -- add an error type to all errors. -- eliminate the error functions in eval.c that let you just use Qerror as the type. -- redo the error API to be more consistent, sensibly named, and easier to use. -- redo the error hierarchy somewhat. create new errors: structure-formation-error, gui-error, invalid-constant, stack-overflow, out-of-memory, process-error, network-error, sound-error, printing-unreadable-object, base64-conversion- error; coding-system-error renamed to text-conversion error; some others. -- fix Mule problems in error strings in emodules.c, tooltalk.c. -- fix error handling in mswin open-network-stream. -- Mule-ize all sound files and clean up the headers. -- nativesound.h -> sound.h and used for all sound files. -- move some shared stuff into glyphs-shared.c: first attempt at eliminating some of the massive GTK code duplication. xemacs.mak: add glyphs-shared.c. xemacs-faq.texi: document how to debug X errors subr.el: fix doc string to reflect reality
author ben
date Thu, 24 May 2001 07:51:33 +0000
parents ef4d2466a29c
children 001628b7a5b3
comparison
equal deleted inserted replaced
562:c775bd016b32 563:183866b06e0b
35 #include "mule-ccl.h" 35 #include "mule-ccl.h"
36 #include "chartab.h" 36 #include "chartab.h"
37 #endif 37 #endif
38 #include "file-coding.h" 38 #include "file-coding.h"
39 39
40 Lisp_Object Qcoding_system_error; 40 Lisp_Object Qtext_conversion_error;
41 41
42 Lisp_Object Vkeyboard_coding_system; 42 Lisp_Object Vkeyboard_coding_system;
43 Lisp_Object Vterminal_coding_system; 43 Lisp_Object Vterminal_coding_system;
44 Lisp_Object Vcoding_system_for_read; 44 Lisp_Object Vcoding_system_for_read;
45 Lisp_Object Vcoding_system_for_write; 45 Lisp_Object Vcoding_system_for_write;
374 print_coding_system (Lisp_Object obj, Lisp_Object printcharfun, 374 print_coding_system (Lisp_Object obj, Lisp_Object printcharfun,
375 int escapeflag) 375 int escapeflag)
376 { 376 {
377 Lisp_Coding_System *c = XCODING_SYSTEM (obj); 377 Lisp_Coding_System *c = XCODING_SYSTEM (obj);
378 if (print_readably) 378 if (print_readably)
379 error ("printing unreadable object #<coding_system 0x%x>", 379 printing_unreadable_object ("#<coding_system 0x%x>", c->header.uid);
380 c->header.uid);
381 380
382 write_c_string ("#<coding_system ", printcharfun); 381 write_c_string ("#<coding_system ", printcharfun);
383 print_internal (c->name, printcharfun, 1); 382 print_internal (c->name, printcharfun, 1);
384 write_c_string (">", printcharfun); 383 write_c_string (">", printcharfun);
385 } 384 }
422 if (NILP (symbol)) return EOL_AUTODETECT; 421 if (NILP (symbol)) return EOL_AUTODETECT;
423 if (EQ (symbol, Qlf)) return EOL_LF; 422 if (EQ (symbol, Qlf)) return EOL_LF;
424 if (EQ (symbol, Qcrlf)) return EOL_CRLF; 423 if (EQ (symbol, Qcrlf)) return EOL_CRLF;
425 if (EQ (symbol, Qcr)) return EOL_CR; 424 if (EQ (symbol, Qcr)) return EOL_CR;
426 425
427 signal_simple_error ("Unrecognized eol type", symbol); 426 invalid_constant ("Unrecognized eol type", symbol);
428 return EOL_AUTODETECT; /* not reached */ 427 return EOL_AUTODETECT; /* not reached */
429 } 428 }
430 429
431 static Lisp_Object 430 static Lisp_Object
432 eol_type_to_symbol (eol_type_t type) 431 eol_type_to_symbol (eol_type_t type)
545 (name)) 544 (name))
546 { 545 {
547 Lisp_Object coding_system = Ffind_coding_system (name); 546 Lisp_Object coding_system = Ffind_coding_system (name);
548 547
549 if (NILP (coding_system)) 548 if (NILP (coding_system))
550 signal_simple_error ("No such coding system", name); 549 invalid_argument ("No such coding system", name);
551 return coding_system; 550 return coding_system;
552 } 551 }
553 552
554 /* We store the coding systems in hash tables with the names as the key and the 553 /* We store the coding systems in hash tables with the names as the key and the
555 actual coding system object as the value. Occasionally we need to use them 554 actual coding system object as the value. Occasionally we need to use them
647 Lisp_Object car = XCAR (rest); 646 Lisp_Object car = XCAR (rest);
648 Lisp_Object from, to; 647 Lisp_Object from, to;
649 struct charset_conversion_spec spec; 648 struct charset_conversion_spec spec;
650 649
651 if (!CONSP (car) || !CONSP (XCDR (car)) || !NILP (XCDR (XCDR (car)))) 650 if (!CONSP (car) || !CONSP (XCDR (car)) || !NILP (XCDR (XCDR (car))))
652 signal_simple_error ("Invalid charset conversion spec", car); 651 invalid_argument ("Invalid charset conversion spec", car);
653 from = Fget_charset (XCAR (car)); 652 from = Fget_charset (XCAR (car));
654 to = Fget_charset (XCAR (XCDR (car))); 653 to = Fget_charset (XCAR (XCDR (car)));
655 if (XCHARSET_TYPE (from) != XCHARSET_TYPE (to)) 654 if (XCHARSET_TYPE (from) != XCHARSET_TYPE (to))
656 signal_simple_error_2 655 invalid_operation_2
657 ("Attempted conversion between different charset types", 656 ("Attempted conversion between different charset types",
658 from, to); 657 from, to);
659 spec.from_charset = from; 658 spec.from_charset = from;
660 spec.to_charset = to; 659 spec.to_charset = to;
661 660
878 else if (EQ (type, Qno_conversion)) { ty = CODESYS_NO_CONVERSION; } 877 else if (EQ (type, Qno_conversion)) { ty = CODESYS_NO_CONVERSION; }
879 #ifdef DEBUG_XEMACS 878 #ifdef DEBUG_XEMACS
880 else if (EQ (type, Qinternal)) { ty = CODESYS_INTERNAL; } 879 else if (EQ (type, Qinternal)) { ty = CODESYS_INTERNAL; }
881 #endif 880 #endif
882 else 881 else
883 signal_simple_error ("Invalid coding system type", type); 882 invalid_constant ("Invalid coding system type", type);
884 883
885 CHECK_SYMBOL (name); 884 CHECK_SYMBOL (name);
886 885
887 codesys = allocate_coding_system (ty, name); 886 codesys = allocate_coding_system (ty, name);
888 887
956 Dynarr_new (charset_conversion_spec); 955 Dynarr_new (charset_conversion_spec);
957 parse_charset_conversion_specs (codesys->iso2022.output_conv, 956 parse_charset_conversion_specs (codesys->iso2022.output_conv,
958 value); 957 value);
959 } 958 }
960 else 959 else
961 signal_simple_error ("Unrecognized property", key); 960 invalid_constant ("Unrecognized property", key);
962 } 961 }
963 else if (EQ (type, Qccl)) 962 else if (EQ (type, Qccl))
964 { 963 {
965 Lisp_Object sym; 964 Lisp_Object sym;
966 struct ccl_program test_ccl; 965 struct ccl_program test_ccl;
970 if (EQ (key, Qdecode)) 969 if (EQ (key, Qdecode))
971 suffix = "-ccl-decode"; 970 suffix = "-ccl-decode";
972 else if (EQ (key, Qencode)) 971 else if (EQ (key, Qencode))
973 suffix = "-ccl-encode"; 972 suffix = "-ccl-encode";
974 else 973 else
975 signal_simple_error ("Unrecognized property", key); 974 invalid_constant ("Unrecognized property", key);
976 975
977 /* If value is vector, register it as a ccl program 976 /* If value is vector, register it as a ccl program
978 associated with an newly created symbol for 977 associated with an newly created symbol for
979 backward compatibility. */ 978 backward compatibility. */
980 if (VECTORP (value)) 979 if (VECTORP (value))
989 CHECK_SYMBOL (value); 988 CHECK_SYMBOL (value);
990 sym = value; 989 sym = value;
991 } 990 }
992 /* check if the given ccl programs are valid. */ 991 /* check if the given ccl programs are valid. */
993 if (setup_ccl_program (&test_ccl, sym) < 0) 992 if (setup_ccl_program (&test_ccl, sym) < 0)
994 signal_simple_error ("Invalid CCL program", value); 993 invalid_argument ("Invalid CCL program", value);
995 994
996 if (EQ (key, Qdecode)) 995 if (EQ (key, Qdecode))
997 CODING_SYSTEM_CCL_DECODE (codesys) = sym; 996 CODING_SYSTEM_CCL_DECODE (codesys) = sym;
998 else if (EQ (key, Qencode)) 997 else if (EQ (key, Qencode))
999 CODING_SYSTEM_CCL_ENCODE (codesys) = sym; 998 CODING_SYSTEM_CCL_ENCODE (codesys) = sym;
1000 999
1001 } 1000 }
1002 #endif /* MULE */ 1001 #endif /* MULE */
1003 else 1002 else
1004 signal_simple_error ("Unrecognized property", key); 1003 invalid_constant ("Unrecognized property", key);
1005 } 1004 }
1006 } 1005 }
1007 1006
1008 if (need_to_setup_eol_systems) 1007 if (need_to_setup_eol_systems)
1009 setup_eol_coding_systems (codesys); 1008 setup_eol_coding_systems (codesys);
1072 { 1071 {
1073 Lisp_Object aliasee = Fgethash (alias, Vcoding_system_hash_table, Qnil); 1072 Lisp_Object aliasee = Fgethash (alias, Vcoding_system_hash_table, Qnil);
1074 if (SYMBOLP (aliasee)) 1073 if (SYMBOLP (aliasee))
1075 return aliasee; 1074 return aliasee;
1076 else 1075 else
1077 signal_simple_error ("Symbol is not a coding system alias", alias); 1076 invalid_argument ("Symbol is not a coding system alias", alias);
1078 return Qnil; /* To keep the compiler happy */ 1077 return Qnil; /* To keep the compiler happy */
1079 } 1078 }
1080 1079
1081 static Lisp_Object 1080 static Lisp_Object
1082 append_suffix_to_symbol (Lisp_Object symbol, const char *ascii_string) 1081 append_suffix_to_symbol (Lisp_Object symbol, const char *ascii_string)
1124 Lisp_Object real_coding_system, probe; 1123 Lisp_Object real_coding_system, probe;
1125 1124
1126 CHECK_SYMBOL (alias); 1125 CHECK_SYMBOL (alias);
1127 1126
1128 if (!NILP (Fcoding_system_canonical_name_p (alias))) 1127 if (!NILP (Fcoding_system_canonical_name_p (alias)))
1129 signal_simple_error 1128 invalid_change
1130 ("Symbol is the canonical name of a coding system and cannot be redefined", 1129 ("Symbol is the canonical name of a coding system and cannot be redefined",
1131 alias); 1130 alias);
1132 1131
1133 if (NILP (aliasee)) 1132 if (NILP (aliasee))
1134 { 1133 {
1170 /* Checks that aliasee names a coding-system */ 1169 /* Checks that aliasee names a coding-system */
1171 real_coding_system = Fget_coding_system (aliasee); 1170 real_coding_system = Fget_coding_system (aliasee);
1172 1171
1173 /* Check for coding system alias loops */ 1172 /* Check for coding system alias loops */
1174 if (EQ (alias, aliasee)) 1173 if (EQ (alias, aliasee))
1175 alias_loop: signal_simple_error_2 1174 alias_loop: invalid_operation_2
1176 ("Attempt to create a coding system alias loop", alias, aliasee); 1175 ("Attempt to create a coding system alias loop", alias, aliasee);
1177 1176
1178 for (probe = aliasee; 1177 for (probe = aliasee;
1179 SYMBOLP (probe); 1178 SYMBOLP (probe);
1180 probe = Fgethash (probe, Vcoding_system_hash_table, Qzero)) 1179 probe = Fgethash (probe, Vcoding_system_hash_table, Qzero))
1309 case CODESYS_PROP_ALL_OK: 1308 case CODESYS_PROP_ALL_OK:
1310 break; 1309 break;
1311 #ifdef MULE 1310 #ifdef MULE
1312 case CODESYS_PROP_ISO2022: 1311 case CODESYS_PROP_ISO2022:
1313 if (type != CODESYS_ISO2022) 1312 if (type != CODESYS_ISO2022)
1314 signal_simple_error 1313 invalid_argument
1315 ("Property only valid in ISO2022 coding systems", 1314 ("Property only valid in ISO2022 coding systems",
1316 prop); 1315 prop);
1317 break; 1316 break;
1318 1317
1319 case CODESYS_PROP_CCL: 1318 case CODESYS_PROP_CCL:
1320 if (type != CODESYS_CCL) 1319 if (type != CODESYS_CCL)
1321 signal_simple_error 1320 invalid_argument
1322 ("Property only valid in CCL coding systems", 1321 ("Property only valid in CCL coding systems",
1323 prop); 1322 prop);
1324 break; 1323 break;
1325 #endif /* MULE */ 1324 #endif /* MULE */
1326 default: 1325 default:
1327 abort (); 1326 abort ();
1328 } 1327 }
1329 } 1328 }
1330 1329
1331 if (!ok) 1330 if (!ok)
1332 signal_simple_error ("Unrecognized property", prop); 1331 invalid_constant ("Unrecognized property", prop);
1333 1332
1334 if (EQ (prop, Qname)) 1333 if (EQ (prop, Qname))
1335 return XCODING_SYSTEM_NAME (coding_system); 1334 return XCODING_SYSTEM_NAME (coding_system);
1336 else if (EQ (prop, Qtype)) 1335 else if (EQ (prop, Qtype))
1337 return Fcoding_system_type (coding_system); 1336 return Fcoding_system_type (coding_system);
1423 CHECK_SYMBOL (symbol); 1422 CHECK_SYMBOL (symbol);
1424 for (i = 0; i < CODING_CATEGORY_LAST; i++) 1423 for (i = 0; i < CODING_CATEGORY_LAST; i++)
1425 if (EQ (coding_category_symbol[i], symbol)) 1424 if (EQ (coding_category_symbol[i], symbol))
1426 return i; 1425 return i;
1427 1426
1428 signal_simple_error ("Unrecognized coding category", symbol); 1427 invalid_constant ("Unrecognized coding category", symbol);
1429 return 0; /* not reached */ 1428 return 0; /* not reached */
1430 } 1429 }
1431 1430
1432 DEFUN ("coding-category-list", Fcoding_category_list, 0, 0, 0, /* 1431 DEFUN ("coding-category-list", Fcoding_category_list, 0, 0, 0, /*
1433 Return a list of all recognized coding categories. 1432 Return a list of all recognized coding categories.
1465 EXTERNAL_LIST_LOOP (rest, list) 1464 EXTERNAL_LIST_LOOP (rest, list)
1466 { 1465 {
1467 int cat = decode_coding_category (XCAR (rest)); 1466 int cat = decode_coding_category (XCAR (rest));
1468 1467
1469 if (category_to_priority[cat] >= 0) 1468 if (category_to_priority[cat] >= 0)
1470 signal_simple_error ("Duplicate coding category in list", XCAR (rest)); 1469 sferror ("Duplicate coding category in list", XCAR (rest));
1471 category_to_priority[cat] = i++; 1470 category_to_priority[cat] = i++;
1472 } 1471 }
1473 1472
1474 /* Now go through the existing categories by priority to retrieve 1473 /* Now go through the existing categories by priority to retrieve
1475 the categories not yet specified and preserve their priority 1474 the categories not yet specified and preserve their priority
5588 void 5587 void
5589 syms_of_file_coding (void) 5588 syms_of_file_coding (void)
5590 { 5589 {
5591 INIT_LRECORD_IMPLEMENTATION (coding_system); 5590 INIT_LRECORD_IMPLEMENTATION (coding_system);
5592 5591
5593 DEFERROR_STANDARD (Qcoding_system_error, Qio_error); 5592 DEFERROR_STANDARD (Qtext_conversion_error, Qconversion_error);
5594 5593
5595 DEFSUBR (Fcoding_system_p); 5594 DEFSUBR (Fcoding_system_p);
5596 DEFSUBR (Ffind_coding_system); 5595 DEFSUBR (Ffind_coding_system);
5597 DEFSUBR (Fget_coding_system); 5596 DEFSUBR (Fget_coding_system);
5598 DEFSUBR (Fcoding_system_list); 5597 DEFSUBR (Fcoding_system_list);
5626 DEFSUBR (Fset_ucs_char); 5625 DEFSUBR (Fset_ucs_char);
5627 DEFSUBR (Fucs_char); 5626 DEFSUBR (Fucs_char);
5628 DEFSUBR (Fset_char_ucs); 5627 DEFSUBR (Fset_char_ucs);
5629 DEFSUBR (Fchar_ucs); 5628 DEFSUBR (Fchar_ucs);
5630 #endif /* MULE */ 5629 #endif /* MULE */
5631 defsymbol (&Qcoding_systemp, "coding-system-p"); 5630 DEFSYMBOL_MULTIWORD_PREDICATE (Qcoding_systemp);
5632 defsymbol (&Qno_conversion, "no-conversion"); 5631 DEFSYMBOL (Qno_conversion);
5633 defsymbol (&Qraw_text, "raw-text"); 5632 DEFSYMBOL (Qraw_text);
5634 #ifdef MULE 5633 #ifdef MULE
5635 defsymbol (&Qbig5, "big5"); 5634 DEFSYMBOL (Qbig5);
5636 defsymbol (&Qshift_jis, "shift-jis"); 5635 DEFSYMBOL (Qshift_jis);
5637 defsymbol (&Qucs4, "ucs-4"); 5636 defsymbol (&Qucs4, "ucs-4");
5638 defsymbol (&Qutf8, "utf-8"); 5637 defsymbol (&Qutf8, "utf-8");
5639 defsymbol (&Qccl, "ccl"); 5638 DEFSYMBOL (Qccl);
5640 defsymbol (&Qiso2022, "iso2022"); 5639 DEFSYMBOL (Qiso2022);
5641 #endif /* MULE */ 5640 #endif /* MULE */
5642 defsymbol (&Qmnemonic, "mnemonic"); 5641 DEFSYMBOL (Qmnemonic);
5643 defsymbol (&Qeol_type, "eol-type"); 5642 DEFSYMBOL (Qeol_type);
5644 defsymbol (&Qpost_read_conversion, "post-read-conversion"); 5643 DEFSYMBOL (Qpost_read_conversion);
5645 defsymbol (&Qpre_write_conversion, "pre-write-conversion"); 5644 DEFSYMBOL (Qpre_write_conversion);
5646 5645
5647 defsymbol (&Qcr, "cr"); 5646 DEFSYMBOL (Qcr);
5648 defsymbol (&Qlf, "lf"); 5647 DEFSYMBOL (Qlf);
5649 defsymbol (&Qcrlf, "crlf"); 5648 DEFSYMBOL (Qcrlf);
5650 defsymbol (&Qeol_cr, "eol-cr"); 5649 DEFSYMBOL (Qeol_cr);
5651 defsymbol (&Qeol_lf, "eol-lf"); 5650 DEFSYMBOL (Qeol_lf);
5652 defsymbol (&Qeol_crlf, "eol-crlf"); 5651 DEFSYMBOL (Qeol_crlf);
5653 #ifdef MULE 5652 #ifdef MULE
5654 defsymbol (&Qcharset_g0, "charset-g0"); 5653 DEFSYMBOL (Qcharset_g0);
5655 defsymbol (&Qcharset_g1, "charset-g1"); 5654 DEFSYMBOL (Qcharset_g1);
5656 defsymbol (&Qcharset_g2, "charset-g2"); 5655 DEFSYMBOL (Qcharset_g2);
5657 defsymbol (&Qcharset_g3, "charset-g3"); 5656 DEFSYMBOL (Qcharset_g3);
5658 defsymbol (&Qforce_g0_on_output, "force-g0-on-output"); 5657 DEFSYMBOL (Qforce_g0_on_output);
5659 defsymbol (&Qforce_g1_on_output, "force-g1-on-output"); 5658 DEFSYMBOL (Qforce_g1_on_output);
5660 defsymbol (&Qforce_g2_on_output, "force-g2-on-output"); 5659 DEFSYMBOL (Qforce_g2_on_output);
5661 defsymbol (&Qforce_g3_on_output, "force-g3-on-output"); 5660 DEFSYMBOL (Qforce_g3_on_output);
5662 defsymbol (&Qno_iso6429, "no-iso6429"); 5661 DEFSYMBOL (Qno_iso6429);
5663 defsymbol (&Qinput_charset_conversion, "input-charset-conversion"); 5662 DEFSYMBOL (Qinput_charset_conversion);
5664 defsymbol (&Qoutput_charset_conversion, "output-charset-conversion"); 5663 DEFSYMBOL (Qoutput_charset_conversion);
5665 5664
5666 defsymbol (&Qshort, "short"); 5665 DEFSYMBOL (Qshort);
5667 defsymbol (&Qno_ascii_eol, "no-ascii-eol"); 5666 DEFSYMBOL (Qno_ascii_eol);
5668 defsymbol (&Qno_ascii_cntl, "no-ascii-cntl"); 5667 DEFSYMBOL (Qno_ascii_cntl);
5669 defsymbol (&Qseven, "seven"); 5668 DEFSYMBOL (Qseven);
5670 defsymbol (&Qlock_shift, "lock-shift"); 5669 DEFSYMBOL (Qlock_shift);
5671 defsymbol (&Qescape_quoted, "escape-quoted"); 5670 DEFSYMBOL (Qescape_quoted);
5672 #endif /* MULE */ 5671 #endif /* MULE */
5673 defsymbol (&Qencode, "encode"); 5672 DEFSYMBOL (Qencode);
5674 defsymbol (&Qdecode, "decode"); 5673 DEFSYMBOL (Qdecode);
5675 5674
5676 #ifdef MULE 5675 #ifdef MULE
5677 defsymbol (&coding_category_symbol[CODING_CATEGORY_SHIFT_JIS], 5676 defsymbol (&coding_category_symbol[CODING_CATEGORY_SHIFT_JIS],
5678 "shift-jis"); 5677 "shift-jis");
5679 defsymbol (&coding_category_symbol[CODING_CATEGORY_BIG5], 5678 defsymbol (&coding_category_symbol[CODING_CATEGORY_BIG5],