Mercurial > emacs
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' |