From: Christian Dywan Date: Thu, 16 Jul 2009 12:36:35 +0000 (+0200) Subject: Replace leading * or ? in adblock lines with .* or \? respectively X-Git-Url: https://spindle.queued.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cac8646b7eb41e56ce77882d7e8565f1fedd3b6b;p=midori Replace leading * or ? in adblock lines with .* or \? respectively --- 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);