MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / URLDecode

Method URLDecode

common/FileSystem.cpp:893–934  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

891}
892
893std::string Path::URLDecode(std::string_view str)
894{
895 std::string ret;
896 ret.reserve(str.length());
897
898 for (size_t i = 0, l = str.size(); i < l; i++)
899 {
900 const char c = str[i];
901 if (c == '+')
902 {
903 ret.push_back(c);
904 }
905 else if (c == '%')
906 {
907 if ((i + 2) >= str.length())
908 break;
909
910 const char clower = str[i + 1];
911 const char cupper = str[i + 2];
912 const unsigned char lower =
913 (clower >= '0' && clower <= '9') ?
914 static_cast<unsigned char>(clower - '0') :
915 ((clower >= 'a' && clower <= 'f') ?
916 static_cast<unsigned char>(clower - 'a') :
917 ((clower >= 'A' && clower <= 'F') ? static_cast<unsigned char>(clower - 'A') : 0));
918 const unsigned char upper =
919 (cupper >= '0' && cupper <= '9') ?
920 static_cast<unsigned char>(cupper - '0') :
921 ((cupper >= 'a' && cupper <= 'f') ?
922 static_cast<unsigned char>(cupper - 'a') :
923 ((cupper >= 'A' && cupper <= 'F') ? static_cast<unsigned char>(cupper - 'A') : 0));
924 const char dch = static_cast<char>(lower | (upper << 4));
925 ret.push_back(dch);
926 }
927 else
928 {
929 ret.push_back(c);
930 }
931 }
932
933 return std::string(str);
934}
935
936std::string Path::CreateFileURL(std::string_view path)
937{

Callers

nothing calls this directly

Calls 5

stringClass · 0.50
reserveMethod · 0.45
lengthMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected