Changeset View
Changeset View
Standalone View
Standalone View
src/utilstrencodings.cpp
Show First 20 Lines • Show All 78 Lines • ▼ Show 20 Lines | std::vector<uint8_t> ParseHex(const char *psz) { | ||||
} | } | ||||
return vch; | return vch; | ||||
} | } | ||||
std::vector<uint8_t> ParseHex(const std::string &str) { | std::vector<uint8_t> ParseHex(const std::string &str) { | ||||
return ParseHex(str.c_str()); | return ParseHex(str.c_str()); | ||||
} | } | ||||
void SplitHostPort(std::string in, int &portOut, std::string &hostOut) { | |||||
size_t colon = in.find_last_of(':'); | |||||
// if a : is found, and it either follows a [...], or no other : is in the | |||||
// string, treat it as port separator | |||||
bool fHaveColon = colon != in.npos; | |||||
bool fBracketed = | |||||
fHaveColon && | |||||
(in[0] == '[' && in[colon - 1] == ']'); // if there is a colon, and | |||||
// in[0]=='[', colon is not 0, | |||||
// so in[colon-1] is safe | |||||
bool fMultiColon = | |||||
fHaveColon && (in.find_last_of(':', colon - 1) != in.npos); | |||||
if (fHaveColon && (colon == 0 || fBracketed || !fMultiColon)) { | |||||
int32_t n; | |||||
if (ParseInt32(in.substr(colon + 1), &n) && n > 0 && n < 0x10000) { | |||||
in = in.substr(0, colon); | |||||
portOut = n; | |||||
} | |||||
} | |||||
if (in.size() > 0 && in[0] == '[' && in[in.size() - 1] == ']') { | |||||
hostOut = in.substr(1, in.size() - 2); | |||||
} else { | |||||
hostOut = in; | |||||
} | |||||
} | |||||
std::string EncodeBase64(const uint8_t *pch, size_t len) { | std::string EncodeBase64(const uint8_t *pch, size_t len) { | ||||
static const char *pbase64 = | static const char *pbase64 = | ||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; | ||||
std::string strRet = ""; | std::string strRet = ""; | ||||
strRet.reserve((len + 2) / 3 * 4); | strRet.reserve((len + 2) / 3 * 4); | ||||
int mode = 0, left = 0; | int mode = 0, left = 0; | ||||
▲ Show 20 Lines • Show All 603 Lines • Show Last 20 Lines |