X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=actions.c;h=4b31f7fe7c6948f5ebf6beb068618084fa923215;hp=e3428f70b6bb8309e8c7ff3f847222f6d3fda66f;hb=19895d4c0c44678c9e5edf41912a3ecf58e408f9;hpb=17f6c9b824f98abcf8c1680eaee66988bacdbd95 diff --git a/actions.c b/actions.c index e3428f70..4b31f7fe 100644 --- a/actions.c +++ b/actions.c @@ -1,4 +1,4 @@ -const char actions_rcs[] = "$Id: actions.c,v 1.26 2002/03/26 22:29:54 swa Exp $"; +const char actions_rcs[] = "$Id: actions.c,v 1.31 2002/05/06 07:56:50 oes Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/actions.c,v $ @@ -33,6 +33,35 @@ const char actions_rcs[] = "$Id: actions.c,v 1.26 2002/03/26 22:29:54 swa Exp $" * * Revisions : * $Log: actions.c,v $ + * Revision 1.31 2002/05/06 07:56:50 oes + * Made actions_to_html independent of FEATURE_CGI_EDIT_ACTIONS + * + * Revision 1.30 2002/04/30 11:14:52 oes + * Made csp the first parameter in *action_to_html + * + * Revision 1.29 2002/04/26 19:30:54 jongfoster + * - current_action_to_html(): Adding help link for the "-" form of + * one-string actions. + * - Some actions had "
-", some "
-" (note the space). + * Standardizing on no space. + * - Greatly simplifying some of the code by using string_join() + * where appropriate. + * + * Revision 1.28 2002/04/26 12:53:15 oes + * - CGI AF editor now writes action lines split into + * single lines with line continuation + * - actions_to_html now embeds each action name in + * link to chapter + * - current_action_to_text is now called current_action_to_html + * and acts like actions_to_html + * + * Revision 1.27 2002/04/24 02:10:31 oes + * - Jon's patch for multiple AFs: + * - split load_actions_file, add load_one_actions_file + * - make csp->actions_list files an array + * - remember file id with each action + * - Copy_action now frees dest action before copying + * * Revision 1.26 2002/03/26 22:29:54 swa * we have a new homepage! * @@ -159,10 +188,9 @@ const char actions_rcs[] = "$Id: actions.c,v 1.26 2002/03/26 22:29:54 swa Exp $" #include "miscutil.h" #include "errlog.h" #include "loaders.h" -#ifdef FEATURE_CGI_EDIT_ACTIONS #include "encode.h" -#endif /* def FEATURE_CGI_EDIT_ACTIONS */ #include "urlmatch.h" +#include "cgi.h" const char actions_h_rcs[] = ACTIONS_H_VERSION; @@ -237,11 +265,11 @@ static int load_one_actions_file(struct client_state *csp, int fileid); * Function : merge_actions * * Description : Merge two actions together. - * Similar to "cur_action += new_action". + * Similar to "dest += src". * * Parameters : - * 1 : cur_action = Current actions, to modify. - * 2 : new_action = Action to add. + * 1 : dest = Actions to modify. + * 2 : src = Action to add. * * Returns : JB_ERR_OK or JB_ERR_MEMORY * @@ -312,7 +340,7 @@ jb_err merge_actions (struct action_spec *dest, * Function : copy_action * * Description : Copy an action_specs. - * Similar to "cur_action = new_action". + * Similar to "dest = src". * * Parameters : * 1 : dest = Destination of copy. @@ -518,7 +546,7 @@ jb_err get_action_token(char **line, char **name, char **value) * Parameters : * 1 : line = The string containing the actions. * Will be written to by this function. - * 2 : aliases = Custom alias list, or NULL for none. + * 2 : alias_list = Custom alias list, or NULL for none. * 3 : cur_action = Where to store the action. Caller * allocates memory. * @@ -1353,12 +1381,12 @@ static int load_one_actions_file(struct client_state *csp, int fileid) * * Function : actions_to_text * - * Description : Converts a actionsfile entry from numeric form - * ("mask" and "add") to text. + * Description : Converts a actionsfile entry from the internal + * structurt into a text line. The output is split + * into one line for each action with line continuation. * * Parameters : - * 1 : mask = As from struct url_actions - * 2 : add = As from struct url_actions + * 1 : action = The action to format. * * Returns : A string. Caller must free it. * NULL on out-of-memory error. @@ -1375,32 +1403,32 @@ char * actions_to_text(struct action_spec *action) mask |= add; -#define DEFINE_ACTION_BOOL(__name, __bit) \ - if (!(mask & __bit)) \ - { \ - string_append(&result, " -" __name); \ - } \ - else if (add & __bit) \ - { \ - string_append(&result, " +" __name); \ +#define DEFINE_ACTION_BOOL(__name, __bit) \ + if (!(mask & __bit)) \ + { \ + string_append(&result, " -" __name " \\\n"); \ + } \ + else if (add & __bit) \ + { \ + string_append(&result, " +" __name " \\\n"); \ } #define DEFINE_ACTION_STRING(__name, __bit, __index) \ if (!(mask & __bit)) \ { \ - string_append(&result, " -" __name); \ + string_append(&result, " -" __name " \\\n"); \ } \ else if (add & __bit) \ { \ string_append(&result, " +" __name "{"); \ string_append(&result, action->string[__index]); \ - string_append(&result, "}"); \ + string_append(&result, "} \\\n"); \ } #define DEFINE_ACTION_MULTI(__name, __index) \ if (action->multi_remove_all[__index]) \ { \ - string_append(&result, " -" __name); \ + string_append(&result, " -" __name " \\\n"); \ } \ else \ { \ @@ -1409,7 +1437,7 @@ char * actions_to_text(struct action_spec *action) { \ string_append(&result, " -" __name "{"); \ string_append(&result, lst->str); \ - string_append(&result, "}"); \ + string_append(&result, "} \\\n"); \ lst = lst->next; \ } \ } \ @@ -1418,7 +1446,7 @@ char * actions_to_text(struct action_spec *action) { \ string_append(&result, " +" __name "{"); \ string_append(&result, lst->str); \ - string_append(&result, "}"); \ + string_append(&result, "} \\\n"); \ lst = lst->next; \ } @@ -1435,28 +1463,29 @@ char * actions_to_text(struct action_spec *action) } -#ifdef FEATURE_CGI_EDIT_ACTIONS /********************************************************************* * * Function : actions_to_html * * Description : Converts a actionsfile entry from numeric form - * ("mask" and "add") to a
-seperated HTML string. + * ("mask" and "add") to a
-seperated HTML string + * in which each action is linked to its chapter in + * the user manual. * * Parameters : - * 1 : mask = As from struct url_actions - * 2 : add = As from struct url_actions + * 1 : csp = Client state (for config) + * 2 : action = Action spec to be converted * * Returns : A string. Caller must free it. * NULL on out-of-memory error. * *********************************************************************/ -char * actions_to_html(struct action_spec *action) +char * actions_to_html(struct client_state *csp, + struct action_spec *action) { unsigned mask = action->mask; unsigned add = action->add; char * result = strdup(""); - char * enc_str; struct list_entry * lst; /* sanity - prevents "-feature +feature" */ @@ -1466,59 +1495,45 @@ char * actions_to_html(struct action_spec *action) #define DEFINE_ACTION_BOOL(__name, __bit) \ if (!(mask & __bit)) \ { \ - string_append(&result, "\n
-" __name); \ + string_append(&result, "\n
-"); \ + string_join(&result, add_help_link(__name, csp->config)); \ } \ else if (add & __bit) \ { \ - string_append(&result, "\n
+" __name); \ + string_append(&result, "\n
+"); \ + string_join(&result, add_help_link(__name, csp->config)); \ } #define DEFINE_ACTION_STRING(__name, __bit, __index) \ if (!(mask & __bit)) \ { \ - string_append(&result, "\n
-" __name); \ + string_append(&result, "\n
-"); \ + string_join(&result, add_help_link(__name, csp->config)); \ } \ else if (add & __bit) \ { \ - string_append(&result, "\n
+" __name "{"); \ - if (NULL == result) \ - { \ - return NULL; \ - } \ - enc_str = html_encode(action->string[__index]);\ - if (NULL == enc_str) \ - { \ - free(result); \ - return NULL; \ - } \ - string_append(&result, enc_str); \ - free(enc_str); \ + 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, "}"); \ } #define DEFINE_ACTION_MULTI(__name, __index) \ if (action->multi_remove_all[__index]) \ { \ - string_append(&result, "\n
-" __name); \ + string_append(&result, "\n
-"); \ + string_join(&result, add_help_link(__name, csp->config)); \ } \ else \ { \ lst = action->multi_remove[__index]->first; \ while (lst) \ { \ - string_append(&result, "\n
-" __name "{");\ - if (NULL == result) \ - { \ - return NULL; \ - } \ - enc_str = html_encode(lst->str); \ - if (NULL == enc_str) \ - { \ - free(result); \ - return NULL; \ - } \ - string_append(&result, enc_str); \ - free(enc_str); \ + 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, "}"); \ lst = lst->next; \ } \ @@ -1526,19 +1541,10 @@ char * actions_to_html(struct action_spec *action) lst = action->multi_add[__index]->first; \ while (lst) \ { \ - string_append(&result, "\n
+" __name "{"); \ - if (NULL == result) \ - { \ - return NULL; \ - } \ - enc_str = html_encode(lst->str); \ - if (NULL == enc_str) \ - { \ - free(result); \ - return NULL; \ - } \ - string_append(&result, enc_str); \ - free(enc_str); \ + 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, "}"); \ lst = lst->next; \ } @@ -1562,23 +1568,26 @@ char * actions_to_html(struct action_spec *action) return result; } -#endif /* def FEATURE_CGI_EDIT_ACTIONS */ /********************************************************************* * - * Function : current_actions_to_text + * Function : current_actions_to_html * - * Description : Converts a actionsfile entry to text. + * Description : Converts a curren action spec to a
seperated HTML + * text in which each action is linked to its chapter in + * the user manual. * * Parameters : - * 1 : action = Action + * 1 : csp = Client state (for config) + * 2 : action = Current action spec to be converted * * Returns : A string. Caller must free it. * NULL on out-of-memory error. * *********************************************************************/ -char * current_action_to_text(struct current_action_spec *action) +char *current_action_to_html(struct client_state *csp, + struct current_action_spec *action) { unsigned long flags = action->flags; char * result = strdup(""); @@ -1587,37 +1596,45 @@ char * current_action_to_text(struct current_action_spec *action) #define DEFINE_ACTION_BOOL(__name, __bit) \ if (flags & __bit) \ { \ - string_append(&result, " +" __name); \ + string_append(&result, "\n
+"); \ + string_join(&result, add_help_link(__name, csp->config)); \ } \ else \ { \ - string_append(&result, " -" __name); \ + string_append(&result, "\n
-"); \ + string_join(&result, add_help_link(__name, csp->config)); \ } #define DEFINE_ACTION_STRING(__name, __bit, __index) \ if (flags & __bit) \ { \ - string_append(&result, " +" __name "{"); \ - string_append(&result, action->string[__index]); \ + 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, "}"); \ } \ else \ { \ - string_append(&result, " -" __name); \ + string_append(&result, "\n
-"); \ + string_join(&result, add_help_link(__name, csp->config)); \ } #define DEFINE_ACTION_MULTI(__name, __index) \ lst = action->multi[__index]->first; \ if (lst == NULL) \ { \ - string_append(&result, " -" __name); \ + string_append(&result, "\n
-"); \ + string_join(&result, add_help_link(__name, csp->config)); \ } \ else \ { \ while (lst) \ { \ - string_append(&result, " +" __name "{"); \ - string_append(&result, lst->str); \ + 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, "}"); \ lst = lst->next; \ } \