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