MCPcopy Create free account
hub / github.com/defold/defold / ParseURL

Function ParseURL

engine/dlib/src/dlib/message.cpp:631–703  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

629 }
630
631 Result ParseURL(const char* uri, StringURL* out_url)
632 {
633 if (uri == 0x0)
634 {
635 *out_url = StringURL();
636 return RESULT_OK;
637 }
638 const char* socket = 0x0;
639 uint32_t socket_size = 0;
640 const char* path = uri;
641 uint32_t path_size = 0;
642 const char* fragment = 0x0;
643 uint32_t fragment_size = 0;
644
645 const char* socket_end = 0;
646 const char* fragment_start = 0;
647 const char* scan = uri;
648 while (*scan)
649 {
650 switch(*scan)
651 {
652 case ':':
653 if (socket_end != 0)
654 {
655 return RESULT_MALFORMED_URL;
656 }
657 if (fragment_start != 0)
658 {
659 return RESULT_MALFORMED_URL;
660 }
661 socket_end = scan;
662 break;
663 case '#':
664 if (fragment_start != 0)
665 {
666 return RESULT_MALFORMED_URL;
667 }
668 fragment_start = scan;
669 break;
670 }
671 ++scan;
672 };
673
674 if (socket_end != 0x0)
675 {
676 socket_size = socket_end - uri;
677 if (socket_size >= 64)
678 {
679 return RESULT_MALFORMED_URL;
680 }
681 socket = uri;
682 path = socket_end + 1;
683 }
684
685 uint32_t uri_length = (uint32_t)(scan - uri);
686 if (fragment_start != 0x0)
687 {
688 fragment = fragment_start + 1;

Callers 3

ResolveURLFunction · 0.85
TEST_FFunction · 0.85
TESTFunction · 0.85

Calls 1

StringURLClass · 0.85

Tested by 2

TEST_FFunction · 0.68
TESTFunction · 0.68