mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
url-mode: don't strip the file:// prefix from localhost URIs
Before this patch, the file://<host> prefix was stripped from URIs, when the hostname matched the current host (that is, for "local" URLs). Unfortunately, the way this was done caused other parts of the URI to be stripped as well. For example, the 'query' and 'fragment' parts. This patch simply removes all special casing of file:// URIs. Since the URL is passed to a generic opener (i.e. we don't have a special opener application for file:// URIs), the opener helper must handle the file:// prefix anyway. Closes #1474
This commit is contained in:
parent
b2963bbf80
commit
54722369d8
2 changed files with 5 additions and 31 deletions
33
url-mode.c
33
url-mode.c
|
|
@ -128,46 +128,17 @@ static void
|
|||
activate_url(struct seat *seat, struct terminal *term, const struct url *url,
|
||||
uint32_t serial)
|
||||
{
|
||||
char *url_string = NULL;
|
||||
|
||||
char *scheme, *host, *path;
|
||||
if (uri_parse(url->url, strlen(url->url), &scheme, NULL, NULL,
|
||||
&host, NULL, &path, NULL, NULL))
|
||||
{
|
||||
if (strcmp(scheme, "file") == 0 && hostname_is_localhost(host)) {
|
||||
/*
|
||||
* This is a file in *this* computer. Pass only the
|
||||
* filename to the URL-launcher.
|
||||
*
|
||||
* I.e. strip the ‘file://user@host/’ prefix.
|
||||
*/
|
||||
url_string = path;
|
||||
} else
|
||||
free(path);
|
||||
|
||||
free(scheme);
|
||||
free(host);
|
||||
}
|
||||
|
||||
if (url_string == NULL)
|
||||
url_string = xstrdup(url->url);
|
||||
|
||||
switch (url->action) {
|
||||
case URL_ACTION_COPY:
|
||||
if (text_to_clipboard(seat, term, url_string, seat->kbd.serial)) {
|
||||
/* Now owned by our clipboard “manager” */
|
||||
url_string = NULL;
|
||||
}
|
||||
text_to_clipboard(seat, term, xstrdup(url->url), seat->kbd.serial);
|
||||
break;
|
||||
|
||||
case URL_ACTION_LAUNCH:
|
||||
case URL_ACTION_PERSISTENT: {
|
||||
spawn_url_launcher(seat, term, url_string, serial);
|
||||
spawn_url_launcher(seat, term, url->url, serial);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
free(url_string);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue