diff options
| author | Stefan Monnier | 2010-12-10 19:13:08 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2010-12-10 19:13:08 -0500 |
| commit | 2c302df3a13236bfbf8ea1b771d13618fcda8d71 (patch) | |
| tree | f26dc9f22861dc37610de319d05255de058c221b /src/coding.c | |
| parent | 0c747cb143fa227e78f350ac353d703f489209df (diff) | |
| parent | 175069efeb080517afefdd44a06f7a779ea8c25c (diff) | |
| download | emacs-2c302df3a13236bfbf8ea1b771d13618fcda8d71.tar.gz emacs-2c302df3a13236bfbf8ea1b771d13618fcda8d71.zip | |
Merge from trunk
Diffstat (limited to 'src/coding.c')
| -rw-r--r-- | src/coding.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/coding.c b/src/coding.c index 7a3bc40b9c7..a7b7c7d6b23 100644 --- a/src/coding.c +++ b/src/coding.c | |||
| @@ -2053,7 +2053,7 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src, | |||
| 2053 | const unsigned char *src_end = coding->source + coding->src_bytes; | 2053 | const unsigned char *src_end = coding->source + coding->src_bytes; |
| 2054 | const unsigned char *src_base = src; | 2054 | const unsigned char *src_base = src; |
| 2055 | int multibytep = coding->src_multibyte; | 2055 | int multibytep = coding->src_multibyte; |
| 2056 | struct charset *charset; | 2056 | int charset_id; |
| 2057 | unsigned code; | 2057 | unsigned code; |
| 2058 | int c; | 2058 | int c; |
| 2059 | int consumed_chars = 0; | 2059 | int consumed_chars = 0; |
| @@ -2063,7 +2063,7 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src, | |||
| 2063 | if (c < 0) | 2063 | if (c < 0) |
| 2064 | { | 2064 | { |
| 2065 | c = -c; | 2065 | c = -c; |
| 2066 | charset = emacs_mule_charset[0]; | 2066 | charset_id = emacs_mule_charset[0]; |
| 2067 | } | 2067 | } |
| 2068 | else | 2068 | else |
| 2069 | { | 2069 | { |
| @@ -2099,7 +2099,7 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src, | |||
| 2099 | switch (emacs_mule_bytes[c]) | 2099 | switch (emacs_mule_bytes[c]) |
| 2100 | { | 2100 | { |
| 2101 | case 2: | 2101 | case 2: |
| 2102 | if (! (charset = emacs_mule_charset[c])) | 2102 | if ((charset_id = emacs_mule_charset[c]) < 0) |
| 2103 | goto invalid_code; | 2103 | goto invalid_code; |
| 2104 | ONE_MORE_BYTE (c); | 2104 | ONE_MORE_BYTE (c); |
| 2105 | if (c < 0xA0) | 2105 | if (c < 0xA0) |
| @@ -2112,7 +2112,7 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src, | |||
| 2112 | || c == EMACS_MULE_LEADING_CODE_PRIVATE_12) | 2112 | || c == EMACS_MULE_LEADING_CODE_PRIVATE_12) |
| 2113 | { | 2113 | { |
| 2114 | ONE_MORE_BYTE (c); | 2114 | ONE_MORE_BYTE (c); |
| 2115 | if (c < 0xA0 || ! (charset = emacs_mule_charset[c])) | 2115 | if (c < 0xA0 || (charset_id = emacs_mule_charset[c]) < 0) |
| 2116 | goto invalid_code; | 2116 | goto invalid_code; |
| 2117 | ONE_MORE_BYTE (c); | 2117 | ONE_MORE_BYTE (c); |
| 2118 | if (c < 0xA0) | 2118 | if (c < 0xA0) |
| @@ -2121,7 +2121,7 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src, | |||
| 2121 | } | 2121 | } |
| 2122 | else | 2122 | else |
| 2123 | { | 2123 | { |
| 2124 | if (! (charset = emacs_mule_charset[c])) | 2124 | if ((charset_id = emacs_mule_charset[c]) < 0) |
| 2125 | goto invalid_code; | 2125 | goto invalid_code; |
| 2126 | ONE_MORE_BYTE (c); | 2126 | ONE_MORE_BYTE (c); |
| 2127 | if (c < 0xA0) | 2127 | if (c < 0xA0) |
| @@ -2136,7 +2136,7 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src, | |||
| 2136 | 2136 | ||
| 2137 | case 4: | 2137 | case 4: |
| 2138 | ONE_MORE_BYTE (c); | 2138 | ONE_MORE_BYTE (c); |
| 2139 | if (c < 0 || ! (charset = emacs_mule_charset[c])) | 2139 | if (c < 0 || (charset_id = emacs_mule_charset[c]) < 0) |
| 2140 | goto invalid_code; | 2140 | goto invalid_code; |
| 2141 | ONE_MORE_BYTE (c); | 2141 | ONE_MORE_BYTE (c); |
| 2142 | if (c < 0xA0) | 2142 | if (c < 0xA0) |
| @@ -2150,21 +2150,21 @@ emacs_mule_char (struct coding_system *coding, const unsigned char *src, | |||
| 2150 | 2150 | ||
| 2151 | case 1: | 2151 | case 1: |
| 2152 | code = c; | 2152 | code = c; |
| 2153 | charset = CHARSET_FROM_ID (ASCII_BYTE_P (code) | 2153 | charset_id = ASCII_BYTE_P (code) ? charset_ascii : charset_eight_bit; |
| 2154 | ? charset_ascii : charset_eight_bit); | ||
| 2155 | break; | 2154 | break; |
| 2156 | 2155 | ||
| 2157 | default: | 2156 | default: |
| 2158 | abort (); | 2157 | abort (); |
| 2159 | } | 2158 | } |
| 2160 | CODING_DECODE_CHAR (coding, src, src_base, src_end, charset, code, c); | 2159 | CODING_DECODE_CHAR (coding, src, src_base, src_end, |
| 2160 | CHARSET_FROM_ID (charset_id), code, c); | ||
| 2161 | if (c < 0) | 2161 | if (c < 0) |
| 2162 | goto invalid_code; | 2162 | goto invalid_code; |
| 2163 | } | 2163 | } |
| 2164 | *nbytes = src - src_base; | 2164 | *nbytes = src - src_base; |
| 2165 | *nchars = consumed_chars; | 2165 | *nchars = consumed_chars; |
| 2166 | if (id) | 2166 | if (id) |
| 2167 | *id = charset->id; | 2167 | *id = charset_id; |
| 2168 | return (mseq_found ? -c : c); | 2168 | return (mseq_found ? -c : c); |
| 2169 | 2169 | ||
| 2170 | no_more_source: | 2170 | no_more_source: |
| @@ -9297,7 +9297,8 @@ DEFUN ("set-terminal-coding-system-internal", Fset_terminal_coding_system_intern | |||
| 9297 | doc: /* Internal use only. */) | 9297 | doc: /* Internal use only. */) |
| 9298 | (Lisp_Object coding_system, Lisp_Object terminal) | 9298 | (Lisp_Object coding_system, Lisp_Object terminal) |
| 9299 | { | 9299 | { |
| 9300 | struct coding_system *terminal_coding = TERMINAL_TERMINAL_CODING (get_terminal (terminal, 1)); | 9300 | struct terminal *term = get_terminal (terminal, 1); |
| 9301 | struct coding_system *terminal_coding = TERMINAL_TERMINAL_CODING (term); | ||
| 9301 | CHECK_SYMBOL (coding_system); | 9302 | CHECK_SYMBOL (coding_system); |
| 9302 | setup_coding_system (Fcheck_coding_system (coding_system), terminal_coding); | 9303 | setup_coding_system (Fcheck_coding_system (coding_system), terminal_coding); |
| 9303 | /* We had better not send unsafe characters to terminal. */ | 9304 | /* We had better not send unsafe characters to terminal. */ |
| @@ -9306,6 +9307,10 @@ DEFUN ("set-terminal-coding-system-internal", Fset_terminal_coding_system_intern | |||
| 9306 | terminal_coding->common_flags &= ~CODING_ANNOTATE_COMPOSITION_MASK; | 9307 | terminal_coding->common_flags &= ~CODING_ANNOTATE_COMPOSITION_MASK; |
| 9307 | terminal_coding->src_multibyte = 1; | 9308 | terminal_coding->src_multibyte = 1; |
| 9308 | terminal_coding->dst_multibyte = 0; | 9309 | terminal_coding->dst_multibyte = 0; |
| 9310 | if (terminal_coding->common_flags & CODING_REQUIRE_ENCODING_MASK) | ||
| 9311 | term->charset_list = coding_charset_list (terminal_coding); | ||
| 9312 | else | ||
| 9313 | term->charset_list = Fcons (make_number (charset_ascii), Qnil); | ||
| 9309 | return Qnil; | 9314 | return Qnil; |
| 9310 | } | 9315 | } |
| 9311 | 9316 | ||
| @@ -10554,7 +10559,7 @@ associated with each coding-category one by one in this order. When | |||
| 10554 | one algorithm agrees with a byte sequence of source text, the coding | 10559 | one algorithm agrees with a byte sequence of source text, the coding |
| 10555 | system bound to the corresponding coding-category is selected. | 10560 | system bound to the corresponding coding-category is selected. |
| 10556 | 10561 | ||
| 10557 | Don't modify this variable directly, but use `set-coding-priority'. */); | 10562 | Don't modify this variable directly, but use `set-coding-system-priority'. */); |
| 10558 | { | 10563 | { |
| 10559 | int i; | 10564 | int i; |
| 10560 | 10565 | ||