Fossil SCM

Fix crnl-warning for file which starts with þÿ or ÿþ (latin-1) and has an odd number of bytes.

jan.nijtmans 2013-03-08 09:15 trunk
Commit 25eec8cfafa70f513cd63c2f5453ce0250994799
1 file changed +10 -2
+10 -2
--- src/checkin.c
+++ src/checkin.c
@@ -914,12 +914,20 @@
914914
Blob fname; /* Relative pathname of the file */
915915
static int allOk = 0; /* Set to true to disable this routine */
916916
917917
if( allOk ) return 0;
918918
fUnicode = starts_with_utf16_bom(p, 0, 0);
919
- eType = fUnicode ? looks_like_utf16(p, &lookFlags) :
920
- looks_like_utf8(p, &lookFlags);
919
+ if (fUnicode) {
920
+ eType = looks_like_utf16(p, &lookFlags);
921
+ if ( lookFlags&LOOK_ODD ){
922
+ /* It cannot be unicode, so try again as single-byte encoding */
923
+ fUnicode = 0;
924
+ eType = looks_like_utf8(p, &lookFlags);
925
+ }
926
+ }else{
927
+ eType = looks_like_utf8(p, &lookFlags);
928
+ }
921929
fHasCrLf = (lookFlags & LOOK_CRLF);
922930
fHasLength = (lookFlags & LOOK_LENGTH);
923931
if( eType==0 || fHasCrLf || fUnicode ){
924932
const char *zWarning;
925933
const char *zDisable;
926934
--- src/checkin.c
+++ src/checkin.c
@@ -914,12 +914,20 @@
914 Blob fname; /* Relative pathname of the file */
915 static int allOk = 0; /* Set to true to disable this routine */
916
917 if( allOk ) return 0;
918 fUnicode = starts_with_utf16_bom(p, 0, 0);
919 eType = fUnicode ? looks_like_utf16(p, &lookFlags) :
920 looks_like_utf8(p, &lookFlags);
 
 
 
 
 
 
 
 
921 fHasCrLf = (lookFlags & LOOK_CRLF);
922 fHasLength = (lookFlags & LOOK_LENGTH);
923 if( eType==0 || fHasCrLf || fUnicode ){
924 const char *zWarning;
925 const char *zDisable;
926
--- src/checkin.c
+++ src/checkin.c
@@ -914,12 +914,20 @@
914 Blob fname; /* Relative pathname of the file */
915 static int allOk = 0; /* Set to true to disable this routine */
916
917 if( allOk ) return 0;
918 fUnicode = starts_with_utf16_bom(p, 0, 0);
919 if (fUnicode) {
920 eType = looks_like_utf16(p, &lookFlags);
921 if ( lookFlags&LOOK_ODD ){
922 /* It cannot be unicode, so try again as single-byte encoding */
923 fUnicode = 0;
924 eType = looks_like_utf8(p, &lookFlags);
925 }
926 }else{
927 eType = looks_like_utf8(p, &lookFlags);
928 }
929 fHasCrLf = (lookFlags & LOOK_CRLF);
930 fHasLength = (lookFlags & LOOK_LENGTH);
931 if( eType==0 || fHasCrLf || fUnicode ){
932 const char *zWarning;
933 const char *zDisable;
934

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button