From 1b995212bd98536449d763031654c410200dbdd0 Mon Sep 17 00:00:00 2001 From: Not Zed Date: Thu, 1 Mar 2001 00:52:51 +0000 Subject: New function to clone rules. 2001-02-28 Not Zed * filter-rule.c (filter_rule_clone): New function to clone rules. svn path=/trunk/; revision=8435 --- filter/ChangeLog | 4 ++++ filter/filter-rule.c | 15 +++++++++++++++ filter/filter-rule.h | 2 ++ 3 files changed, 21 insertions(+) (limited to 'filter') diff --git a/filter/ChangeLog b/filter/ChangeLog index c6de003925..382b815c4c 100644 --- a/filter/ChangeLog +++ b/filter/ChangeLog @@ -1,3 +1,7 @@ +2001-02-28 Not Zed + + * filter-rule.c (filter_rule_clone): New function to clone rules. + 2001-02-23 Not Zed * filtertypes.xml: Added mailing list matching rules. diff --git a/filter/filter-rule.c b/filter/filter-rule.c index 663e9d7f81..c5d36d3496 100644 --- a/filter/filter-rule.c +++ b/filter/filter-rule.c @@ -138,6 +138,21 @@ filter_rule_new () return o; } +FilterRule * +filter_rule_clone(FilterRule *base, RuleContext *f) +{ + xmlNodePtr xml; + FilterRule *rule; + + /* TODO: do this more directly/efficiently */ + xml = filter_rule_xml_encode(base); + rule = gtk_type_new(((GtkObject *)base)->klass->type); + filter_rule_xml_decode(rule, xml, f); + xmlFreeNodeList(xml); + + return rule; +} + void filter_rule_set_name (FilterRule *fr, const char *name) { diff --git a/filter/filter-rule.h b/filter/filter-rule.h index 8c6f9cf42b..3fc00fe598 100644 --- a/filter/filter-rule.h +++ b/filter/filter-rule.h @@ -73,6 +73,8 @@ struct _FilterRuleClass { guint filter_rule_get_type (void); FilterRule *filter_rule_new (void); +FilterRule *filter_rule_clone (FilterRule *base, struct _RuleContext *f); + /* methods */ void filter_rule_set_name (FilterRule *fr, const char *name); void filter_rule_set_source (FilterRule *fr, const char *source); -- cgit v1.2.3