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