--- 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
--- 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);
}