summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.c16
-rw-r--r--src/shortcut.c4
-rw-r--r--src/util.c8
3 files changed, 17 insertions, 11 deletions
diff --git a/src/main.c b/src/main.c
index 2d4d1a5..7a6bc79 100644
--- a/src/main.c
+++ b/src/main.c
@@ -131,19 +131,25 @@ struct neovimb vb;
gboolean vb_download_set_destination(Client *c, WebKitDownload *download,
char *suggested_filename, const char *path)
{
- char *download_path, *dir, *file, *uri, *basename = NULL,
- *decoded_uri = NULL;
- const char *download_uri;
+ char *download_path, *dir, *file, *uri, *basename = NULL;
+
download_path = GET_CHAR(c, "download-path");
if (!suggested_filename || !*suggested_filename) {
+ const char *download_uri;
+ GUri *parsed_uri = NULL;
+ char *decoded_uri;
+
/* Try to find a matching name if there is no suggested filename. */
download_uri = webkit_uri_request_get_uri(webkit_download_get_request(download));
- decoded_uri = soup_uri_decode(download_uri);
+ parsed_uri = g_uri_parse(download_uri, G_URI_FLAGS_NONE, NULL);
+ decoded_uri = g_uri_to_string(parsed_uri);
basename = g_filename_display_basename(decoded_uri);
- g_free(decoded_uri);
suggested_filename = basename;
+
+ g_uri_unref(parsed_uri);
+ g_free(decoded_uri);
}
/* Prepare the path to save the download. */
diff --git a/src/shortcut.c b/src/shortcut.c
index 0a74977..906d734 100644
--- a/src/shortcut.c
+++ b/src/shortcut.c
@@ -92,7 +92,7 @@ char *shortcut_get_uri(Shortcut *sc, const char *string)
max_num = get_max_placeholder(tmpl);
/* if there are only $0 placeholders we don't need to split the parameters */
if (max_num == 0) {
- quoted_param = soup_uri_encode(query, "&+");
+ quoted_param = g_uri_escape_string(query, NULL, TRUE);
uri = util_str_replace("$0", quoted_param, tmpl);
g_free(quoted_param);
@@ -149,7 +149,7 @@ char *shortcut_get_uri(Shortcut *sc, const char *string)
if (token->len) {
char *new;
- quoted_param = soup_uri_encode(token->str, "&+");
+ quoted_param = g_uri_escape_string(token->str, NULL, TRUE);
new = util_str_replace((char[]){'$', current_num + '0', '\0'}, quoted_param, uri);
g_free(quoted_param);
g_free(uri);
diff --git a/src/util.c b/src/util.c
index 2f07981..7553aab 100644
--- a/src/util.c
+++ b/src/util.c
@@ -819,9 +819,9 @@ char *util_sanitize_filename(char *filename)
*/
char *util_sanitize_uri(const char *uri_str)
{
- SoupURI *uri;
char *sanitized_uri;
char *for_display;
+ GUri *uri;
if (!uri_str) {
return NULL;
@@ -841,9 +841,9 @@ char *util_sanitize_uri(const char *uri_str)
return for_display;
}
- uri = soup_uri_new(for_display);
- sanitized_uri = soup_uri_to_string(uri, FALSE);
- soup_uri_free(uri);
+ uri = g_uri_parse(for_display, G_URI_FLAGS_NONE, NULL);
+ sanitized_uri = g_uri_to_string_partial(uri, G_URI_HIDE_PASSWORD);
+ g_uri_unref(uri);
g_free(for_display);
return sanitized_uri;