Fossil SCM
Add the test-looks-like-utf test command to help test the looks_like_utf*() and related functions.
Commit
08b96cedee3734bc9b5405972791b1b59fe80356
Parent
af0ca3b4eb272bb…
1 file changed
+31
+31
| --- src/diff.c | ||
| +++ src/diff.c | ||
| @@ -2446,5 +2446,36 @@ | ||
| 2446 | 2446 | for(i=0; i<ann.nOrig; i++){ |
| 2447 | 2447 | fossil_print("%s: %.*s\n", |
| 2448 | 2448 | ann.aOrig[i].zSrc, ann.aOrig[i].n, ann.aOrig[i].z); |
| 2449 | 2449 | } |
| 2450 | 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 | +} | |
| 2451 | 2482 |
| --- 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 |