# HG changeset patch # User franky@diable.fs # Date 1222758305 -7200 # Node ID 41d3457af8158c01becd53d82f288905a80f4ecb # Parent ac5a2c262098a5a0c2e2376d9d35b82d23bde617 Add option "url_regex" diff -r ac5a2c262098 -r 41d3457af815 mcabber/mcabberrc.example --- a/mcabber/mcabberrc.example Sat Sep 27 22:44:02 2008 +0200 +++ b/mcabber/mcabberrc.example Tue Sep 30 09:05:05 2008 +0200 @@ -419,6 +419,9 @@ # # Set "info" to anything you'd like to see in your lower status line #set info = woot +# Set url_regex to a regular expression matching urls. If it matches an url +# in an incoming messages, it'll print it to the log window. +#set url_regex = "(((https?|ftps?|nntp)://)|www[.][-a-z0-9.]+|(mailto:|news:))(%[0-9A-F]{2}|[-_.!~*';/?:@&=+$,#[:alnum:]])+" # Contacts PGP information # You can provide a PGP key to be used for a given Jabber user, or diff -r ac5a2c262098 -r 41d3457af815 mcabber/src/screen.c --- a/mcabber/src/screen.c Sat Sep 27 22:44:02 2008 +0200 +++ b/mcabber/src/screen.c Tue Sep 30 09:05:05 2008 +0200 @@ -144,6 +144,8 @@ gint value; } keyseq; +static GRegex *url_regex; + GSList *keyseqlist; static void add_keyseq(char *seqstr, guint mkeycode, gint value); @@ -745,6 +747,10 @@ inputLine[0] = 0; ptr_inputline = inputLine; + if (settings_opt_get("url_regex")) + url_regex = g_regex_new(settings_opt_get("url_regex"), + G_REGEX_OPTIMIZE, 0, NULL); + Curses = TRUE; return; } @@ -755,6 +761,8 @@ clear(); refresh(); endwin(); + if (url_regex) + g_regex_unref(url_regex); Curses = FALSE; return; } @@ -1990,6 +1998,21 @@ } } +inline void scr_LogUrls(const gchar *string) +{ + GMatchInfo *match_info; + GError *error = NULL; + + g_regex_match_full(url_regex, string, -1, 0, 0, &match_info, &error); + while (g_match_info_matches(match_info)) { + gchar *url = g_match_info_fetch(match_info, 0); + scr_print_logwindow(url); + g_free(url); + g_match_info_next(match_info, &error); + } + g_match_info_free(match_info); +} + inline void scr_WriteMessage(const char *bjid, const char *text, time_t timestamp, guint prefix_flags, unsigned mucnicklen) @@ -2015,6 +2038,8 @@ ~HBB_PREFIX_PGPCRYPT & ~HBB_PREFIX_OTRCRYPT)) prefix |= HBB_PREFIX_IN; + if (url_regex) + scr_LogUrls(text); scr_WriteMessage(jidfrom, text, timestamp, prefix, mucnicklen); }