X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=actions.c;h=379c5e97b4ad6ad807960aaafd17fc797dc29163;hb=53748ca8ca3c893025be34dd4f104546fcbd0602;hp=7320850b774c09ff7ebf681643eef2f37a3cd6ae;hpb=f67b3326138f428863c21c7738e0c8db87fa6f5c;p=privoxy.git diff --git a/actions.c b/actions.c index 7320850b..379c5e97 100644 --- a/actions.c +++ b/actions.c @@ -1,4 +1,3 @@ -const char actions_rcs[] = "$Id: actions.c,v 1.97 2016/05/03 13:20:37 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/actions.c,v $ @@ -6,7 +5,7 @@ const char actions_rcs[] = "$Id: actions.c,v 1.97 2016/05/03 13:20:37 fabiankeil * Purpose : Declares functions to work with actions files * * Copyright : Written by and Copyright (C) 2001-2016 the - * Privoxy team. http://www.privoxy.org/ + * Privoxy team. https://www.privoxy.org/ * * Based on the Internet Junkbuster originally written * by and Copyright (C) 1997 Anonymous Coders and @@ -57,9 +56,6 @@ const char actions_rcs[] = "$Id: actions.c,v 1.97 2016/05/03 13:20:37 fabiankeil #include "ssplit.h" #include "filters.h" -const char actions_h_rcs[] = ACTIONS_H_VERSION; - - /* * We need the main list of options. * @@ -551,6 +547,12 @@ jb_err get_actions(char *line, return JB_ERR_PARSE; } } +#ifdef FEATURE_EXTENDED_STATISTICS + if (0 == strcmpic(action->name, "+block")) + { + register_block_reason_for_statistics(value); + } +#endif /* FIXME: should validate option string here */ freez (cur_action->string[action->index]); cur_action->string[action->index] = strdup(value); @@ -826,8 +828,12 @@ int update_action_bits_for_tag(struct client_state *csp, const char *tag) continue; } +#ifdef HAVE_PCRE2 + if (pcre2_pattern_matches(b->url->pattern.tag_regex, tag)) +#else /* and check if one of the tag patterns matches the tag, */ if (0 == regexec(b->url->pattern.tag_regex, tag, 0, NULL, 0)) +#endif { /* if it does, update the action bit map, */ if (merge_current_action(csp->action, b->action)) @@ -882,7 +888,11 @@ jb_err check_negative_tag_patterns(struct client_state *csp, unsigned int flag) } for (tag = csp->tags->first; NULL != tag; tag = tag->next) { +#ifdef HAVE_PCRE2 + if (pcre2_pattern_matches(b->url->pattern.tag_regex, tag->str)) +#else if (0 == regexec(b->url->pattern.tag_regex, tag->str, 0, NULL, 0)) +#endif { /* * The pattern matches at least one tag, thus the action @@ -1109,6 +1119,14 @@ static const char *filter_type_to_string(enum filter_type filter_type) return "client-header tagger"; case FT_SERVER_HEADER_TAGGER: return "server-header tagger"; + case FT_SUPPRESS_TAG: + return "suppress tag filter"; + case FT_CLIENT_BODY_FILTER: + return "client body filter"; + case FT_CLIENT_BODY_TAGGER: + return "client body tagger"; + case FT_ADD_HEADER: + return "add-header action"; #ifdef FEATURE_EXTERNAL_FILTERS case FT_EXTERNAL_CONTENT_FILTER: return "external content filter"; @@ -1183,7 +1201,8 @@ static int action_spec_is_valid(struct client_state *csp, const struct action_sp {ACTION_MULTI_CLIENT_HEADER_FILTER, FT_CLIENT_HEADER_FILTER}, {ACTION_MULTI_SERVER_HEADER_FILTER, FT_SERVER_HEADER_FILTER}, {ACTION_MULTI_CLIENT_HEADER_TAGGER, FT_CLIENT_HEADER_TAGGER}, - {ACTION_MULTI_SERVER_HEADER_TAGGER, FT_SERVER_HEADER_TAGGER} + {ACTION_MULTI_SERVER_HEADER_TAGGER, FT_SERVER_HEADER_TAGGER}, + {ACTION_MULTI_CLIENT_BODY_FILTER, FT_CLIENT_BODY_FILTER} }; int errors = 0; int i; @@ -1203,7 +1222,7 @@ static int action_spec_is_valid(struct client_state *csp, const struct action_sp * * Function : load_one_actions_file * - * Description : Read and parse a action file and add to files + * Description : Read and parse an action file and add to files * list. * * Parameters : @@ -1637,7 +1656,7 @@ int load_one_actions_file(struct client_state *csp, int fileid) * * Function : actions_to_text * - * Description : Converts a actionsfile entry from the internal + * Description : Converts an actionsfile entry from the internal * structure into a text line. The output is split * into one line for each action with line continuation. * @@ -1723,7 +1742,7 @@ char * actions_to_text(const struct action_spec *action) * * Function : actions_to_html * - * Description : Converts a actionsfile entry from numeric form + * Description : Converts an actionsfile entry from numeric form * ("mask" and "add") to a
-separated HTML string * in which each action is linked to its chapter in * the user manual. @@ -1830,7 +1849,7 @@ char * actions_to_html(const struct client_state *csp, * * Function : current_actions_to_html * - * Description : Converts a curren action spec to a
separated HTML + * Description : Converts a current action spec to a
separated HTML * text in which each action is linked to its chapter in * the user manual. * @@ -1926,7 +1945,7 @@ char *current_action_to_html(const struct client_state *csp, * * Function : action_to_line_of_text * - * Description : Converts a action spec to a single text line + * Description : Converts an action spec to a single text line * listing the enabled actions. * * Parameters :