-const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.41.2.2 2002/08/05 20:02:59 oes Exp $";
+const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.41.2.5 2003/12/17 16:33:47 oes Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/Attic/cgiedit.c,v $
*
* Revisions :
* $Log: cgiedit.c,v $
+ * Revision 1.41.2.5 2003/12/17 16:33:47 oes
+ * - All edit functions that redirect back to the list page
+ * now use cgi_redirect
+ * - All redirects now contain useless parameter "foo", whose
+ * value are raw seconds since epoch, in order to force
+ * Opera and Konqueror to properly reload the list. Closes
+ * bug #859993
+ *
+ * Revision 1.41.2.4 2003/03/11 11:53:59 oes
+ * Cosmetic: Renamed cryptic variable
+ *
+ * Revision 1.41.2.3 2002/11/12 15:01:41 oes
+ * Fix: Don't free uninitialized struct editable_file
+ *
* Revision 1.41.2.2 2002/08/05 20:02:59 oes
* Bugfix: "Insert new section at top" did not work properly if first non-comment line in file was of type FILE_LINE_ACTION
*
#include "errlog.h"
#include "loaders.h"
#include "loadcfg.h"
-/* loadcfg.h is for g_bToggleIJB only */
+/* loadcfg.h is for global_toggle_state only */
#include "urlmatch.h"
const char cgiedit_h_rcs[] = CGIEDIT_H_VERSION;
}
/* FIXME: Incomplete */
- rsp->status = strdup("302 Local Redirect from Privoxy");
- if (rsp->status == NULL)
- {
- return JB_ERR_MEMORY;
- }
- if (enlist_unique_header(rsp->headers, "Location",
- CGI_PREFIX "edit-actions-list?f=default"))
- {
- free(rsp->status);
- rsp->status = NULL;
- return JB_ERR_MEMORY;
- }
- return JB_ERR_OK;
+ return cgi_redirect(rsp, CGI_PREFIX "edit-actions-list?f=default");
+
}
struct editable_file * file;
struct file_line * cur_line;
unsigned line_number;
- char * target;
+ char target[1024];
jb_err err;
int index;
const char * action_set_name;
return err;
}
- target = strdup(CGI_PREFIX "edit-actions-list?f=");
- string_append(&target, file->identifier);
- string_join(&target, section_target(sectionid));
-
+ snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s#l%d",
+ (long) time(NULL), file->identifier, sectionid);
edit_free_file(file);
- if (target == NULL)
- {
- /* Out of memory */
- return JB_ERR_MEMORY;
- }
-
- rsp->status = strdup("302 Local Redirect from Privoxy");
- if (rsp->status == NULL)
- {
- free(target);
- return JB_ERR_MEMORY;
- }
- err = enlist_unique_header(rsp->headers, "Location", target);
- free(target);
-
- return err;
+ return cgi_redirect(rsp, target);
}
struct file_line * cur_line;
unsigned line_number;
unsigned section_start_line_number = 0;
- char * target;
+ char target[1024];
jb_err err;
+ assert(csp);
+ assert(rsp);
+ assert(parameters);
+
if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
{
return cgi_error_disabled(csp, rsp);
return err;
}
- target = strdup(CGI_PREFIX "edit-actions-list?f=");
- string_append(&target, file->identifier);
- string_join(&target, section_target(section_start_line_number));
+ snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s#l%d",
+ (long) time(NULL), file->identifier, section_start_line_number);
edit_free_file(file);
- if (target == NULL)
- {
- /* Out of memory */
- return JB_ERR_MEMORY;
- }
-
- rsp->status = strdup("302 Local Redirect from Privoxy");
- if (rsp->status == NULL)
- {
- free(target);
- return JB_ERR_MEMORY;
- }
- err = enlist_unique_header(rsp->headers, "Location", target);
- free(target);
-
- return err;
+ return cgi_redirect(rsp, target);
}
struct editable_file * file;
struct file_line * cur_line;
unsigned line_number;
- char * target;
+ char target[1024];
jb_err err;
if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
return err;
}
- target = strdup(CGI_PREFIX "edit-actions-list?f=");
- string_append(&target, file->identifier);
- string_join(&target, section_target(sectionid));
+ snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s#l%d",
+ (long) time(NULL), file->identifier, sectionid);
edit_free_file(file);
- if (target == NULL)
- {
- /* Out of memory */
- return JB_ERR_MEMORY;
- }
-
- rsp->status = strdup("302 Local Redirect from Privoxy");
- if (rsp->status == NULL)
- {
- free(target);
- return JB_ERR_MEMORY;
- }
- err = enlist_unique_header(rsp->headers, "Location", target);
- free(target);
-
- return err;
+ return cgi_redirect(rsp, target);
}
struct file_line * prev_line;
unsigned line_number;
unsigned section_start_line_number = 0;
- char * target;
+ char target[1024];
jb_err err;
if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
return err;
}
- target = strdup(CGI_PREFIX "edit-actions-list?f=");
- string_append(&target, file->identifier);
- string_join(&target, section_target(section_start_line_number));
+ snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s#l%d",
+ (long) time(NULL), file->identifier, section_start_line_number);
edit_free_file(file);
- if (target == NULL)
- {
- /* Out of memory */
- return JB_ERR_MEMORY;
- }
-
- rsp->status = strdup("302 Local Redirect from Privoxy");
- if (rsp->status == NULL)
- {
- free(target);
- return JB_ERR_MEMORY;
- }
- err = enlist_unique_header(rsp->headers, "Location", target);
- free(target);
-
- return err;
+ return cgi_redirect(rsp, target);
}
struct file_line * cur_line;
struct file_line * prev_line;
unsigned line_number;
- char * target;
+ char target[1024];
jb_err err;
if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
return err;
}
- target = strdup(CGI_PREFIX "edit-actions-list?f=");
- string_append(&target, file->identifier);
+ snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s",
+ (long) time(NULL), file->identifier);
edit_free_file(file);
- if (target == NULL)
- {
- /* Out of memory */
- return JB_ERR_MEMORY;
- }
-
- rsp->status = strdup("302 Local Redirect from Privoxy");
- if (rsp->status == NULL)
- {
- free(target);
- return JB_ERR_MEMORY;
- }
- err = enlist_unique_header(rsp->headers, "Location", target);
- free(target);
-
- return err;
+ return cgi_redirect(rsp, target);
}
struct editable_file * file;
struct file_line * cur_line;
unsigned line_number;
- char * target;
+ char target[1024];
jb_err err;
if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
return err;
}
- target = strdup(CGI_PREFIX "edit-actions-list?f=");
- string_append(&target, file->identifier);
+ snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s",
+ (long) time(NULL), file->identifier);
edit_free_file(file);
- if (target == NULL)
- {
- /* Out of memory */
- return JB_ERR_MEMORY;
- }
-
- rsp->status = strdup("302 Local Redirect from Privoxy");
- if (rsp->status == NULL)
- {
- free(target);
- return JB_ERR_MEMORY;
- }
- err = enlist_unique_header(rsp->headers, "Location", target);
- free(target);
-
- return err;
+ return cgi_redirect(rsp, target);
}
struct file_line * line_end_section2;
struct file_line * line_after_section2;
unsigned line_number;
- char * target;
+ char target[1024];
jb_err err;
if (0 == (csp->config->feature_flags & RUNTIME_FEATURE_CGI_EDIT_ACTIONS))
}
} /* END if (section1 != section2) */
- target = strdup(CGI_PREFIX "edit-actions-list?f=");
- string_append(&target, file->identifier);
+ snprintf(target, 1024, CGI_PREFIX "edit-actions-list?foo=%lu&f=%s",
+ (long) time(NULL), file->identifier);
edit_free_file(file);
- if (target == NULL)
- {
- /* Out of memory */
- return JB_ERR_MEMORY;
- }
-
- rsp->status = strdup("302 Local Redirect from Privoxy");
- if (rsp->status == NULL)
- {
- free(target);
- return JB_ERR_MEMORY;
- }
- err = enlist_unique_header(rsp->headers, "Location", target);
- free(target);
-
- return err;
+ return cgi_redirect(rsp, target);
}
if (mode == 'E')
{
/* Enable */
- g_bToggleIJB = 1;
+ global_toggle_state = 1;
}
else if (mode == 'D')
{
/* Disable */
- g_bToggleIJB = 0;
+ global_toggle_state = 0;
}
else if (mode == 'T')
{
/* Toggle */
- g_bToggleIJB = !g_bToggleIJB;
+ global_toggle_state = !global_toggle_state;
}
if (NULL == (exports = default_exports(csp, "toggle")))