-const char actions_rcs[] = "$Id: actions.c,v 1.39 2007/04/17 18:21:45 fabiankeil Exp $";
+const char actions_rcs[] = "$Id: actions.c,v 1.42 2008/02/09 15:15:38 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/actions.c,v $
* Purpose : Declares functions to work with actions files
* Functions declared include: FIXME
*
- * Copyright : Written by and Copyright (C) 2001-2007 the SourceForge
+ * Copyright : Written by and Copyright (C) 2001-2008 the SourceForge
* Privoxy team. http://www.privoxy.org/
*
* Based on the Internet Junkbuster originally written
*
* Revisions :
* $Log: actions.c,v $
+ * Revision 1.42 2008/02/09 15:15:38 fabiankeil
+ * List active and inactive actions in the show-url-info's
+ * "Final results" section separately. Patch submitted by Lee
+ * in #1830056, modified to list active actions first.
+ *
+ * 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()
if ((value == NULL) || (*value == '\0'))
{
- return JB_ERR_PARSE;
+ if (0 != strcmpic(action->name, "block"))
+ {
+ /*
+ * XXX: Temporary backwards compatibility hack.
+ */
+ static int complaint_shown = 0;
+ value = "No reason specified.";
+ if (!complaint_shown)
+ {
+ log_error(LOG_LEVEL_ERROR, "At least one block "
+ "without reason found. This may become a fatal "
+ "error in future versions.");
+ complaint_shown = 1;
+ }
+ }
+ else
+ {
+ return JB_ERR_PARSE;
+ }
}
/* FIXME: should validate option string here */
freez (cur_action->string[action->index]);
return err;
}
-
+#if 0
/*********************************************************************
*
* Function : update_action_bits_for_all_tags
return updated;
}
-
+#endif
/*********************************************************************
*
* 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;
* 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;
* 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<br>+"); \
- string_join(&result, add_help_link(__name, csp->config)); \
+ string_append(&active, "\n<br>+"); \
+ string_join(&active, add_help_link(__name, csp->config)); \
} \
else \
{ \
- string_append(&result, "\n<br>-"); \
- string_join(&result, add_help_link(__name, csp->config)); \
+ string_append(&inactive, "\n<br>-"); \
+ string_join(&inactive, add_help_link(__name, csp->config)); \
}
#define DEFINE_ACTION_STRING(__name, __bit, __index) \
if (flags & __bit) \
{ \
- string_append(&result, "\n<br>+"); \
- 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<br>+"); \
+ 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<br>-"); \
- string_join(&result, add_help_link(__name, csp->config)); \
+ string_append(&inactive, "\n<br>-"); \
+ 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<br>-"); \
- string_join(&result, add_help_link(__name, csp->config)); \
+ string_append(&inactive, "\n<br>-"); \
+ string_join(&inactive, add_help_link(__name, csp->config)); \
} \
else \
{ \
while (lst) \
{ \
- string_append(&result, "\n<br>+"); \
- 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<br>+"); \
+ 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; \
} \
}
#undef DEFINE_ACTION_BOOL
#undef DEFINE_ACTION_ALIAS
+ if (active != NULL)
+ {
+ string_append(&result, active);
+ freez(active);
+ }
+ string_append(&result, "\n<br>");
+ if (inactive != NULL)
+ {
+ string_append(&result, inactive);
+ freez(inactive);
+ }
return result;
}