diff options
Diffstat (limited to 'lldb/source/Utility/UriParser.cpp')
-rw-r--r-- | lldb/source/Utility/UriParser.cpp | 111 |
1 files changed, 51 insertions, 60 deletions
diff --git a/lldb/source/Utility/UriParser.cpp b/lldb/source/Utility/UriParser.cpp index 77e16b02aae..6a1f0303b97 100644 --- a/lldb/source/Utility/UriParser.cpp +++ b/lldb/source/Utility/UriParser.cpp @@ -23,72 +23,63 @@ using namespace lldb_private; //---------------------------------------------------------------------- // UriParser::Parse //---------------------------------------------------------------------- -bool -UriParser::Parse(const std::string& uri, - std::string& scheme, - std::string& hostname, - int& port, - std::string& path) -{ - std::string tmp_scheme, tmp_hostname, tmp_port, tmp_path; +bool UriParser::Parse(const std::string &uri, std::string &scheme, + std::string &hostname, int &port, std::string &path) { + std::string tmp_scheme, tmp_hostname, tmp_port, tmp_path; - static const char* kSchemeSep = "://"; - auto pos = uri.find(kSchemeSep); - if (pos == std::string::npos) - return false; + static const char *kSchemeSep = "://"; + auto pos = uri.find(kSchemeSep); + if (pos == std::string::npos) + return false; - // Extract path. - tmp_scheme = uri.substr(0, pos); - auto host_pos = pos + strlen(kSchemeSep); - auto path_pos = uri.find('/', host_pos); - if (path_pos != std::string::npos) - tmp_path = uri.substr(path_pos); - else - tmp_path = "/"; + // Extract path. + tmp_scheme = uri.substr(0, pos); + auto host_pos = pos + strlen(kSchemeSep); + auto path_pos = uri.find('/', host_pos); + if (path_pos != std::string::npos) + tmp_path = uri.substr(path_pos); + else + tmp_path = "/"; - auto host_port = uri.substr( - host_pos, ((path_pos != std::string::npos) ? path_pos : uri.size()) - host_pos); + auto host_port = uri.substr( + host_pos, + ((path_pos != std::string::npos) ? path_pos : uri.size()) - host_pos); - // Extract hostname - if (host_port[0] == '[') - { - // hostname is enclosed with square brackets. - pos = host_port.find(']'); - if (pos == std::string::npos) - return false; + // Extract hostname + if (host_port[0] == '[') { + // hostname is enclosed with square brackets. + pos = host_port.find(']'); + if (pos == std::string::npos) + return false; - tmp_hostname = host_port.substr(1, pos - 1); - host_port.erase(0, pos + 1); - } - else - { - pos = host_port.find(':'); - tmp_hostname = host_port.substr(0, (pos != std::string::npos) ? pos : host_port.size()); - host_port.erase(0, (pos != std::string::npos) ? pos : host_port.size()); - } + tmp_hostname = host_port.substr(1, pos - 1); + host_port.erase(0, pos + 1); + } else { + pos = host_port.find(':'); + tmp_hostname = host_port.substr( + 0, (pos != std::string::npos) ? pos : host_port.size()); + host_port.erase(0, (pos != std::string::npos) ? pos : host_port.size()); + } - // Extract port - tmp_port = host_port; - if (!tmp_port.empty()) - { - if (tmp_port[0] != ':') - return false; - tmp_port = tmp_port.substr(1); - bool success = false; - auto port_tmp = StringConvert::ToUInt32(tmp_port.c_str(), UINT32_MAX, 10, &success); - if (!success || port_tmp > 65535) - { - // there are invalid characters in port_buf - return false; - } - port = port_tmp; + // Extract port + tmp_port = host_port; + if (!tmp_port.empty()) { + if (tmp_port[0] != ':') + return false; + tmp_port = tmp_port.substr(1); + bool success = false; + auto port_tmp = + StringConvert::ToUInt32(tmp_port.c_str(), UINT32_MAX, 10, &success); + if (!success || port_tmp > 65535) { + // there are invalid characters in port_buf + return false; } - else - port = -1; + port = port_tmp; + } else + port = -1; - scheme = tmp_scheme; - hostname = tmp_hostname; - path = tmp_path; - return true; + scheme = tmp_scheme; + hostname = tmp_hostname; + path = tmp_path; + return true; } - |