X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=actions.c;h=d530b4e843267f05f6c773eb451d6906e337ed42;hp=cbd48727423f7a2f03976c5ea3f1d3c176adeca1;hb=75faf0e6f18db9754ccc6a43815f6f48f2e0a5b1;hpb=fffab6e6ee7719edef26f9cced06f3797be11312 diff --git a/actions.c b/actions.c index cbd48727..d530b4e8 100644 --- a/actions.c +++ b/actions.c @@ -1,4 +1,4 @@ -const char actions_rcs[] = "$Id: actions.c,v 1.38 2007/04/15 16:39:20 fabiankeil Exp $"; +const char actions_rcs[] = "$Id: actions.c,v 1.41 2008/01/28 20:17:40 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/actions.c,v $ @@ -33,6 +33,20 @@ const char actions_rcs[] = "$Id: actions.c,v 1.38 2007/04/15 16:39:20 fabiankeil * * Revisions : * $Log: actions.c,v $ + * Revision 1.41 2008/01/28 20:17:40 fabiankeil + * - Mark some parameters as immutable. + * - Hide update_action_bits_for_all_tags() while it's unused. + * + * Revision 1.40 2007/05/21 10:26:50 fabiankeil + * - Use strlcpy() instead of strcpy(). + * - Provide a reason why loading the actions + * file might have failed. + * + * Revision 1.39 2007/04/17 18:21:45 fabiankeil + * Split update_action_bits() into + * update_action_bits_for_all_tags() + * and update_action_bits_for_tag(). + * * Revision 1.38 2007/04/15 16:39:20 fabiankeil * Introduce tags as alternative way to specify which * actions apply to a request. At the moment tags can be @@ -875,7 +889,7 @@ jb_err merge_current_action (struct current_action_spec *dest, return err; } - +#if 0 /********************************************************************* * * Function : update_action_bits_for_all_tags @@ -904,7 +918,7 @@ int update_action_bits_for_all_tags(struct client_state *csp) return updated; } - +#endif /********************************************************************* * @@ -1176,8 +1190,9 @@ static int load_one_actions_file(struct client_state *csp, int fileid) } if (!fs) { - log_error(LOG_LEVEL_FATAL, "can't load actions file '%s': error finding file: %E", - csp->config->actions_file[fileid]); + log_error(LOG_LEVEL_FATAL, "can't load actions file '%s': %E. " + "Note that beginning with Privoxy 3.0.7, actions files have to be specified " + "with their complete file names.", csp->config->actions_file[fileid]); return 1; /* never get here */ } @@ -1342,7 +1357,7 @@ static int load_one_actions_file(struct client_state *csp, int fileid) init_action(cur_action); /* trim { */ - strcpy(actions_buf, buf + 1); + strlcpy(actions_buf, buf + 1, sizeof(actions_buf)); /* check we have a trailing } and then trim it */ end = actions_buf + strlen(actions_buf) - 1; @@ -1484,7 +1499,7 @@ static int load_one_actions_file(struct client_state *csp, int fileid) return 1; /* never get here */ } - strcpy(actions_buf, start); + strlcpy(actions_buf, start, sizeof(actions_buf)); if (get_actions(actions_buf, alias_list, new_alias->action)) { @@ -1590,7 +1605,7 @@ static int load_one_actions_file(struct client_state *csp, int fileid) * NULL on out-of-memory error. * *********************************************************************/ -char * actions_to_text(struct action_spec *action) +char * actions_to_text(const struct action_spec *action) { unsigned mask = action->mask; unsigned add = action->add; @@ -1678,8 +1693,8 @@ char * actions_to_text(struct action_spec *action) * NULL on out-of-memory error. * *********************************************************************/ -char * actions_to_html(struct client_state *csp, - struct action_spec *action) +char * actions_to_html(const struct client_state *csp, + const struct action_spec *action) { unsigned mask = action->mask; unsigned add = action->add; @@ -1784,56 +1799,58 @@ char * actions_to_html(struct client_state *csp, * NULL on out-of-memory error. * *********************************************************************/ -char *current_action_to_html(struct client_state *csp, - struct current_action_spec *action) +char *current_action_to_html(const struct client_state *csp, + const struct current_action_spec *action) { unsigned long flags = action->flags; - char * result = strdup(""); struct list_entry * lst; + char *result = strdup(""); + char *active = strdup(""); + char *inactive = strdup(""); #define DEFINE_ACTION_BOOL(__name, __bit) \ if (flags & __bit) \ { \ - string_append(&result, "\n
+"); \ - string_join(&result, add_help_link(__name, csp->config)); \ + string_append(&active, "\n
+"); \ + string_join(&active, add_help_link(__name, csp->config)); \ } \ else \ { \ - string_append(&result, "\n
-"); \ - string_join(&result, add_help_link(__name, csp->config)); \ + string_append(&inactive, "\n
-"); \ + string_join(&inactive, add_help_link(__name, csp->config)); \ } #define DEFINE_ACTION_STRING(__name, __bit, __index) \ if (flags & __bit) \ { \ - string_append(&result, "\n
+"); \ - string_join(&result, add_help_link(__name, csp->config)); \ - string_append(&result, "{"); \ - string_join(&result, html_encode(action->string[__index])); \ - string_append(&result, "}"); \ + string_append(&active, "\n
+"); \ + string_join(&active, add_help_link(__name, csp->config)); \ + string_append(&active, "{"); \ + string_join(&active, html_encode(action->string[__index])); \ + string_append(&active, "}"); \ } \ else \ { \ - string_append(&result, "\n
-"); \ - string_join(&result, add_help_link(__name, csp->config)); \ + string_append(&inactive, "\n
-"); \ + string_join(&inactive, add_help_link(__name, csp->config)); \ } #define DEFINE_ACTION_MULTI(__name, __index) \ lst = action->multi[__index]->first; \ if (lst == NULL) \ { \ - string_append(&result, "\n
-"); \ - string_join(&result, add_help_link(__name, csp->config)); \ + string_append(&inactive, "\n
-"); \ + string_join(&inactive, add_help_link(__name, csp->config)); \ } \ else \ { \ while (lst) \ { \ - string_append(&result, "\n
+"); \ - string_join(&result, add_help_link(__name, csp->config)); \ - string_append(&result, "{"); \ - string_join(&result, html_encode(lst->str)); \ - string_append(&result, "}"); \ + string_append(&active, "\n
+"); \ + string_join(&active, add_help_link(__name, csp->config)); \ + string_append(&active, "{"); \ + string_join(&active, html_encode(lst->str)); \ + string_append(&active, "}"); \ lst = lst->next; \ } \ } @@ -1847,5 +1864,16 @@ char *current_action_to_html(struct client_state *csp, #undef DEFINE_ACTION_BOOL #undef DEFINE_ACTION_ALIAS + if (active != NULL) + { + string_append(&result, active); + freez(active); + } + string_append(&result, "\n
"); + if (inactive != NULL) + { + string_append(&result, inactive); + freez(inactive); + } return result; }