[epiphany-extensions] greasemonkey: port to GRegex from pcre.



commit 3736b3a18ba41967935f1808fde81fef51051c2e
Author: Xan Lopez <xan gnome org>
Date:   Thu May 21 21:47:17 2009 +0300

    greasemonkey: port to GRegex from pcre.
---
 configure.ac                                  |   45 +------------------------
 extensions/greasemonkey/greasemonkey-script.c |   35 +++++++------------
 2 files changed, 14 insertions(+), 66 deletions(-)

diff --git a/configure.ac b/configure.ac
index 3c1d5d0..9bf015b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -170,7 +170,7 @@ AC_MSG_CHECKING([which extensions to build])
 
 ALL_EXTENSIONS="actions adblock auto-reload auto-scroller certificates error-viewer extensions-manager-ui gestures greasemonkey java-console livehttpheaders page-info permissions push-scroller rss sample select-stylesheet sidebar smart-bookmarks tab-groups tab-states"
 USEFUL_EXTENSIONS="actions adblock auto-reload auto-scroller certificates error-viewer extensions-manager-ui gestures java-console page-info push-scroller select-stylesheet sidebar smart-bookmarks tab-groups tab-states"
-DEFAULT_EXTENSIONS="actions adblock auto-scroller certificates error-viewer extensions-manager-ui gestures java-console page-info push-scroller select-stylesheet sidebar smart-bookmarks tab-groups tab-states"
+DEFAULT_EXTENSIONS="actions adblock auto-scroller certificates error-viewer extensions-manager-ui gestures java-console page-info push-scroller select-stylesheet sidebar smart-bookmarks tab-groups tab-states greasemonkey"
 
 PYTHON_ALL_EXTENSIONS="python-console sample-python favicon cc-license-viewer epilicious"
 PYTHON_USEFUL_EXTENSIONS="python-console favicon cc-license-viewer"
@@ -255,49 +255,6 @@ if echo "$EXTENSIONS" | egrep '(^| )(rss)($| )' > /dev/null; then
 	PKG_CHECK_MODULES([DBUS], [dbus-1 >= $DBUS_REQUIRED dbus-glib-1 >= $DBUS_GLIB_REQUIRED])
 fi
 
-# ****
-# PCRE
-# ****
-
-if echo "$EXTENSIONS" | egrep '(^| )(greasemonkey)($| )' > /dev/null; then
-	AC_PATH_PROG([PCRE_CONFIG], [pcre-config], [no])
-
-	if test "x$PCRE_CONFIG" = "xno"; then
-		AC_ERROR([pcre development files not found])
-	fi
-
-	PCRE_CFLAGS="$($PCRE_CONFIG --cflags)"
-	AC_SUBST([PCRE_CFLAGS])
-	PCRE_LIBS="$($PCRE_CONFIG --libs)"
-	AC_SUBST([PCRE_LIBS])
-
-	pcre_saved_CFLAGS=$CFLAGS
-	pcre_saved_LIBS=$LIBS
-	CFLAGS="$CFLAGS $PCRE_CFLAGS"
-	LIBS="$LIBS $PCRE_LIBS"
-
-	AC_CACHE_CHECK([whether libpcre was compiled with UTF-8 support],
-		[ac_cv_have_preg_utf8_support],
-		[AC_RUN_IFELSE(
-		 	[AC_LANG_SOURCE(
-				 [[#include <pcre.h>
-
-				   int main() {
-				     int t;
-				     return (pcre_config (PCRE_CONFIG_UTF8, &t) || !t);
-				   }]])],
-			[ac_cv_have_preg_utf8_support="yes"],
-			[ac_cv_have_preg_utf8_support="no"],
-			[ac_cv_have_preg_utf8_support="maybe"])])
-
-	CFLAGS=$pcre_saved_CFLAGS
-	LIBS=$pcre_saved_LIBS
-
-	if test "$ac_cv_have_preg_utf8_support" != "yes"; then
-		AC_ERROR([pcre does not support utf-8])
-	fi
-fi
-
 # ******
 # Python
 # ******
diff --git a/extensions/greasemonkey/greasemonkey-script.c b/extensions/greasemonkey/greasemonkey-script.c
index 38890e0..a1a42c5 100644
--- a/extensions/greasemonkey/greasemonkey-script.c
+++ b/extensions/greasemonkey/greasemonkey-script.c
@@ -15,7 +15,6 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
- *  $Id$
  */
 
 #include "config.h"
@@ -26,8 +25,6 @@
 #include <glib/gi18n-lib.h>
 #include <gmodule.h>
 
-#include <pcre.h>
-
 #include <string.h>
 
 #define GREASEMONKEY_SCRIPT_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), TYPE_GREASEMONKEY_SCRIPT, GreasemonkeyScriptPrivate))
@@ -66,7 +63,7 @@ enum
 typedef struct
 {
 	char *str;
-	pcre *re;
+	GRegex *re;
 } UrlMatcher;
 
 static GObjectClass *parent_class = NULL;
@@ -77,17 +74,11 @@ static gint
 matcher_url_cmp (const UrlMatcher *matcher,
 		 const char *url)
 {
-	int res;
-
-	res = pcre_exec (matcher->re, NULL, url, strlen (url), 0,
-			 PCRE_NO_UTF8_CHECK, NULL, 0);
+	gboolean match;
 
-	if (res >= 0)
-	{
-		return 0;
-	}
+	match = g_regex_match (matcher->re, url, 0, NULL);
 
-	return 1;
+	return match ? 0 : 1;
 }
 
 gboolean
@@ -282,13 +273,12 @@ find_tld_pos (const char *s)
 	return 0;
 }
 
-static pcre *
+static GRegex *
 build_preg (const char *s)
 {
 	GString *preg_str;
-	pcre *preg;
-	const char *err;
-	int erroffset;
+	GRegex *preg;
+	GError *error = NULL;
 	int tld_pos;
 
 	preg_str = g_string_new (NULL);
@@ -338,13 +328,14 @@ build_preg (const char *s)
 
 	LOG ("Matching against %s", preg_str->str);
 
-	preg = pcre_compile (preg_str->str, PCRE_UTF8, &err, &erroffset, NULL);
+	preg = g_regex_new (preg_str->str, G_REGEX_OPTIMIZE, 0, &error); 
 
 	if (preg == NULL)
 	{
 		g_warning ("Could not compile expression \"%s\"\n"
-			   "Error at column %d: %s",
-			   preg_str->str, erroffset, err);
+			   "Error: %s",
+			   preg_str->str, error->message);
+		g_error_free (error);
 	}
 
 	g_string_free (preg_str, TRUE);
@@ -356,7 +347,7 @@ static GList *
 matchers_for_patterns (const GList *patterns)
 {
 	GList *ret;
-	pcre *re;
+	GRegex *re;
 	UrlMatcher *matcher;
 
 	ret = NULL;
@@ -429,7 +420,7 @@ static void
 url_matcher_free (UrlMatcher *matcher)
 {
 	g_free (matcher->str);
-	g_free (matcher->re);
+	g_regex_unref (matcher->re);
 	g_free (matcher);
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]