summaryrefslogtreecommitdiffstats
path: root/main/xfce4-terminal/Improve-URL-matching.patch
blob: 619fb2df8e4df2bc34d8938f762d85bca56353b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
From 52fcc3e27927e7f730b836c9a9cc90791b792b8c Mon Sep 17 00:00:00 2001
From: Jeff Shipley <jshipley@fastmail.fm>
Date: Tue, 23 Jul 2013 13:20:42 -0600
Subject: [PATCH] Improve URL matching

- Add support for matching IPv6 addresses
- Fix URL parsing (bug #7959 and bug #9800)
- Add some characters for email address parsing
---
 terminal/terminal-widget.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/terminal/terminal-widget.c b/terminal/terminal-widget.c
index d490994..5a7d266 100644
--- a/terminal/terminal-widget.c
+++ b/terminal/terminal-widget.c
@@ -40,17 +40,19 @@
 
 
 
-#define USERCHARS       "-_+[:alnum:]"
+#define USERCHARS       "-[:alnum:]\\Q_.+\\E"
 #define USERCHARS_CLASS "[" USERCHARS "]"
 #define PASSCHARS_CLASS "[-[:alnum:]\\Q,?;.:/!%$^*&~\"#'\\E]"
 #define HOSTCHARS_CLASS "[-[:alnum:]]"
-#define HOST            HOSTCHARS_CLASS "+(\\." HOSTCHARS_CLASS "+)*"
+#define HOSTNAME        HOSTCHARS_CLASS "+(?:\\." HOSTCHARS_CLASS "+)*"
+#define IPV6ADDRESS     "\\[(?:[[:xdigit:]]{0,4}:){2,7}[[:xdigit:]]{0,4}\\]"
+#define HOST            "(?:" HOSTNAME "|" IPV6ADDRESS ")"
 #define PORT            "(?:\\:[[:digit:]]{1,5})?"
 #define PATHCHARS_CLASS "[-[:alnum:]\\Q_$.+!*,;@&=?/:~#'%\\E]"
-#define PATHTERM_CLASS  "[^\\Q]'.}>) \t\r\n,\"\\E]"
+#define PATHTERM_CLASS  "[[:alnum:]\\Q_$+*@&=/~#%\\E]"
 #define SCHEME          "(?:news:|telnet:|nntp:|file:\\/|https?:|ftps?:|sftp:|webcal:|magnet:)"
 #define USERPASS        USERCHARS_CLASS "+(?:" PASSCHARS_CLASS "+)?"
-#define URLPATH         "(?:(/"PATHCHARS_CLASS"+(?:[(]"PATHCHARS_CLASS"*[)])*"PATHCHARS_CLASS"*)*"PATHTERM_CLASS")?"
+#define URLPATH         "(?:(?:\\(" PATHCHARS_CLASS "*\\)|" PATHCHARS_CLASS ")*(?:\\(" PATHCHARS_CLASS "*\\)|" PATHTERM_CLASS "))?"
 
 
 
@@ -78,7 +80,7 @@ TerminalRegexPattern;
 static const TerminalRegexPattern regex_patterns[] =
 {
   { SCHEME "//(?:" USERPASS "\\@)?" HOST PORT URLPATH, PATTERN_TYPE_FULL_HTTP },
-  { "(?:www|ftp)" HOSTCHARS_CLASS "*\\." HOST PORT URLPATH, PATTERN_TYPE_HTTP },
+  { "(?:www[[:digit:]]{0,3}|ftp)" HOSTCHARS_CLASS "*\\." HOST PORT URLPATH, PATTERN_TYPE_HTTP },
   { "(?:mailto:)?" USERCHARS_CLASS "[" USERCHARS ".]*\\@" HOSTCHARS_CLASS "+\\." HOST, PATTERN_TYPE_EMAIL },
   { "news:[[:alnum:]\\Q^_{|}~!\"#$%&'()*+,./;:=?`\\E]+", PATTERN_TYPE_FULL_HTTP }
 };
-- 
1.8.1.2