Fossil SCM
Enable fossil to distinguish correctly CR/CRNL/mixed line endings.
Commit
f89e2eccbb9e2861c2c7c0a90045fefaf6703d13
Parent
68f8aafb3fd923f…
2 files changed
+12
-8
+1
+12
-8
| --- src/checkin.c | ||
| +++ src/checkin.c | ||
| @@ -919,11 +919,11 @@ | ||
| 919 | 919 | if( fUnicode ){ |
| 920 | 920 | lookFlags = looks_like_utf16(p, bReverse); |
| 921 | 921 | }else{ |
| 922 | 922 | lookFlags = looks_like_utf8(p); |
| 923 | 923 | } |
| 924 | - if( lookFlags&(LOOK_BINARY|LOOK_LONG|LOOK_LONE_CR|LOOK_CRLF) || fUnicode ){ | |
| 924 | + if( lookFlags&(LOOK_BINARY|LOOK_LONG|LOOK_CR) || fUnicode ){ | |
| 925 | 925 | const char *zWarning; |
| 926 | 926 | const char *zDisable; |
| 927 | 927 | const char *zConvert = "c=convert/"; |
| 928 | 928 | Blob ans; |
| 929 | 929 | char cReply; |
| @@ -940,28 +940,32 @@ | ||
| 940 | 940 | }else{ |
| 941 | 941 | zWarning = "binary data"; |
| 942 | 942 | zConvert = ""; /* We cannot convert binary files. */ |
| 943 | 943 | } |
| 944 | 944 | zDisable = "\"binary-glob\" setting"; |
| 945 | - }else if( lookFlags&(LOOK_LONE_CR|LOOK_CRLF) && fUnicode ){ | |
| 945 | + }else if( lookFlags&(LOOK_CR) && fUnicode ){ | |
| 946 | 946 | if( crnlOk && encodingOk ){ |
| 947 | 947 | return 0; /* We don't want CR/NL and Unicode warnings for this file. */ |
| 948 | 948 | } |
| 949 | - if( lookFlags&LOOK_LONE_CR ){ | |
| 949 | + if( (lookFlags&LOOK_EOL) == LOOK_LONE_CR ){ | |
| 950 | 950 | zWarning = "CR line endings and Unicode"; |
| 951 | - }else{ | |
| 951 | + }else if( (lookFlags&LOOK_EOL) == LOOK_CRLF ){ | |
| 952 | 952 | zWarning = "CR/NL line endings and Unicode"; |
| 953 | + }else{ | |
| 954 | + zWarning = "mixed line endings and Unicode"; | |
| 953 | 955 | } |
| 954 | 956 | zDisable = "\"crnl-glob\" and \"encoding-glob\" settings"; |
| 955 | - }else if( lookFlags&(LOOK_LONE_CR|LOOK_CRLF) ){ | |
| 957 | + }else if( lookFlags&LOOK_CR ){ | |
| 956 | 958 | if( crnlOk ){ |
| 957 | 959 | return 0; /* We don't want CR/NL warnings for this file. */ |
| 958 | 960 | } |
| 959 | - if( lookFlags&LOOK_LONE_CR ){ | |
| 961 | + if( (lookFlags&LOOK_EOL) == LOOK_LONE_CR ){ | |
| 960 | 962 | zWarning = "CR line endings"; |
| 961 | - }else{ | |
| 963 | + }else if( (lookFlags&LOOK_EOL) == LOOK_CRLF ){ | |
| 962 | 964 | zWarning = "CR/NL line endings"; |
| 965 | + }else{ | |
| 966 | + zWarning = "mixed line endings"; | |
| 963 | 967 | } |
| 964 | 968 | zDisable = "\"crnl-glob\" setting"; |
| 965 | 969 | }else{ |
| 966 | 970 | if( encodingOk ){ |
| 967 | 971 | return 0; /* We don't want encoding warnings for this file. */ |
| @@ -993,11 +997,11 @@ | ||
| 993 | 997 | int bomSize; |
| 994 | 998 | const unsigned char *bom = get_utf8_bom(&bomSize); |
| 995 | 999 | fwrite(bom, 1, bomSize, f); |
| 996 | 1000 | blob_to_utf8_no_bom(p, 0); |
| 997 | 1001 | } |
| 998 | - if( lookFlags&(LOOK_LONE_CR|LOOK_CRLF) ){ | |
| 1002 | + if( lookFlags&LOOK_CR ){ | |
| 999 | 1003 | blob_to_lf_only(p); |
| 1000 | 1004 | } |
| 1001 | 1005 | fwrite(blob_buffer(p), 1, blob_size(p), f); |
| 1002 | 1006 | fclose(f); |
| 1003 | 1007 | return 1; |
| 1004 | 1008 |
| --- src/checkin.c | |
| +++ src/checkin.c | |
| @@ -919,11 +919,11 @@ | |
| 919 | if( fUnicode ){ |
| 920 | lookFlags = looks_like_utf16(p, bReverse); |
| 921 | }else{ |
| 922 | lookFlags = looks_like_utf8(p); |
| 923 | } |
| 924 | if( lookFlags&(LOOK_BINARY|LOOK_LONG|LOOK_LONE_CR|LOOK_CRLF) || fUnicode ){ |
| 925 | const char *zWarning; |
| 926 | const char *zDisable; |
| 927 | const char *zConvert = "c=convert/"; |
| 928 | Blob ans; |
| 929 | char cReply; |
| @@ -940,28 +940,32 @@ | |
| 940 | }else{ |
| 941 | zWarning = "binary data"; |
| 942 | zConvert = ""; /* We cannot convert binary files. */ |
| 943 | } |
| 944 | zDisable = "\"binary-glob\" setting"; |
| 945 | }else if( lookFlags&(LOOK_LONE_CR|LOOK_CRLF) && fUnicode ){ |
| 946 | if( crnlOk && encodingOk ){ |
| 947 | return 0; /* We don't want CR/NL and Unicode warnings for this file. */ |
| 948 | } |
| 949 | if( lookFlags&LOOK_LONE_CR ){ |
| 950 | zWarning = "CR line endings and Unicode"; |
| 951 | }else{ |
| 952 | zWarning = "CR/NL line endings and Unicode"; |
| 953 | } |
| 954 | zDisable = "\"crnl-glob\" and \"encoding-glob\" settings"; |
| 955 | }else if( lookFlags&(LOOK_LONE_CR|LOOK_CRLF) ){ |
| 956 | if( crnlOk ){ |
| 957 | return 0; /* We don't want CR/NL warnings for this file. */ |
| 958 | } |
| 959 | if( lookFlags&LOOK_LONE_CR ){ |
| 960 | zWarning = "CR line endings"; |
| 961 | }else{ |
| 962 | zWarning = "CR/NL line endings"; |
| 963 | } |
| 964 | zDisable = "\"crnl-glob\" setting"; |
| 965 | }else{ |
| 966 | if( encodingOk ){ |
| 967 | return 0; /* We don't want encoding warnings for this file. */ |
| @@ -993,11 +997,11 @@ | |
| 993 | int bomSize; |
| 994 | const unsigned char *bom = get_utf8_bom(&bomSize); |
| 995 | fwrite(bom, 1, bomSize, f); |
| 996 | blob_to_utf8_no_bom(p, 0); |
| 997 | } |
| 998 | if( lookFlags&(LOOK_LONE_CR|LOOK_CRLF) ){ |
| 999 | blob_to_lf_only(p); |
| 1000 | } |
| 1001 | fwrite(blob_buffer(p), 1, blob_size(p), f); |
| 1002 | fclose(f); |
| 1003 | return 1; |
| 1004 |
| --- src/checkin.c | |
| +++ src/checkin.c | |
| @@ -919,11 +919,11 @@ | |
| 919 | if( fUnicode ){ |
| 920 | lookFlags = looks_like_utf16(p, bReverse); |
| 921 | }else{ |
| 922 | lookFlags = looks_like_utf8(p); |
| 923 | } |
| 924 | if( lookFlags&(LOOK_BINARY|LOOK_LONG|LOOK_CR) || fUnicode ){ |
| 925 | const char *zWarning; |
| 926 | const char *zDisable; |
| 927 | const char *zConvert = "c=convert/"; |
| 928 | Blob ans; |
| 929 | char cReply; |
| @@ -940,28 +940,32 @@ | |
| 940 | }else{ |
| 941 | zWarning = "binary data"; |
| 942 | zConvert = ""; /* We cannot convert binary files. */ |
| 943 | } |
| 944 | zDisable = "\"binary-glob\" setting"; |
| 945 | }else if( lookFlags&(LOOK_CR) && fUnicode ){ |
| 946 | if( crnlOk && encodingOk ){ |
| 947 | return 0; /* We don't want CR/NL and Unicode warnings for this file. */ |
| 948 | } |
| 949 | if( (lookFlags&LOOK_EOL) == LOOK_LONE_CR ){ |
| 950 | zWarning = "CR line endings and Unicode"; |
| 951 | }else if( (lookFlags&LOOK_EOL) == LOOK_CRLF ){ |
| 952 | zWarning = "CR/NL line endings and Unicode"; |
| 953 | }else{ |
| 954 | zWarning = "mixed line endings and Unicode"; |
| 955 | } |
| 956 | zDisable = "\"crnl-glob\" and \"encoding-glob\" settings"; |
| 957 | }else if( lookFlags&LOOK_CR ){ |
| 958 | if( crnlOk ){ |
| 959 | return 0; /* We don't want CR/NL warnings for this file. */ |
| 960 | } |
| 961 | if( (lookFlags&LOOK_EOL) == LOOK_LONE_CR ){ |
| 962 | zWarning = "CR line endings"; |
| 963 | }else if( (lookFlags&LOOK_EOL) == LOOK_CRLF ){ |
| 964 | zWarning = "CR/NL line endings"; |
| 965 | }else{ |
| 966 | zWarning = "mixed line endings"; |
| 967 | } |
| 968 | zDisable = "\"crnl-glob\" setting"; |
| 969 | }else{ |
| 970 | if( encodingOk ){ |
| 971 | return 0; /* We don't want encoding warnings for this file. */ |
| @@ -993,11 +997,11 @@ | |
| 997 | int bomSize; |
| 998 | const unsigned char *bom = get_utf8_bom(&bomSize); |
| 999 | fwrite(bom, 1, bomSize, f); |
| 1000 | blob_to_utf8_no_bom(p, 0); |
| 1001 | } |
| 1002 | if( lookFlags&LOOK_CR ){ |
| 1003 | blob_to_lf_only(p); |
| 1004 | } |
| 1005 | fwrite(blob_buffer(p), 1, blob_size(p), f); |
| 1006 | fclose(f); |
| 1007 | return 1; |
| 1008 |
+1
| --- src/diff.c | ||
| +++ src/diff.c | ||
| @@ -79,10 +79,11 @@ | ||
| 79 | 79 | #define LOOK_LONG ((int)0x00000040) /* An over length line was found. */ |
| 80 | 80 | #define LOOK_ODD ((int)0x00000080) /* An odd number of bytes was found. */ |
| 81 | 81 | #define LOOK_SHORT ((int)0x00000100) /* Unable to perform full check. */ |
| 82 | 82 | #define LOOK_INVALID ((int)0x00000200) /* Invalid sequence was found. */ |
| 83 | 83 | #define LOOK_BINARY (LOOK_NUL | LOOK_LONG | LOOK_SHORT) /* May be binary. */ |
| 84 | +#define LOOK_EOL (LOOK_LONE_CR | LOOK_LONE_LF | LOOK_CRLF) /* Any eol type. */ | |
| 84 | 85 | #endif /* INTERFACE */ |
| 85 | 86 | |
| 86 | 87 | /* |
| 87 | 88 | ** Maximum length of a line in a text file, in bytes. (2**13 = 8192 bytes) |
| 88 | 89 | */ |
| 89 | 90 |
| --- src/diff.c | |
| +++ src/diff.c | |
| @@ -79,10 +79,11 @@ | |
| 79 | #define LOOK_LONG ((int)0x00000040) /* An over length line was found. */ |
| 80 | #define LOOK_ODD ((int)0x00000080) /* An odd number of bytes was found. */ |
| 81 | #define LOOK_SHORT ((int)0x00000100) /* Unable to perform full check. */ |
| 82 | #define LOOK_INVALID ((int)0x00000200) /* Invalid sequence was found. */ |
| 83 | #define LOOK_BINARY (LOOK_NUL | LOOK_LONG | LOOK_SHORT) /* May be binary. */ |
| 84 | #endif /* INTERFACE */ |
| 85 | |
| 86 | /* |
| 87 | ** Maximum length of a line in a text file, in bytes. (2**13 = 8192 bytes) |
| 88 | */ |
| 89 |
| --- src/diff.c | |
| +++ src/diff.c | |
| @@ -79,10 +79,11 @@ | |
| 79 | #define LOOK_LONG ((int)0x00000040) /* An over length line was found. */ |
| 80 | #define LOOK_ODD ((int)0x00000080) /* An odd number of bytes was found. */ |
| 81 | #define LOOK_SHORT ((int)0x00000100) /* Unable to perform full check. */ |
| 82 | #define LOOK_INVALID ((int)0x00000200) /* Invalid sequence was found. */ |
| 83 | #define LOOK_BINARY (LOOK_NUL | LOOK_LONG | LOOK_SHORT) /* May be binary. */ |
| 84 | #define LOOK_EOL (LOOK_LONE_CR | LOOK_LONE_LF | LOOK_CRLF) /* Any eol type. */ |
| 85 | #endif /* INTERFACE */ |
| 86 | |
| 87 | /* |
| 88 | ** Maximum length of a line in a text file, in bytes. (2**13 = 8192 bytes) |
| 89 | */ |
| 90 |