-const char actions_rcs[] = "$Id: actions.c,v 1.21 2002/01/17 20:54:44 jongfoster Exp $";
+const char actions_rcs[] = "$Id: actions.c,v 1.25 2002/03/24 13:25:43 swa Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/actions.c,v $
* Functions declared include: FIXME
*
* Copyright : Written by and Copyright (C) 2001 the SourceForge
- * IJBSWA team. http://ijbswa.sourceforge.net
+ * Privoxy team. http://www.privoxy.org/
*
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
*
* Revisions :
* $Log: actions.c,v $
+ * Revision 1.25 2002/03/24 13:25:43 swa
+ * name change related issues
+ *
+ * Revision 1.24 2002/03/16 23:54:06 jongfoster
+ * Adding graceful termination feature, to help look for memory leaks.
+ * If you enable this (which, by design, has to be done by hand
+ * editing config.h) and then go to http://i.j.b/die, then the program
+ * will exit cleanly after the *next* request. It should free all the
+ * memory that was used.
+ *
+ * Revision 1.23 2002/03/07 03:46:16 oes
+ * Fixed compiler warnings
+ *
+ * Revision 1.22 2002/01/21 00:27:02 jongfoster
+ * Allowing free_action(NULL).
+ * Moving the functions that #include actionlist.h to the end of the file,
+ * because the Visual C++ 97 debugger gets extremely confused if you try
+ * to debug any code that comes after them in the file.
+ *
* Revision 1.21 2002/01/17 20:54:44 jongfoster
* Renaming free_url to free_url_spec, since it frees a struct url_spec.
*
{
/* append multi string. */
- struct list * remove = cur_action->multi_remove[action->index];
- struct list * add = cur_action->multi_add[action->index];
+ struct list * remove_p = cur_action->multi_remove[action->index];
+ struct list * add_p = cur_action->multi_add[action->index];
if ((value == NULL) || (*value == '\0'))
{
return JB_ERR_PARSE;
}
- list_remove_item(remove, value);
- err = enlist_unique(add, value, 0);
+ list_remove_item(remove_p, value);
+ err = enlist_unique(add_p, value, 0);
if (err)
{
return err;
{
/* remove multi string. */
- struct list * remove = cur_action->multi_remove[action->index];
- struct list * add = cur_action->multi_add[action->index];
+ struct list * remove_p = cur_action->multi_remove[action->index];
+ struct list * add_p = cur_action->multi_add[action->index];
if ( (value == NULL) || (*value == '\0')
|| ((*value == '*') && (value[1] == '\0')) )
*
* Remove *ALL*.
*/
- list_remove_all(remove);
- list_remove_all(add);
+ list_remove_all(remove_p);
+ list_remove_all(add_p);
cur_action->multi_remove_all[action->index] = 1;
}
else
if ( !cur_action->multi_remove_all[action->index] )
{
/* there isn't a catch-all in the remove list already */
- err = enlist_unique(remove, value, 0);
+ err = enlist_unique(remove_p, value, 0);
if (err)
{
return err;
}
}
- list_remove_item(add, value);
+ list_remove_item(add_p, value);
}
break;
}
}
+static struct file_list *current_actions_file = NULL;
+
+
+#ifdef FEATURE_GRACEFUL_TERMINATION
+/*********************************************************************
+ *
+ * Function : unload_current_actions_file
+ *
+ * Description : Unloads current actions file - reset to state at
+ * beginning of program.
+ *
+ * Parameters : None
+ *
+ * Returns : N/A
+ *
+ *********************************************************************/
+void unload_current_actions_file(void)
+{
+ if (current_actions_file)
+ {
+ current_actions_file->unloader = unload_actions_file;
+ current_actions_file = NULL;
+ }
+}
+#endif /* FEATURE_GRACEFUL_TERMINATION */
+
+
/*********************************************************************
*
* Function : unload_actions_file
*********************************************************************/
int load_actions_file(struct client_state *csp)
{
- static struct file_list *current_actions_file = NULL;
/*
* Parser mode.