@@ -487,43 +487,50 @@
487 487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * Does not contain any path element named "." or ".."
488 488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * Does not contain any of these characters in the path: "\"
489 489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * Does not end with "/".
490 490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * Does not contain two or more "/" characters in a row.
491 491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * Contains at least one character
492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Invalid UTF8 characters result in a false return if bStrictUtf8 is
494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** true. If bStrictUtf8 is false, invalid UTF8 characters are silently
495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** ignored.
492 496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int file_is_simple_pathname(const char *z){
497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int file_is_simple_pathname(const char *z, int bStrictUtf8){
494 498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
495 499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char c = z[0];
500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char maskNonAscii = bStrictUtf8 ? 0x80 : 0x00;
496 501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='/' || c==0 ) return 0;
497 502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='.' ){
498 503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z[1]=='/' || z[1]==0 ) return 0;
499 504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z[1]=='.' && (z[2]=='/' || z[2]==0) ) return 0;
500 505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
501 506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; (c=z[i])!=0; i++){
502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (c & 0xf0) == 0xf0 ) {
503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Unicode characters > U+FFFF are not supported.
504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- * Windows XP and earlier cannot handle them.
505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (c & 0xf0) == 0xe0 ) {
509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* This is a 3-byte UTF-8 character */
510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if ( (c & 0xfe) == 0xee ){
511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Range U+E000 - U+FFFF (Starting with 0xee or 0xef in UTF-8 ) */
512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if ( (c & 1) && ((z[i+1] & 0xff) >= 0xa4) ){
513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* But exclude U+F900 - U+FFFF (0xef followed by byte >= 0xa4),
514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- * which contain valid characters. */
515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- continue;
516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Unicode character in the range U+E000 - U+F8FF are for
518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- * private use, they shouldn't occur in filenames. */
519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( ((c & 0xff) == 0xed) && ((z[i+1] & 0xe0) == 0xa0) ){
522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Unicode character in the range U+D800 - U+DFFF are for
523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- * surrogate pairs, they shouldn't occur in filenames. */
524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c & maskNonAscii ){
508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (c & 0xf0) == 0xf0 ) {
509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Unicode characters > U+FFFF are not supported.
510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ * Windows XP and earlier cannot handle them.
511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (c & 0xf0) == 0xe0 ) {
515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* This is a 3-byte UTF-8 character */
516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if ( (c & 0xfe) == 0xee ){
517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Range U+E000 - U+FFFF (Starting with 0xee or 0xef in UTF-8 ) */
518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if ( (c & 1) && ((z[i+1] & 0xff) >= 0xa4) ){
519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* But exclude U+F900 - U+FFFF (0xef followed by byte >= 0xa4),
520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ * which contain valid characters. */
521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Unicode character in the range U+E000 - U+F8FF are for
524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ * private use, they shouldn't occur in filenames. */
525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ((c & 0xff) == 0xed) && ((z[i+1] & 0xe0) == 0xa0) ){
528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Unicode character in the range U+D800 - U+DFFF are for
529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ * surrogate pairs, they shouldn't occur in filenames. */
530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
525 532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
526 533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
527 534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='\\' ){
528 535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 0;
529 536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
530 537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!