equal
deleted
inserted
replaced
435 } |
435 } |
436 return false; |
436 return false; |
437 } |
437 } |
438 |
438 |
439 // scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) |
439 // scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) |
440 static void QT_FASTCALL _scheme(const char **ptr, QUrlParseData *parseData) |
440 static bool QT_FASTCALL _scheme(const char **ptr, QUrlParseData *parseData) |
441 { |
441 { |
442 bool first = true; |
442 bool first = true; |
|
443 bool isSchemeValid = true; |
443 |
444 |
444 parseData->scheme = *ptr; |
445 parseData->scheme = *ptr; |
445 for (;;) { |
446 for (;;) { |
446 char ch = **ptr; |
447 char ch = **ptr; |
447 if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) { |
448 if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) { |
448 ; |
449 ; |
449 } else if (!first && ((ch >= '0' && ch <= '9') || ch == '+' || ch == '-' || ch == '.')) { |
450 } else if ((ch >= '0' && ch <= '9') || ch == '+' || ch == '-' || ch == '.') { |
450 ; |
451 if (first) |
|
452 isSchemeValid = false; |
451 } else { |
453 } else { |
452 break; |
454 break; |
453 } |
455 } |
454 |
456 |
455 ++(*ptr); |
457 ++(*ptr); |
456 first = false; |
458 first = false; |
457 } |
459 } |
458 |
460 |
459 if (**ptr != ':') { |
461 if (**ptr != ':') { |
|
462 isSchemeValid = true; |
460 *ptr = parseData->scheme; |
463 *ptr = parseData->scheme; |
461 } else { |
464 } else { |
462 parseData->schemeLength = *ptr - parseData->scheme; |
465 parseData->schemeLength = *ptr - parseData->scheme; |
463 ++(*ptr); // skip ':' |
466 ++(*ptr); // skip ':' |
464 } |
467 } |
|
468 |
|
469 return isSchemeValid; |
465 } |
470 } |
466 |
471 |
467 // IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) |
472 // IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) |
468 static bool QT_FASTCALL _IPvFuture(const char **ptr) |
473 static bool QT_FASTCALL _IPvFuture(const char **ptr) |
469 { |
474 { |
3741 #if defined (QURL_DEBUG) |
3746 #if defined (QURL_DEBUG) |
3742 qDebug("QUrlPrivate::parse(), parsing \"%s\"", pptr); |
3747 qDebug("QUrlPrivate::parse(), parsing \"%s\"", pptr); |
3743 #endif |
3748 #endif |
3744 |
3749 |
3745 // optional scheme |
3750 // optional scheme |
3746 _scheme(ptr, &parseData); |
3751 bool isSchemeValid = _scheme(ptr, &parseData); |
|
3752 |
|
3753 if (isSchemeValid == false) { |
|
3754 that->isValid = false; |
|
3755 char ch = *((*ptr)++); |
|
3756 that->errorInfo.setParams(*ptr, QT_TRANSLATE_NOOP(QUrl, "unexpected URL scheme"), |
|
3757 0, ch); |
|
3758 QURL_SETFLAG(that->stateFlags, Validated | Parsed); |
|
3759 #if defined (QURL_DEBUG) |
|
3760 qDebug("QUrlPrivate::parse(), unrecognized: %c%s", ch, *ptr); |
|
3761 #endif |
|
3762 return; |
|
3763 } |
3747 |
3764 |
3748 // hierpart |
3765 // hierpart |
3749 _hierPart(ptr, &parseData); |
3766 _hierPart(ptr, &parseData); |
3750 |
3767 |
3751 // optional query |
3768 // optional query |