comparison src/coding.c @ 89404:3e1d187b52c3

(Qutf_16_be_nosig, Qutf_16_be, Qutf_16_le_nosig) (Qutf_16_le): Remove these variables. (syms_of_coding): Don't DEFSYM them. (decode_coding_utf_16): Fix handling of BOM. (encode_coding_utf_16): Fix handling of BOM.
author Kenichi Handa <handa@m17n.org>
date Fri, 28 Mar 2003 04:09:32 +0000
parents 6ffca50f25b9
children a9c2b3712863
comparison
equal deleted inserted replaced
89403:e7eb0fa7dce7 89404:3e1d187b52c3
306 Lisp_Object Qbuffer_file_coding_system; 306 Lisp_Object Qbuffer_file_coding_system;
307 Lisp_Object Qpost_read_conversion, Qpre_write_conversion; 307 Lisp_Object Qpost_read_conversion, Qpre_write_conversion;
308 Lisp_Object Qdefault_char; 308 Lisp_Object Qdefault_char;
309 Lisp_Object Qno_conversion, Qundecided; 309 Lisp_Object Qno_conversion, Qundecided;
310 Lisp_Object Qcharset, Qiso_2022, Qutf_8, Qutf_16, Qshift_jis, Qbig5; 310 Lisp_Object Qcharset, Qiso_2022, Qutf_8, Qutf_16, Qshift_jis, Qbig5;
311 Lisp_Object Qutf_16_be_nosig, Qutf_16_be, Qutf_16_le_nosig, Qutf_16_le;
312 Lisp_Object Qsignature, Qendian, Qbig, Qlittle; 311 Lisp_Object Qsignature, Qendian, Qbig, Qlittle;
313 Lisp_Object Qcoding_system_history; 312 Lisp_Object Qcoding_system_history;
314 Lisp_Object Qvalid_codes; 313 Lisp_Object Qvalid_codes;
315 314
316 extern Lisp_Object Qinsert_file_contents, Qwrite_region; 315 extern Lisp_Object Qinsert_file_contents, Qwrite_region;
1403 ONE_MORE_BYTE (c2); 1402 ONE_MORE_BYTE (c2);
1404 c = (c1 << 8) | c2; 1403 c = (c1 << 8) | c2;
1405 if (bom == utf_16_with_bom) 1404 if (bom == utf_16_with_bom)
1406 { 1405 {
1407 if (endian == utf_16_big_endian 1406 if (endian == utf_16_big_endian
1408 ? c != 0xFFFE : c != 0xFEFF) 1407 ? c != 0xFEFF : c != 0xFFFE)
1409 { 1408 {
1410 /* We are sure that there's enouph room at CHARBUF. */ 1409 /* We are sure that there's enouph room at CHARBUF. */
1411 *charbuf++ = c1; 1410 *charbuf++ = c1;
1412 *charbuf++ = c2; 1411 *charbuf++ = c2;
1413 coding->errors++; 1412 coding->errors++;
1414 } 1413 }
1415 } 1414 }
1416 else 1415 else
1417 { 1416 {
1418 if (c == 0xFFFE) 1417 if (c == 0xFEFF)
1419 CODING_UTF_16_ENDIAN (coding) 1418 CODING_UTF_16_ENDIAN (coding)
1420 = endian = utf_16_big_endian; 1419 = endian = utf_16_big_endian;
1421 else if (c == 0xFEFF) 1420 else if (c == 0xFFFE)
1422 CODING_UTF_16_ENDIAN (coding) 1421 CODING_UTF_16_ENDIAN (coding)
1423 = endian = utf_16_little_endian; 1422 = endian = utf_16_little_endian;
1424 else 1423 else
1425 { 1424 {
1426 CODING_UTF_16_ENDIAN (coding) 1425 CODING_UTF_16_ENDIAN (coding)
1503 1502
1504 if (bom == utf_16_with_bom) 1503 if (bom == utf_16_with_bom)
1505 { 1504 {
1506 ASSURE_DESTINATION (safe_room); 1505 ASSURE_DESTINATION (safe_room);
1507 if (big_endian) 1506 if (big_endian)
1507 EMIT_TWO_BYTES (0xFE, 0xFF);
1508 else
1508 EMIT_TWO_BYTES (0xFF, 0xFE); 1509 EMIT_TWO_BYTES (0xFF, 0xFE);
1509 else
1510 EMIT_TWO_BYTES (0xFE, 0xFF);
1511 CODING_UTF_16_BOM (coding) = utf_16_without_bom; 1510 CODING_UTF_16_BOM (coding) = utf_16_without_bom;
1512 } 1511 }
1513 1512
1514 while (charbuf < charbuf_end) 1513 while (charbuf < charbuf_end)
1515 { 1514 {
8411 DEFSYM (Qiso_2022, "iso-2022"); 8410 DEFSYM (Qiso_2022, "iso-2022");
8412 8411
8413 DEFSYM (Qutf_8, "utf-8"); 8412 DEFSYM (Qutf_8, "utf-8");
8414 8413
8415 DEFSYM (Qutf_16, "utf-16"); 8414 DEFSYM (Qutf_16, "utf-16");
8416 DEFSYM (Qutf_16_be, "utf-16-be");
8417 DEFSYM (Qutf_16_be_nosig, "utf-16-be-nosig");
8418 DEFSYM (Qutf_16_le, "utf-16-l3");
8419 DEFSYM (Qutf_16_le_nosig, "utf-16-le-nosig");
8420 DEFSYM (Qsignature, "signature"); 8415 DEFSYM (Qsignature, "signature");
8421 DEFSYM (Qendian, "endian"); 8416 DEFSYM (Qendian, "endian");
8422 DEFSYM (Qbig, "big"); 8417 DEFSYM (Qbig, "big");
8423 DEFSYM (Qlittle, "little"); 8418 DEFSYM (Qlittle, "little");
8424 8419