mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	Merge pull request #723 from lioncash/commonstr
string_util: Get rid of UriDecode/UriEncode
This commit is contained in:
		
						commit
						10ef39624a
					
				
					 2 changed files with 0 additions and 127 deletions
				
			
		|  | @ -287,131 +287,6 @@ std::string ReplaceAll(std::string result, const std::string& src, const std::st | ||||||
|     return result; |     return result; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // UriDecode and UriEncode are from http://www.codeguru.com/cpp/cpp/string/conversions/print.php/c12759
 |  | ||||||
| // by jinq0123 (November 2, 2006)
 |  | ||||||
| 
 |  | ||||||
| // Uri encode and decode.
 |  | ||||||
| // RFC1630, RFC1738, RFC2396
 |  | ||||||
| 
 |  | ||||||
| //#include <string>
 |  | ||||||
| //#include <assert.h>
 |  | ||||||
| 
 |  | ||||||
| const char HEX2DEC[256] = |  | ||||||
| { |  | ||||||
|     /*       0  1  2  3   4  5  6  7   8  9  A  B   C  D  E  F */ |  | ||||||
|     /* 0 */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, |  | ||||||
|     /* 1 */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, |  | ||||||
|     /* 2 */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, |  | ||||||
|     /* 3 */  0, 1, 2, 3,  4, 5, 6, 7,  8, 9,16,16, 16,16,16,16, |  | ||||||
| 
 |  | ||||||
|     /* 4 */ 16,10,11,12, 13,14,15,16, 16,16,16,16, 16,16,16,16, |  | ||||||
|     /* 5 */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, |  | ||||||
|     /* 6 */ 16,10,11,12, 13,14,15,16, 16,16,16,16, 16,16,16,16, |  | ||||||
|     /* 7 */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, |  | ||||||
| 
 |  | ||||||
|     /* 8 */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, |  | ||||||
|     /* 9 */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, |  | ||||||
|     /* A */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, |  | ||||||
|     /* B */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, |  | ||||||
| 
 |  | ||||||
|     /* C */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, |  | ||||||
|     /* D */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, |  | ||||||
|     /* E */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, |  | ||||||
|     /* F */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| std::string UriDecode(const std::string & sSrc) |  | ||||||
| { |  | ||||||
|     // Note from RFC1630:  "Sequences which start with a percent sign
 |  | ||||||
|     // but are not followed by two hexadecimal characters (0-9, A-F) are reserved
 |  | ||||||
|     // for future extension"
 |  | ||||||
| 
 |  | ||||||
|     const unsigned char * pSrc = (const unsigned char *)sSrc.c_str(); |  | ||||||
|     const size_t SRC_LEN = sSrc.length(); |  | ||||||
|     const unsigned char * const SRC_END = pSrc + SRC_LEN; |  | ||||||
|     const unsigned char * const SRC_LAST_DEC = SRC_END - 2;   // last decodable '%'
 |  | ||||||
| 
 |  | ||||||
|     char * const pStart = new char[SRC_LEN]; |  | ||||||
|     char * pEnd = pStart; |  | ||||||
| 
 |  | ||||||
|     while (pSrc < SRC_LAST_DEC) |  | ||||||
|     { |  | ||||||
|         if (*pSrc == '%') |  | ||||||
|         { |  | ||||||
|             char dec1, dec2; |  | ||||||
|             if (16 != (dec1 = HEX2DEC[*(pSrc + 1)]) |  | ||||||
|                 && 16 != (dec2 = HEX2DEC[*(pSrc + 2)])) |  | ||||||
|             { |  | ||||||
|                 *pEnd++ = (dec1 << 4) + dec2; |  | ||||||
|                 pSrc += 3; |  | ||||||
|                 continue; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         *pEnd++ = *pSrc++; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // the last 2- chars
 |  | ||||||
|     while (pSrc < SRC_END) |  | ||||||
|         *pEnd++ = *pSrc++; |  | ||||||
| 
 |  | ||||||
|     std::string sResult(pStart, pEnd); |  | ||||||
|     delete [] pStart; |  | ||||||
|     return sResult; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Only alphanum is safe.
 |  | ||||||
| const char SAFE[256] = |  | ||||||
| { |  | ||||||
|     /*      0 1 2 3  4 5 6 7  8 9 A B  C D E F */ |  | ||||||
|     /* 0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, |  | ||||||
|     /* 1 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, |  | ||||||
|     /* 2 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, |  | ||||||
|     /* 3 */ 1,1,1,1, 1,1,1,1, 1,1,0,0, 0,0,0,0, |  | ||||||
| 
 |  | ||||||
|     /* 4 */ 0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, |  | ||||||
|     /* 5 */ 1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,0, |  | ||||||
|     /* 6 */ 0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, |  | ||||||
|     /* 7 */ 1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,0, |  | ||||||
| 
 |  | ||||||
|     /* 8 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, |  | ||||||
|     /* 9 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, |  | ||||||
|     /* A */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, |  | ||||||
|     /* B */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, |  | ||||||
| 
 |  | ||||||
|     /* C */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, |  | ||||||
|     /* D */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, |  | ||||||
|     /* E */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, |  | ||||||
|     /* F */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| std::string UriEncode(const std::string & sSrc) |  | ||||||
| { |  | ||||||
|     const char DEC2HEX[16 + 1] = "0123456789ABCDEF"; |  | ||||||
|     const unsigned char * pSrc = (const unsigned char *)sSrc.c_str(); |  | ||||||
|     const size_t SRC_LEN = sSrc.length(); |  | ||||||
|     unsigned char * const pStart = new unsigned char[SRC_LEN * 3]; |  | ||||||
|     unsigned char * pEnd = pStart; |  | ||||||
|     const unsigned char * const SRC_END = pSrc + SRC_LEN; |  | ||||||
| 
 |  | ||||||
|     for (; pSrc < SRC_END; ++pSrc) |  | ||||||
|     { |  | ||||||
|         if (SAFE[*pSrc]) |  | ||||||
|             *pEnd++ = *pSrc; |  | ||||||
|         else |  | ||||||
|         { |  | ||||||
|             // escape this char
 |  | ||||||
|             *pEnd++ = '%'; |  | ||||||
|             *pEnd++ = DEC2HEX[*pSrc >> 4]; |  | ||||||
|             *pEnd++ = DEC2HEX[*pSrc & 0x0F]; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     std::string sResult((char *)pStart, (char *)pEnd); |  | ||||||
|     delete [] pStart; |  | ||||||
|     return sResult; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #ifdef _MSC_VER | #ifdef _MSC_VER | ||||||
| 
 | 
 | ||||||
| std::string UTF16ToUTF8(const std::u16string& input) | std::string UTF16ToUTF8(const std::u16string& input) | ||||||
|  |  | ||||||
|  | @ -86,8 +86,6 @@ bool SplitPath(const std::string& full_path, std::string* _pPath, std::string* _ | ||||||
| 
 | 
 | ||||||
| void BuildCompleteFilename(std::string& _CompleteFilename, const std::string& _Path, const std::string& _Filename); | void BuildCompleteFilename(std::string& _CompleteFilename, const std::string& _Path, const std::string& _Filename); | ||||||
| std::string ReplaceAll(std::string result, const std::string& src, const std::string& dest); | std::string ReplaceAll(std::string result, const std::string& src, const std::string& dest); | ||||||
| std::string UriDecode(const std::string & sSrc); |  | ||||||
| std::string UriEncode(const std::string & sSrc); |  | ||||||
| 
 | 
 | ||||||
| std::string UTF16ToUTF8(const std::u16string& input); | std::string UTF16ToUTF8(const std::u16string& input); | ||||||
| std::u16string UTF8ToUTF16(const std::string& input); | std::u16string UTF8ToUTF16(const std::string& input); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue