diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-12-09 08:52:09 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-12-09 08:52:09 +0000 |
commit | 4966287d56be3f724ef0c31030baa4db29aeb72b (patch) | |
tree | 487f6e159d5d3cbd5b44c4a30bb2dc91c9cbc60f /libsylph/filter.c | |
parent | ad59740f15a44999e3da126c49bdca09d8b7a61b (diff) |
added utility functions for optimization of filter.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@814 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'libsylph/filter.c')
-rw-r--r-- | libsylph/filter.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/libsylph/filter.c b/libsylph/filter.c index d4acc6a7..a7533bcc 100644 --- a/libsylph/filter.c +++ b/libsylph/filter.c @@ -440,6 +440,29 @@ static gboolean filter_match_header_cond(FilterCond *cond, GSList *hlist) return matched; } +gboolean filter_rule_requires_full_headers(FilterRule *rule) +{ + GSList *cur; + + for (cur = rule->cond_list; cur != NULL; cur = cur->next) { + FilterCond *cond = (FilterCond *)cur->data; + const gchar *name = cond->header_name; + + if (cond->type == FLT_COND_HEADER && name) { + if (g_ascii_strcasecmp(name, "Date") != 0 && + g_ascii_strcasecmp(name, "From") != 0 && + g_ascii_strcasecmp(name, "To") != 0 && + g_ascii_strcasecmp(name, "Newsgroups") != 0 && + g_ascii_strcasecmp(name, "Subject") != 0) + return TRUE; + } else if (cond->type == FLT_COND_ANY_HEADER || + cond->type == FLT_COND_TO_OR_CC) + return TRUE; + } + + return FALSE; +} + #define RETURN_IF_TAG_NOT_MATCH(tag_name) \ if (strcmp2(xmlnode->tag->tag, tag_name) != 0) { \ g_warning("tag name != \"" tag_name "\"\n"); \ |