comparison src/coding.c @ 32445:05513a882886

(decode_coding_string): Set coding->src_multibyte and coding->dst_multibyte before using CODING_REQUIRE_DECODING. (encode_coding_string): Set coding->src_multibyte and coding->dst_multibyte before using CODING_REQUIRE_ENCODING.
author Kenichi Handa <handa@m17n.org>
date Fri, 13 Oct 2000 08:21:20 +0000
parents 57fa108c491f
children 70dcd0333504
comparison
equal deleted inserted replaced
32444:dd1d1067760b 32445:05513a882886
5273 encounter an inconsitent eol format while decoding. */ 5273 encounter an inconsitent eol format while decoding. */
5274 coding->mode |= CODING_MODE_INHIBIT_INCONSISTENT_EOL; 5274 coding->mode |= CODING_MODE_INHIBIT_INCONSISTENT_EOL;
5275 } 5275 }
5276 } 5276 }
5277 5277
5278 coding->src_multibyte = 0;
5279 coding->dst_multibyte = (coding->type != coding_type_no_conversion
5280 && coding->type != coding_type_raw_text);
5278 require_decoding = CODING_REQUIRE_DECODING (coding); 5281 require_decoding = CODING_REQUIRE_DECODING (coding);
5279 5282
5280 if (STRING_MULTIBYTE (str)) 5283 if (STRING_MULTIBYTE (str))
5281 { 5284 {
5282 /* Decoding routines expect the source text to be unibyte. */ 5285 /* Decoding routines expect the source text to be unibyte. */
5283 str = Fstring_as_unibyte (str); 5286 str = Fstring_as_unibyte (str);
5284 to_byte = STRING_BYTES (XSTRING (str)); 5287 to_byte = STRING_BYTES (XSTRING (str));
5285 nocopy = 1; 5288 nocopy = 1;
5286 } 5289 }
5287 coding->src_multibyte = 0;
5288 coding->dst_multibyte = (coding->type != coding_type_no_conversion
5289 && coding->type != coding_type_raw_text);
5290 5290
5291 /* Try to skip the heading and tailing ASCIIs. */ 5291 /* Try to skip the heading and tailing ASCIIs. */
5292 if (require_decoding && coding->type != coding_type_ccl) 5292 if (require_decoding && coding->type != coding_type_ccl)
5293 { 5293 {
5294 SHRINK_CONVERSION_REGION (&from, &to_byte, coding, XSTRING (str)->data, 5294 SHRINK_CONVERSION_REGION (&from, &to_byte, coding, XSTRING (str)->data,
5418 from = 0; 5418 from = 0;
5419 to = XSTRING (str)->size; 5419 to = XSTRING (str)->size;
5420 to_byte = STRING_BYTES (XSTRING (str)); 5420 to_byte = STRING_BYTES (XSTRING (str));
5421 5421
5422 saved_coding_symbol = Qnil; 5422 saved_coding_symbol = Qnil;
5423 if (! CODING_REQUIRE_ENCODING (coding))
5424 {
5425 coding->consumed = STRING_BYTES (XSTRING (str));
5426 coding->consumed_char = XSTRING (str)->size;
5427 if (STRING_MULTIBYTE (str))
5428 {
5429 str = Fstring_as_unibyte (str);
5430 nocopy = 1;
5431 }
5432 coding->produced = STRING_BYTES (XSTRING (str));
5433 coding->produced_char = XSTRING (str)->size;
5434 return (nocopy ? str : Fcopy_sequence (str));
5435 }
5436 5423
5437 /* Encoding routines determine the multibyteness of the source text 5424 /* Encoding routines determine the multibyteness of the source text
5438 by coding->src_multibyte. */ 5425 by coding->src_multibyte. */
5439 coding->src_multibyte = STRING_MULTIBYTE (str); 5426 coding->src_multibyte = STRING_MULTIBYTE (str);
5440 coding->dst_multibyte = 0; 5427 coding->dst_multibyte = 0;
5428 if (! CODING_REQUIRE_ENCODING (coding))
5429 {
5430 coding->consumed = STRING_BYTES (XSTRING (str));
5431 coding->consumed_char = XSTRING (str)->size;
5432 if (STRING_MULTIBYTE (str))
5433 {
5434 str = Fstring_as_unibyte (str);
5435 nocopy = 1;
5436 }
5437 coding->produced = STRING_BYTES (XSTRING (str));
5438 coding->produced_char = XSTRING (str)->size;
5439 return (nocopy ? str : Fcopy_sequence (str));
5440 }
5441 5441
5442 if (coding->composing != COMPOSITION_DISABLED) 5442 if (coding->composing != COMPOSITION_DISABLED)
5443 coding_save_composition (coding, from, to, str); 5443 coding_save_composition (coding, from, to, str);
5444 5444
5445 /* Try to skip the heading and tailing ASCIIs. */ 5445 /* Try to skip the heading and tailing ASCIIs. */