From cac8646b7eb41e56ce77882d7e8565f1fedd3b6b Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Thu, 16 Jul 2009 14:36:35 +0200 Subject: [PATCH] Replace leading * or ? in adblock lines with .* or \? respectively --- extensions/adblock.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/extensions/adblock.c b/extensions/adblock.c index 2161f1ad..f4e8f443 100644 --- a/extensions/adblock.c +++ b/extensions/adblock.c @@ -266,6 +266,8 @@ adblock_session_add_filter (SoupSession* session, while (fgets (line, 255, file)) { + gchar* temp; + error = NULL; /* Ignore comments and new lines */ if (line[0] == '!') @@ -281,18 +283,26 @@ adblock_session_add_filter (SoupSession* session, if (line[0] == '[') continue; g_strchomp (line); - /* TODO: Replace '*' with '.*', '?' with '\?' */ - regex = g_regex_new (line, G_REGEX_OPTIMIZE, + /* TODO: Replace trailing '*' with '.*' */ + if (line[0] == '*') + temp = g_strconcat (".", line, NULL); + else if (line[0] == '?') + temp = g_strconcat ("\\", line, NULL); + else + temp = g_strdup (line); + + regex = g_regex_new (temp, G_REGEX_OPTIMIZE, G_REGEX_MATCH_NOTEMPTY, &error); if (error) { g_warning ("%s: %s", G_STRFUNC, error->message); g_error_free (error); + g_free (temp); } else { havepattern = TRUE; - g_hash_table_insert (pattern, g_strdup (line), regex); + g_hash_table_insert (pattern, temp, regex); } } fclose (file); -- 2.39.5