comparison src/coding.c @ 48125:d43e830821e0

(decode_coding_emacs_mule, decode_coding_iso2022) (decode_coding_sjis_big5, decode_eol): Allow lone \r in DOS EOL.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sat, 02 Nov 2002 08:16:57 +0000
parents 080b4586492b
children 9474e269efd1
comparison
equal deleted inserted replaced
48124:110ec10bd1ea 48125:d43e830821e0
1 /* Coding system handler (conversion, detection, and etc). 1 /* Coding system handler (conversion, detection, and etc).
2 Copyright (C) 1995, 1997, 1998, 2002 Electrotechnical Laboratory, JAPAN. 2 Copyright (C) 1995, 1997, 1998, 2002 Electrotechnical Laboratory, JAPAN.
3 Licensed to the Free Software Foundation. 3 Licensed to the Free Software Foundation.
4 Copyright (C) 2001 Free Software Foundation, Inc. 4 Copyright (C) 2001,2002 Free Software Foundation, Inc.
5 5
6 This file is part of GNU Emacs. 6 This file is part of GNU Emacs.
7 7
8 GNU Emacs is free software; you can redistribute it and/or modify 8 GNU Emacs is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
940 else if (coding->eol_type == CODING_EOL_CRLF) 940 else if (coding->eol_type == CODING_EOL_CRLF)
941 { 941 {
942 ONE_MORE_BYTE (c); 942 ONE_MORE_BYTE (c);
943 if (c != '\n') 943 if (c != '\n')
944 { 944 {
945 if (coding->mode & CODING_MODE_INHIBIT_INCONSISTENT_EOL)
946 {
947 coding->result = CODING_FINISH_INCONSISTENT_EOL;
948 goto label_end_of_loop;
949 }
950 src--; 945 src--;
951 c = '\r'; 946 c = '\r';
952 } 947 }
953 } 948 }
954 *dst++ = c; 949 *dst++ = c;
1828 else if (coding->eol_type == CODING_EOL_CRLF) 1823 else if (coding->eol_type == CODING_EOL_CRLF)
1829 { 1824 {
1830 ONE_MORE_BYTE (c1); 1825 ONE_MORE_BYTE (c1);
1831 if (c1 != ISO_CODE_LF) 1826 if (c1 != ISO_CODE_LF)
1832 { 1827 {
1833 if (coding->mode & CODING_MODE_INHIBIT_INCONSISTENT_EOL)
1834 {
1835 coding->result = CODING_FINISH_INCONSISTENT_EOL;
1836 goto label_end_of_loop;
1837 }
1838 src--; 1828 src--;
1839 c1 = '\r'; 1829 c1 = '\r';
1840 } 1830 }
1841 } 1831 }
1842 charset = CHARSET_ASCII; 1832 charset = CHARSET_ASCII;
2926 if (coding->eol_type == CODING_EOL_CRLF) 2916 if (coding->eol_type == CODING_EOL_CRLF)
2927 { 2917 {
2928 ONE_MORE_BYTE (c2); 2918 ONE_MORE_BYTE (c2);
2929 if (c2 == '\n') 2919 if (c2 == '\n')
2930 c1 = c2; 2920 c1 = c2;
2931 else if (coding->mode
2932 & CODING_MODE_INHIBIT_INCONSISTENT_EOL)
2933 {
2934 coding->result = CODING_FINISH_INCONSISTENT_EOL;
2935 goto label_end_of_loop;
2936 }
2937 else 2921 else
2938 /* To process C2 again, SRC is subtracted by 1. */ 2922 /* To process C2 again, SRC is subtracted by 1. */
2939 src--; 2923 src--;
2940 } 2924 }
2941 else if (coding->eol_type == CODING_EOL_CR) 2925 else if (coding->eol_type == CODING_EOL_CR)
3177 if (c == '\r') 3161 if (c == '\r')
3178 { 3162 {
3179 ONE_MORE_BYTE (c); 3163 ONE_MORE_BYTE (c);
3180 if (c != '\n') 3164 if (c != '\n')
3181 { 3165 {
3182 if (coding->mode & CODING_MODE_INHIBIT_INCONSISTENT_EOL)
3183 {
3184 coding->result = CODING_FINISH_INCONSISTENT_EOL;
3185 goto label_end_of_loop;
3186 }
3187 src--; 3166 src--;
3188 c = '\r'; 3167 c = '\r';
3189 } 3168 }
3190 } 3169 }
3191 else if (c == '\n' 3170 else if (c == '\n'