Date: Thu, 6 Dec 2007 02:52:51 +0200 (EET) From: Nikos Ntarmos <ntarmos@ceid.upatras.gr> To: FreeBSD-gnats-submit@FreeBSD.org Cc: relaxbsd@gmail.com Subject: ports/118456: [Patch] x11/roxterm doesn't match URLs properly Message-ID: <20071206005251.2F9BB3F40F@ace.netcins.ceid.upatras.gr> Resent-Message-ID: <200712060100.lB6105ib077884@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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@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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071206005251.2F9BB3F40F>