# HG changeset patch # User Eli Zaretskii # Date 972378275 0 # Node ID 9502d0a5b2ad1af8b124e742d774328dee9ba006 # Parent 112b31ea05268edd6f2c5bc302b4a15ee1b76ec9 (decode_coding_emacs_mule): If coding->eol_type is CR or CRLF, decode EOLs. diff -r 112b31ea0526 -r 9502d0a5b2ad src/coding.c --- a/src/coding.c Tue Oct 24 08:27:34 2000 +0000 +++ b/src/coding.c Tue Oct 24 09:04:35 2000 +0000 @@ -614,7 +614,45 @@ unsigned char tmp[MAX_MULTIBYTE_LENGTH], *p; int bytes; - if (UNIBYTE_STR_AS_MULTIBYTE_P (src, src_end - src, bytes)) + if (*src == '\r') + { + int c; + + src++; + if (coding->eol_type == CODING_EOL_CR) + c = '\n'; + else if (coding->eol_type == CODING_EOL_CRLF) + { + ONE_MORE_BYTE (c); + if (c != '\n') + { + if (coding->mode & CODING_MODE_INHIBIT_INCONSISTENT_EOL) + { + coding->result = CODING_FINISH_INCONSISTENT_EOL; + goto label_end_of_loop; + } + src--; + c = '\r'; + } + } + *dst++ = c; + coding->produced_char++; + continue; + } + else if (*src == '\n') + { + if ((coding->eol_type == CODING_EOL_CR + || coding->eol_type == CODING_EOL_CRLF) + && coding->mode & CODING_MODE_INHIBIT_INCONSISTENT_EOL) + { + coding->result = CODING_FINISH_INCONSISTENT_EOL; + goto label_end_of_loop; + } + *dst++ = *src++; + coding->produced_char++; + continue; + } + else if (UNIBYTE_STR_AS_MULTIBYTE_P (src, src_end - src, bytes)) { p = src; src += bytes; @@ -633,6 +671,7 @@ while (bytes--) *dst++ = *p++; coding->produced_char++; } + label_end_of_loop: coding->consumed = coding->consumed_char = src_base - source; coding->produced = dst - destination; }