Fossil SCM

Add the test-looks-like-utf test command to help test the looks_like_utf*() and related functions.

mistachkin 2013-03-06 20:27 trunk
Commit 08b96cedee3734bc9b5405972791b1b59fe80356
1 file changed +31
+31
--- src/diff.c
+++ src/diff.c
@@ -2446,5 +2446,36 @@
24462446
for(i=0; i<ann.nOrig; i++){
24472447
fossil_print("%s: %.*s\n",
24482448
ann.aOrig[i].zSrc, ann.aOrig[i].n, ann.aOrig[i].z);
24492449
}
24502450
}
2451
+
2452
+/*
2453
+** COMMAND: test-looks-like-utf
2454
+**
2455
+** Usage: %fossil test-looks-like-utf FILENAME
2456
+**
2457
+** FILENAME is the name of a file to check for textual content in the UTF-8
2458
+** and/or UTF-16 encodings.
2459
+*/
2460
+void looks_like_utf_test_cmd(void){
2461
+ Blob blob; /* the contents of the specified file */
2462
+ int eType; /* return value of looks_like_utf8/utf16() */
2463
+ int fUtf8; /* return value of starts_with_utf8_bom() */
2464
+ int fUtf16; /* return value of starts_with_utf16_bom() */
2465
+ int lookFlags; /* output flags from looks_like_utf8/utf16() */
2466
+ if( g.argc<3 ) usage("FILENAME");
2467
+ blob_read_from_file(&blob, g.argv[2]);
2468
+ fUtf8 = starts_with_utf8_bom(&blob, 0);
2469
+ fUtf16 = starts_with_utf16_bom(&blob, 0, 0);
2470
+ eType = fUtf16 ? looks_like_utf16(&blob, &lookFlags) :
2471
+ looks_like_utf8(&blob, &lookFlags);
2472
+ fossil_print("File \"%s\" has %d bytes.\n",g.argv[2],blob_size(&blob));
2473
+ fossil_print("Starts with UTF-8 BOM: %s\n",fUtf8?"yes":"no");
2474
+ fossil_print("Starts with UTF-16 BOM: %s\n",fUtf16?"yes":"no");
2475
+ fossil_print("Looks like UTF-%s: %s\n", fUtf16?"16":"8",eType?"yes":"no");
2476
+ fossil_print("Has flag LOOK_NUL: %s\n",(lookFlags&LOOK_NUL)?"yes":"no");
2477
+ fossil_print("Has flag LOOK_LF: %s\n",(lookFlags&LOOK_LF)?"yes":"no");
2478
+ fossil_print("Has flag LOOK_CRLF: %s\n",(lookFlags&LOOK_CRLF)?"yes":"no");
2479
+ fossil_print("Has flag LOOK_LENGTH: %s\n",(lookFlags&LOOK_LENGTH)?"yes":"no");
2480
+ blob_reset(&blob);
2481
+}
24512482
--- src/diff.c
+++ src/diff.c
@@ -2446,5 +2446,36 @@
2446 for(i=0; i<ann.nOrig; i++){
2447 fossil_print("%s: %.*s\n",
2448 ann.aOrig[i].zSrc, ann.aOrig[i].n, ann.aOrig[i].z);
2449 }
2450 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2451
--- src/diff.c
+++ src/diff.c
@@ -2446,5 +2446,36 @@
2446 for(i=0; i<ann.nOrig; i++){
2447 fossil_print("%s: %.*s\n",
2448 ann.aOrig[i].zSrc, ann.aOrig[i].n, ann.aOrig[i].z);
2449 }
2450 }
2451
2452 /*
2453 ** COMMAND: test-looks-like-utf
2454 **
2455 ** Usage: %fossil test-looks-like-utf FILENAME
2456 **
2457 ** FILENAME is the name of a file to check for textual content in the UTF-8
2458 ** and/or UTF-16 encodings.
2459 */
2460 void looks_like_utf_test_cmd(void){
2461 Blob blob; /* the contents of the specified file */
2462 int eType; /* return value of looks_like_utf8/utf16() */
2463 int fUtf8; /* return value of starts_with_utf8_bom() */
2464 int fUtf16; /* return value of starts_with_utf16_bom() */
2465 int lookFlags; /* output flags from looks_like_utf8/utf16() */
2466 if( g.argc<3 ) usage("FILENAME");
2467 blob_read_from_file(&blob, g.argv[2]);
2468 fUtf8 = starts_with_utf8_bom(&blob, 0);
2469 fUtf16 = starts_with_utf16_bom(&blob, 0, 0);
2470 eType = fUtf16 ? looks_like_utf16(&blob, &lookFlags) :
2471 looks_like_utf8(&blob, &lookFlags);
2472 fossil_print("File \"%s\" has %d bytes.\n",g.argv[2],blob_size(&blob));
2473 fossil_print("Starts with UTF-8 BOM: %s\n",fUtf8?"yes":"no");
2474 fossil_print("Starts with UTF-16 BOM: %s\n",fUtf16?"yes":"no");
2475 fossil_print("Looks like UTF-%s: %s\n", fUtf16?"16":"8",eType?"yes":"no");
2476 fossil_print("Has flag LOOK_NUL: %s\n",(lookFlags&LOOK_NUL)?"yes":"no");
2477 fossil_print("Has flag LOOK_LF: %s\n",(lookFlags&LOOK_LF)?"yes":"no");
2478 fossil_print("Has flag LOOK_CRLF: %s\n",(lookFlags&LOOK_CRLF)?"yes":"no");
2479 fossil_print("Has flag LOOK_LENGTH: %s\n",(lookFlags&LOOK_LENGTH)?"yes":"no");
2480 blob_reset(&blob);
2481 }
2482

Keyboard Shortcuts

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