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;
}