diff options
Diffstat (limited to 'src/util/UriUtil.cxx')
-rw-r--r-- | src/util/UriUtil.cxx | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/util/UriUtil.cxx b/src/util/UriUtil.cxx index 3f5ae3118..44b3e53ab 100644 --- a/src/util/UriUtil.cxx +++ b/src/util/UriUtil.cxx @@ -104,18 +104,27 @@ uri_safe_local(const char *uri) } } -std::string -uri_remove_auth(const char *uri) +gcc_pure +static const char * +SkipUriScheme(const char *uri) { - const char *auth; if (memcmp(uri, "http://", 7) == 0) - auth = uri + 7; + return uri + 7; else if (memcmp(uri, "https://", 8) == 0) - auth = uri + 8; + return uri + 8; else if (memcmp(uri, "ftp://", 6) == 0) - auth = uri + 6; + return uri + 6; else /* unrecognized URI */ + return nullptr; +} + +std::string +uri_remove_auth(const char *uri) +{ + const char *auth = SkipUriScheme(uri); + if (auth == nullptr) + /* unrecognized URI */ return std::string(); const char *slash = strchr(auth, '/'); |