@@ -340,72 +340,27 @@
340 340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pnByte ) *pnByte = 3;
341 341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return bom;
342 342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
343 343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
344 344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function returns non-zero if the blob starts with a UTF-8
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** byte-order-mark (BOM).
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** This function returns detected BOM size if the blob starts with
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** a UTF-8, UTF-16le or UTF-16be byte-order-mark (BOM).
347 347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int starts_with_utf8_bom(const Blob *pContent, int *pnByte){
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int starts_with_bom(const Blob *pContent){
349 349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z = blob_buffer(pContent);
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int bomSize = 0;
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int c1, bomSize = 0;
351 351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const unsigned char *bom = get_utf8_bom(&bomSize);
352 352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pnByte ) *pnByte = bomSize;
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( blob_size(pContent)<bomSize ) return 0;
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return memcmp(z, bom, bomSize)==0;
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function returns non-zero if the blob starts with a UTF-16le or
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** UTF-16be byte-order-mark (BOM).
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int starts_with_utf16_bom(const Blob *pContent, int *pnByte){
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *z = blob_buffer(pContent);
364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int c1, c2;
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pnByte ) *pnByte = 2;
367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( blob_size(pContent)<2 ) return 0;
368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c1 = z[0]; c2 = z[1];
369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (c1==(char)0xff) && (c2==(char)0xfe) ){
370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 1;
371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( (c1==(char)0xfe) && (c2==(char)0xff) ){
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 1;
373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function returns non-zero if the blob starts with a UTF-16le
379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** byte-order-mark (BOM).
380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int starts_with_utf16le_bom(const Blob *pContent, int *pnByte){
382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *z = blob_buffer(pContent);
383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int c1, c2;
384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pnByte ) *pnByte = 2;
386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( blob_size(pContent)<2 ) return 0;
387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c1 = z[0]; c2 = z[1];
388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (c1==(char)0xff) && (c2==(char)0xfe) ){
389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 1;
390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** This function returns non-zero if the blob starts with a UTF-16be
396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** byte-order-mark (BOM).
397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int starts_with_utf16be_bom(const Blob *pContent, int *pnByte){
399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *z = blob_buffer(pContent);
400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int c1, c2;
401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( pnByte ) *pnByte = 2;
403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( blob_size(pContent)<2 ) return 0;
404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- c1 = z[0]; c2 = z[1];
405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (c1==(char)0xfe) && (c2==(char)0xff) ){
406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 1;
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (blob_size(pContent)>=bomSize)
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (memcmp(z, bom, bomSize)==0) ){
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return bomSize;
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Only accept UTF-16 BOM if the blob has an even number of bytes */
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (blob_size(pContent)<2) || (blob_size(pContent)&1) ) return 0;
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ c1 = *((unsigned short *)z);
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (c1==0xfffe) || (c1==0xfeff) ){
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 2;
407 362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
408 363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
409 364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
410 365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
411 366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
412 367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!