X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=cgiedit.c;h=3bb0e9da9cbf30b79373361bf9ebb522d873a3d3;hb=3500c34ddfe357020cfee5fc3542da39b2caf212;hp=51a70f27877322ef463199f19e151f7e11c1bf20;hpb=20d427754b5e0fc53a0b89e41a096c0695e0d8bc;p=privoxy.git diff --git a/cgiedit.c b/cgiedit.c index 51a70f27..3bb0e9da 100644 --- a/cgiedit.c +++ b/cgiedit.c @@ -1,4 +1,4 @@ -const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.27 2002/03/26 23:06:04 jongfoster Exp $"; +const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.30 2002/04/10 13:38:35 oes Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/cgiedit.c,v $ @@ -42,6 +42,15 @@ const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.27 2002/03/26 23:06:04 jongfoster * * Revisions : * $Log: cgiedit.c,v $ + * Revision 1.30 2002/04/10 13:38:35 oes + * load_template signature changed + * + * Revision 1.29 2002/04/08 16:59:08 oes + * Fixed comment + * + * Revision 1.28 2002/03/27 12:30:29 oes + * Deleted unsused variable + * * Revision 1.27 2002/03/26 23:06:04 jongfoster * Removing duplicate @ifs on the toggle page * @@ -2403,10 +2412,10 @@ jb_err cgi_error_file(struct client_state *csp, /********************************************************************* * - * Function : cgi_error_bad_param + * Function : cgi_error_disabled * - * Description : CGI function that is called if the parameters - * (query string) for a CGI were wrong. + * Description : CGI function that is called if the actions editor + * is called although it's disabled in config * * Parameters : * 1 : csp = Current client state (buffers, headers, etc...) @@ -2528,6 +2537,7 @@ jb_err cgi_edit_actions_list(struct client_state *csp, return cgi_error_disabled(csp, rsp); } + /* Load actions file */ err = edit_read_actions_file(csp, rsp, parameters, 0, &file); if (err) { @@ -2535,6 +2545,8 @@ jb_err cgi_edit_actions_list(struct client_state *csp, return (err == JB_ERR_FILE ? JB_ERR_OK : err); } + /* Set up global exports */ + if (NULL == (exports = default_exports(csp, NULL))) { edit_free_file(file); @@ -2551,9 +2563,77 @@ jb_err cgi_edit_actions_list(struct client_state *csp, return err; } + /* Find start of actions in file */ + cur_line = file->lines; + line_number = 1; + while ((cur_line != NULL) && (cur_line->type != FILE_LINE_ACTION)) + { + cur_line = cur_line->next; + line_number++; + } + + /* + * Conventional actions files should have a match all block + * at the start: + * cur_line = {...global actions...} + * cur_line->next = / + * cur_line->next->next = {...actions...} or EOF + */ + if ( (cur_line != NULL) + && (cur_line->type == FILE_LINE_ACTION) + && (cur_line->next != NULL) + && (cur_line->next->type == FILE_LINE_URL) + && (0 == strcmp(cur_line->next->unprocessed, "/")) + && ( (cur_line->next->next == NULL) + || (cur_line->next->next->type != FILE_LINE_URL) + ) ) + { + /* + * Conventional actions file, supply extra editing help. + * (e.g. don't allow them to make it an unconventional one). + */ + err = map_conditional(exports, "all-urls-present", 1); + + snprintf(buf, 50, "%d", line_number); + if (!err) err = map(exports, "all-urls-s", 1, buf, 1); + snprintf(buf, 50, "%d", line_number + 2); + if (!err) err = map(exports, "all-urls-s-next", 1, buf, 1); + if (!err) err = map(exports, "all-urls-actions", 1, + actions_to_html(cur_line->data.action), 0); + + /* Skip the 2 lines */ + cur_line = cur_line->next->next; + line_number += 2; + + /* + * Note that prev_section_line_number is NOT set here. + * This is deliberate and not a bug. It stops a "Move up" + * option appearing on the next section. Clicking "Move + * up" would make the actions file unconventional, which + * we don't want, so we hide this option. + */ + } + else + { + /* + * Non-standard actions file - does not begin with + * the "All URLs" section. + */ + err = map_conditional(exports, "all-urls-present", 0); + } + + if (err) + { + edit_free_file(file); + free_map(exports); + return err; + } + /* Should do all global exports above this point */ - err = template_load(csp, §ion_template, "edit-actions-list-section"); + /* Load templates */ + + err = template_load(csp, §ion_template, "edit-actions-list-section", 0); if (err) { edit_free_file(file); @@ -2565,7 +2645,7 @@ jb_err cgi_edit_actions_list(struct client_state *csp, return err; } - err = template_load(csp, &url_template, "edit-actions-list-url"); + err = template_load(csp, &url_template, "edit-actions-list-url", 0); if (err) { free(section_template); @@ -2597,15 +2677,6 @@ jb_err cgi_edit_actions_list(struct client_state *csp, return err; } - /* Find start of actions in file */ - cur_line = file->lines; - line_number = 1; - while ((cur_line != NULL) && (cur_line->type != FILE_LINE_ACTION)) - { - cur_line = cur_line->next; - line_number++; - } - if (NULL == (sections = strdup(""))) { free(section_template); @@ -2939,7 +3010,7 @@ jb_err cgi_edit_actions_for_url(struct client_state *csp, int index = 0; char * filter_template; - err = template_load(csp, &filter_template, "edit-actions-for-url-filter"); + err = template_load(csp, &filter_template, "edit-actions-for-url-filter", 0); if (err) { edit_free_file(file);