Scripts/split-url.awk: Split query strings too

Also reset state on function entry otherwise split_url() cannot
really be called multiple times since there would be garbage values
in the url array from previous calls.
This commit is contained in:
Tobias Kortkamp 2021-09-07 22:12:43 +02:00
parent 7e42f13ff3
commit 217c3e9d72
No known key found for this signature in database
GPG key ID: A4F09FB73CC51F61

View file

@ -1,4 +1,5 @@
function split_url(s, url_scheme, url_fragment, url_query, url_authority, url_auth, url_user, url_host) {
function split_url(s, url_scheme, url_fragment, url_query, url_query_parts, i, url_query_part, url_authority, url_auth, url_user, url_host) {
delete url
# scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
split(s, url_scheme, "://")
url["scheme"] = url_scheme[1]
@ -7,7 +8,15 @@ function split_url(s, url_scheme, url_fragment, url_query, url_authority, url_au
url["fragment"] = url_fragment[2]
split(url_fragment[1], url_query, "?")
url["query"] = url_query[2]
split(url_query[2], url_query_parts, "&")
# url["query"] list of query keys (space separated)
# url["query", key] value
for (i = 1; i <= length(url_query_parts); i++) {
split(url_query_parts[i], url_query_part, "=")
url["query"] = url["query"] " " url_query_part[1]
url["query", url_query_part[1]] = url_query_part[2]
}
split(url_query[1], url_authority, "/")
url["path"] = substr(url_query[1], length(url_authority[1]) + 1)