mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
cleanup for url_quote
This commit is contained in:
parent
4496febc73
commit
4d45de4f1b
@ -34,12 +34,11 @@ wstring_to_string(string &result, const wstring &source) {
|
|||||||
int size = WideCharToMultiByte(CP_UTF8, 0, source.data(), source.length(),
|
int size = WideCharToMultiByte(CP_UTF8, 0, source.data(), source.length(),
|
||||||
NULL, 0, NULL, NULL);
|
NULL, 0, NULL, NULL);
|
||||||
if (size > 0) {
|
if (size > 0) {
|
||||||
char *buffer = new char[size + 1];
|
char *buffer = new char[size];
|
||||||
int rc = WideCharToMultiByte(CP_UTF8, 0, source.data(), source.length(),
|
int rc = WideCharToMultiByte(CP_UTF8, 0, source.data(), source.length(),
|
||||||
buffer, size, NULL, NULL);
|
buffer, size, NULL, NULL);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
buffer[size] = 0;
|
result.assign(buffer, size);
|
||||||
result = buffer;
|
|
||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
delete[] buffer;
|
delete[] buffer;
|
||||||
@ -60,12 +59,11 @@ string_to_wstring(wstring &result, const string &source) {
|
|||||||
int size = MultiByteToWideChar(CP_UTF8, 0, source.data(), source.length(),
|
int size = MultiByteToWideChar(CP_UTF8, 0, source.data(), source.length(),
|
||||||
NULL, 0);
|
NULL, 0);
|
||||||
if (size > 0) {
|
if (size > 0) {
|
||||||
wchar_t *buffer = new wchar_t[size + 1];
|
wchar_t *buffer = new wchar_t[size];
|
||||||
int rc = MultiByteToWideChar(CP_UTF8, 0, source.data(), source.length(),
|
int rc = MultiByteToWideChar(CP_UTF8, 0, source.data(), source.length(),
|
||||||
buffer, size);
|
buffer, size);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
buffer[size] = 0;
|
result.assign(buffer, size);
|
||||||
result = buffer;
|
|
||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
delete[] buffer;
|
delete[] buffer;
|
||||||
@ -104,9 +102,17 @@ url_quote(string &result, const string &source) {
|
|||||||
strm << hex << setfill('0');
|
strm << hex << setfill('0');
|
||||||
for (size_t p = 0; p < source.length(); ++p) {
|
for (size_t p = 0; p < source.length(); ++p) {
|
||||||
if (source[p] < 0x20 || source[p] >= 0x7f) {
|
if (source[p] < 0x20 || source[p] >= 0x7f) {
|
||||||
strm << "%" << setw(2) << (unsigned int)source[p];
|
strm << "%" << setw(2) << (unsigned int)(unsigned char)source[p];
|
||||||
} else {
|
} else {
|
||||||
switch (source[p]) {
|
switch (source[p]) {
|
||||||
|
// We could quote all of these punctuation marks too, the same
|
||||||
|
// way actual URL quoting does. Maybe we will one day in the
|
||||||
|
// future, though I don't think it matters much; mainly we're
|
||||||
|
// relying on quoting to protect the high-bit characters. For
|
||||||
|
// now, then, we leave these unquoted, for compatibility with
|
||||||
|
// the p3dpython from Panda3D 1.7, which didn't expect any
|
||||||
|
// quoting at all.
|
||||||
|
/*
|
||||||
case ' ':
|
case ' ':
|
||||||
case '<':
|
case '<':
|
||||||
case '>':
|
case '>':
|
||||||
@ -128,8 +134,9 @@ url_quote(string &result, const string &source) {
|
|||||||
case '=':
|
case '=':
|
||||||
case '&':
|
case '&':
|
||||||
case '$':
|
case '$':
|
||||||
strm << "%" << setw(2) << (unsigned int)source[p];
|
strm << "%" << setw(2) << (unsigned int)(unsigned char)source[p];
|
||||||
break;
|
break;
|
||||||
|
*/
|
||||||
|
|
||||||
default:
|
default:
|
||||||
strm << (char)source[p];
|
strm << (char)source[p];
|
||||||
@ -166,9 +173,9 @@ url_unquote(string &result, const string &source) {
|
|||||||
}
|
}
|
||||||
++p;
|
++p;
|
||||||
}
|
}
|
||||||
result += (char)ch;
|
result.push_back((char)ch);
|
||||||
} else {
|
} else {
|
||||||
result += source[p];
|
result.push_back(source[p]);
|
||||||
++p;
|
++p;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,8 +38,8 @@ inline ostream &operator << (ostream &out, const wstring &str) {
|
|||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
|
|
||||||
// Some handy functions for applying and removing URL escape codes,
|
// Some handy functions for applying and removing URL escape codes,
|
||||||
// which are used to pass parameters safely to p3dCert on the command
|
// which are used to pass parameters safely to p3dCert and p3dpython
|
||||||
// line.
|
// on the command line.
|
||||||
void url_quote(string &result, const string &source);
|
void url_quote(string &result, const string &source);
|
||||||
void url_unquote(string &result, const string &source);
|
void url_unquote(string &result, const string &source);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user