diff options
author | George Stark <[email protected]> | 2023-03-12 12:30:49 +0300 |
---|---|---|
committer | raveit65 <[email protected]> | 2023-08-31 14:25:41 +0200 |
commit | eed62e83c1cecaa32af2864dd413b9df5c178174 (patch) | |
tree | 17b6fb2be46429096531a3c029e00b4d122641bf | |
parent | 649935a610d4f97ad99f98fed2facffdd5be5265 (diff) | |
download | mate-terminal-eed62e83c1cecaa32af2864dd413b9df5c178174.tar.bz2 mate-terminal-eed62e83c1cecaa32af2864dd413b9df5c178174.tar.xz |
Support IDN in mailto scheme in hyperlink tooltips
in mailto scheme IDN coding may apply only to domain part
local part if not in ASCII must be unicode
-rw-r--r-- | src/terminal-util.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/terminal-util.c b/src/terminal-util.c index d0f1864..3e32a69 100644 --- a/src/terminal-util.c +++ b/src/terminal-util.c @@ -754,6 +754,25 @@ char *terminal_util_hyperlink_uri_label (const char *uri) } g_free(unidn); } + if (g_ascii_strncasecmp(unesc, "mailto:", 7) == 0) + { + const char *hostname = strchr(unesc, '@'); + if (hostname != NULL) + { + const char *unidn = g_hostname_to_unicode(++hostname); + replace_hostname = unidn != NULL && g_ascii_strcasecmp(unidn, hostname) != 0; + if (replace_hostname) + { + char *new_unesc = g_strdup_printf("%.*s%s", + (int) (hostname - unesc), + unesc, + unidn); + g_free(unesc); + unesc = new_unesc; + } + g_free(unidn); + } + } return unesc; } |