From 8864cc5aee3b134b0ffc5f53c1593645f4109f8c Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Sat, 12 Dec 2020 12:39:21 +0200 Subject: Added option to show URL paths as encoded or decoded IssueID #73 --- src/gmutil.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/gmutil.c') diff --git a/src/gmutil.c b/src/gmutil.c index 68525be9..afca4978 100644 --- a/src/gmutil.c +++ b/src/gmutil.c @@ -151,6 +151,42 @@ static iString *punyDecodeHost_(iRangecc host) { return result; } +void urlDecodePath_String(iString *d) { + iUrl url; + init_Url(&url, d); + if (isEmpty_Range(&url.path)) { + return; + } + iString *decoded = new_String(); + appendRange_String(decoded, (iRangecc){ constBegin_String(d), url.path.start }); + iString *path = newRange_String(url.path); + iString *decPath = urlDecode_String(path); + append_String(decoded, decPath); + delete_String(decPath); + delete_String(path); + appendRange_String(decoded, (iRangecc){ url.path.end, constEnd_String(d) }); + set_String(d, decoded); + delete_String(decoded); +} + +void urlEncodePath_String(iString *d) { + iUrl url; + init_Url(&url, d); + if (isEmpty_Range(&url.path)) { + return; + } + iString *encoded = new_String(); + appendRange_String(encoded , (iRangecc){ constBegin_String(d), url.path.start }); + iString *path = newRange_String(url.path); + iString *encPath = urlEncodeExclude_String(path, "%/ "); + append_String(encoded, encPath); + delete_String(encPath); + delete_String(path); + appendRange_String(encoded, (iRangecc){ url.path.end, constEnd_String(d) }); + set_String(d, encoded); + delete_String(encoded); +} + const iString *absoluteUrl_String(const iString *d, const iString *urlMaybeRelative) { iUrl orig; iUrl rel; -- cgit v1.2.3