Changeset 4148 for trunk/src/coding.c
- Timestamp:
- 08/18/06 08:35:31 (2 years ago)
- Files:
-
- trunk/src/coding.c (modified) (19 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/coding.c
r4140 r4148 220 220 221 221 /* Like ONE_MORE_BYTE, but 8-bit bytes of data at SRC are in multibyte 222 form if MULTIBYTEP is nonzero. */ 223 224 #define ONE_MORE_BYTE_CHECK_MULTIBYTE(c1, multibytep) \ 222 form if MULTIBYTEP is nonzero. In addition, if SRC is not less 223 than SRC_END, return with RET. */ 224 225 #define ONE_MORE_BYTE_CHECK_MULTIBYTE(c1, multibytep, ret) \ 225 226 do { \ 226 227 if (src >= src_end) \ 227 228 { \ 228 229 coding->result = CODING_FINISH_INSUFFICIENT_SRC; \ 229 goto label_end_of_loop;\230 return ret; \ 230 231 } \ 231 232 c1 = *src++; \ … … 633 634 while (1) 634 635 { 635 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep );636 636 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, 637 CODING_CATEGORY_MASK_EMACS_MULE); 637 638 if (composing) 638 639 { … … 641 642 else if (c == 0xA0) 642 643 { 643 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep );644 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, 0); 644 645 c &= 0x7F; 645 646 } … … 670 671 } 671 672 } 672 label_end_of_loop:673 return CODING_CATEGORY_MASK_EMACS_MULE;674 673 } 675 674 … … 1426 1425 1427 1426 reg[0] = CHARSET_ASCII, reg[1] = reg[2] = reg[3] = -1; 1428 while (mask && src < src_end)1429 { 1430 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep );1427 while (mask) 1428 { 1429 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, mask & mask_found); 1431 1430 retry: 1432 1431 switch (c) … … 1436 1435 break; 1437 1436 single_shifting = 0; 1438 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep );1437 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, mask & mask_found); 1439 1438 if (c >= '(' && c <= '/') 1440 1439 { 1441 1440 /* Designation sequence for a charset of dimension 1. */ 1442 ONE_MORE_BYTE_CHECK_MULTIBYTE (c1, multibytep );1441 ONE_MORE_BYTE_CHECK_MULTIBYTE (c1, multibytep, mask & mask_found); 1443 1442 if (c1 < ' ' || c1 >= 0x80 1444 1443 || (charset = iso_charset_table[0][c >= ','][c1]) < 0) … … 1450 1449 { 1451 1450 /* Designation sequence for a charset of dimension 2. */ 1452 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep );1451 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, mask & mask_found); 1453 1452 if (c >= '@' && c <= 'B') 1454 1453 /* Designation for JISX0208.1978, GB2312, or JISX0208. */ … … 1456 1455 else if (c >= '(' && c <= '/') 1457 1456 { 1458 ONE_MORE_BYTE_CHECK_MULTIBYTE (c1, multibytep); 1457 ONE_MORE_BYTE_CHECK_MULTIBYTE (c1, multibytep, 1458 mask & mask_found); 1459 1459 if (c1 < ' ' || c1 >= 0x80 1460 1460 || (charset = iso_charset_table[1][c >= ','][c1]) < 0) … … 1631 1631 while (src < src_end) 1632 1632 { 1633 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep); 1633 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, 1634 mask & mask_found); 1634 1635 if (c < 0xA0) 1635 1636 break; … … 1649 1650 } 1650 1651 } 1651 label_end_of_loop:1652 1652 return (mask & mask_found); 1653 1653 } … … 2920 2920 while (1) 2921 2921 { 2922 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep );2922 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, CODING_CATEGORY_MASK_SJIS); 2923 2923 if (c < 0x80) 2924 2924 continue; … … 2927 2927 if (c <= 0x9F || c >= 0xE0) 2928 2928 { 2929 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep );2929 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, 0); 2930 2930 if (c < 0x40 || c == 0x7F || c > 0xFC) 2931 2931 return 0; 2932 2932 } 2933 2933 } 2934 label_end_of_loop:2935 return CODING_CATEGORY_MASK_SJIS;2936 2934 } 2937 2935 … … 2952 2950 while (1) 2953 2951 { 2954 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep );2952 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, CODING_CATEGORY_MASK_BIG5); 2955 2953 if (c < 0x80) 2956 2954 continue; 2957 2955 if (c < 0xA1 || c > 0xFE) 2958 2956 return 0; 2959 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep );2957 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, 0); 2960 2958 if (c < 0x40 || (c > 0x7F && c < 0xA1) || c > 0xFE) 2961 2959 return 0; 2962 2960 } 2963 label_end_of_loop:2964 return CODING_CATEGORY_MASK_BIG5;2965 2961 } 2966 2962 … … 2990 2986 while (1) 2991 2987 { 2992 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep );2988 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, CODING_CATEGORY_MASK_UTF_8); 2993 2989 if (UTF_8_1_OCTET_P (c)) 2994 2990 continue; … … 3008 3004 do 3009 3005 { 3010 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep );3006 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, 0); 3011 3007 if (!UTF_8_EXTRA_OCTET_P (c)) 3012 3008 return 0; … … 3015 3011 while (seq_maybe_bytes > 0); 3016 3012 } 3017 3018 label_end_of_loop:3019 return CODING_CATEGORY_MASK_UTF_8;3020 3013 } 3021 3014 … … 3046 3039 struct coding_system *coding = &dummy_coding; 3047 3040 3048 ONE_MORE_BYTE_CHECK_MULTIBYTE (c1, multibytep );3049 ONE_MORE_BYTE_CHECK_MULTIBYTE (c2, multibytep );3041 ONE_MORE_BYTE_CHECK_MULTIBYTE (c1, multibytep, 0); 3042 ONE_MORE_BYTE_CHECK_MULTIBYTE (c2, multibytep, 0); 3050 3043 3051 3044 if ((c1 == 0xFF) && (c2 == 0xFE)) … … 3053 3046 else if ((c1 == 0xFE) && (c2 == 0xFF)) 3054 3047 return CODING_CATEGORY_MASK_UTF_16_BE; 3055 3056 label_end_of_loop:3057 3048 return 0; 3058 3049 } … … 3323 3314 while (1) 3324 3315 { 3325 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep );3316 ONE_MORE_BYTE_CHECK_MULTIBYTE (c, multibytep, CODING_CATEGORY_MASK_CCL); 3326 3317 if (! valid[c]) 3327 3318 return 0; 3328 3319 } 3329 label_end_of_loop:3330 return CODING_CATEGORY_MASK_CCL;3331 3320 } 3332 3321
