ports/118456: [Patch] x11/roxterm doesn't match URLs properly
Nikos Ntarmos
ntarmos at ceid.upatras.gr
Thu Dec 6 01:00:05 UTC 2007
>Number: 118456
>Category: ports
>Synopsis: [Patch] x11/roxterm doesn't match URLs properly
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Dec 06 01:00:04 UTC 2007
>Closed-Date:
>Last-Modified:
>Originator: Nikos Ntarmos
>Release: FreeBSD 7.0-BETA3 i386
>Organization:
NetCInS Lab., C.E.I.D., U. of Patras, Greece
>Environment:
System: FreeBSD ace.netcins.ceid.upatras.gr 7.0-BETA3 FreeBSD 7.0-BETA3 #0: Sat Dec 1 16:55:25 EET 2007 root at ace.netcins.ceid.upatras.gr:/opt/obj/opt/src/sys/ACE i386
>Description:
x11/roxterm features vte-based matching of URLs on screen, assigned to
user-programmable handlers. The current regexs used to define URLs don't
function correctly; a URL is supposed to begin on '\<' (start of word)
but the regex engine matches the literal '<', resulting in considering
only URLs with a leading '<', including the '<' character. The upstream
author is further considering changing '\<' to '\b' (word boundary), but
that doesn't work either.
>How-To-Repeat:
Run x11/roxterm and hover the mouse over a url not starting with '<'.
>Fix:
Note that a similar workaround has been used for x11/gnome-terminal too.
--- roxterm-url-matching.diff begins here ---
--- /dev/null 2007-12-06 02:40:59.000000000 +0200
+++ files/patch-src-roxterm.c 2007-12-06 02:35:09.000000000 +0200
@@ -0,0 +1,53 @@
+--- src/roxterm.c.orig 2007-12-05 22:06:09.000000000 +0200
++++ src/roxterm.c 2007-12-05 22:14:11.000000000 +0200
+@@ -169,7 +169,8 @@
+ }
+
+ #define URLMSGIDSET "[-A-Z\\^_a-z{|}~!\"#$%&'()*+,./0-9;:=?`]"
+-#define URLEND "[^]'.}>) \t\r\n,\\\"]"
++#define URLEND "[^]'.}>) \t\r\n,\\\"]" "[[:>:]]"
++#define URLSTART "[[:<:]]"
+ #define URLHOST "[A-Za-z0-9][-A-Za-z0-9.]*"
+ #define URLEXTHOST "[A-Za-z0-9][-.:!%$^*&~#A-Za-z0-9@]*"
+ #define URLFQDNTAIL "\\.[-A-Za-z0-9.]+"
+@@ -180,30 +181,30 @@
+ #define URLUSERANDPASS URLUSER ":[-,?;.:/!%$^*&~\"#'A-Za-z0-9]+"
+ #define URLPORT ":[0-9]+"
+ */
+-#define URLPATH "[/?][-A-Za-z0-9_$.+!*(),;:@&=?/~#%]*" URLEND
++#define URLPATH "[/?][-A-Za-z0-9_$.+!*(),;:@&=?/~#%]*"
+
+ static const char *full_urls[] = {
+- "\\<" URLSCHEME "//" URLEXTHOST,
+- "\\<" URLSCHEME "//" URLEXTHOST URLPATH
++ URLSTART URLSCHEME "//" URLEXTHOST URLEND "/?",
++ URLSTART URLSCHEME "//" URLEXTHOST URLPATH URLEND "/?"
+ };
+
+ static const char *web_urls[] = {
+- "\\<www[0-9]*" URLFQDNTAIL,
+- "\\<www[0-9]*" URLFQDNTAIL URLPATH
++ URLSTART "www[0-9]*" URLFQDNTAIL URLEND "/?",
++ URLSTART "www[0-9]*" URLFQDNTAIL URLPATH URLEND "/?"
+ };
+
+ static const char *ftp_urls[] = {
+- "\\<ftp[0-9]*" URLFQDNTAIL,
+- "\\<ftp[0-9]*" URLFQDNTAIL URLPATH
++ URLSTART "ftp[0-9]*" URLFQDNTAIL URLEND "/?",
++ URLSTART "ftp[0-9]*" URLFQDNTAIL URLPATH URLEND "/?"
+ };
+
+ #define URL_EMAIL_USER "[-A-Za-z.]+"
+
+-#define URL_NEWS "\\<news:" URLMSGIDSET "+@" URLEXTHOST
++#define URL_NEWS URLSTART "news:" URLMSGIDSET "+@" URLEXTHOST URLEND
+
+ static const char *mailto_urls[] = {
+- "\\<" URL_EMAIL_USER "@" URLHOST,
+- "\\<mailto:" URL_EMAIL_USER "@" URLHOST "\\?[A-Za-z]+=" URLMSGIDSET "+"
++ URLSTART URL_EMAIL_USER "@" URLHOST URLEND,
++ URLSTART "mailto:" URL_EMAIL_USER "@" URLHOST "\\?[A-Za-z]+=" URLMSGIDSET "+" URLEND
+ };
+
+ static void roxterm_add_matches(ROXTermData *roxterm, VteTerminal *vte)
--- roxterm-url-matching.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list