MCPcopy Create free account
hub / github.com/cuberite/cuberite / URLDecode

Function URLDecode

src/StringUtils.cpp:643–696  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

641
642
643AString URLDecode(const AString & a_String)
644{
645 AString res;
646 size_t len = a_String.length();
647 res.reserve(len);
648 for (size_t i = 0; i < len; i++)
649 {
650 char ch = a_String[i];
651 if ((ch != '%') || (i > len - 3))
652 {
653 res.push_back(ch);
654 continue;
655 }
656 // Decode the hex value:
657 char hi = a_String[i + 1], lo = a_String[i + 2];
658 if ((hi >= '0') && (hi <= '9'))
659 {
660 hi = hi - '0';
661 }
662 else if ((hi >= 'a') && (hi <= 'f'))
663 {
664 hi = hi - 'a' + 10;
665 }
666 else if ((hi >= 'A') && (hi <= 'F'))
667 {
668 hi = hi - 'F' + 10;
669 }
670 else
671 {
672 res.push_back(ch);
673 continue;
674 }
675 if ((lo >= '0') && (lo <= '9'))
676 {
677 lo = lo - '0';
678 }
679 else if ((lo >= 'a') && (lo <= 'f'))
680 {
681 lo = lo - 'a' + 10;
682 }
683 else if ((lo >= 'A') && (lo <= 'F'))
684 {
685 lo = lo - 'A' + 10;
686 }
687 else
688 {
689 res.push_back(ch);
690 continue;
691 }
692 res.push_back((hi << 4) | lo);
693 i += 2;
694 } // for i - a_String[]
695 return res;
696}
697
698
699

Callers 1

ParseFormUrlEncodedMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected