Mercurial > emacs
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 |
