📄 filter-opts.c
字号:
for (seek=rule_list; seek; seek=seek->next) { FilterRule *rule=seek->data; switch (rule->matchline) { case F_SUBJECT: if (rule->type==F_AND) { if (strstr (subj, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_NOT) { if (!strstr (subj, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_EQUAL) { if (!strncmp (subj, rule->text, strlen (rule->text))) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } break; case F_FROM: if (rule->type==F_AND) { if (strstr (from, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_NOT) { if (!strstr (from, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_EQUAL) { if (!strncmp (subj, rule->text, strlen (rule->text))) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } break; case F_TO: if (rule->type==F_AND) { if (strstr (to, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_NOT) { if (!strstr (to, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_EQUAL) { if (!strncmp (to, rule->text, strlen (rule->text))) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } break; case F_CC: if(!cc) break; if (rule->type==F_AND) { if (strstr (cc, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_NOT) { if (!strstr (cc, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_EQUAL) { if (!strncmp (cc, rule->text, strlen (rule->text))) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } break; case F_REPLYTO: if(!replyto) break; if (rule->type==F_AND) { if (strstr (replyto, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_NOT) { if (!strstr (replyto, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_EQUAL) { if (!strncmp (replyto, rule->text, strlen (rule->text))) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } break; case F_BCC: if(!bcc) break; if (rule->type==F_AND) { if (strstr (bcc, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_NOT) { if (!strstr (bcc, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_EQUAL) { if (!strncmp (bcc, rule->text, strlen (rule->text))) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } break; case F_MSG: if(!body) break; if (rule->type==F_AND) { if (strstr (body, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_NOT) { if (!strstr (body, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_EQUAL) { if (!strncmp (body, rule->text, strlen (rule->text))) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } break; case F_KEY: if(!keywords) break; if (rule->type==F_AND) { if (strstr (keywords, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_NOT) { if (!strstr (keywords, rule->text)) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } else if (rule->type==F_EQUAL) { if (!strncmp (keywords, rule->text, strlen (rule->text))) { fact->action=rule->action; if (rule->action==F_ACTION_MOVE) { fact->folder=strdup (rule->folder); } return fact; } } break; } }#ifdef DMALLOC dmalloc_verify( 0 ) ;#endif return fact;}void filter_delete_rule (FilterRule *rule) { g_return_if_fail (rule != NULL); if (rule->text) free (rule->text); if (rule->folder) free (rule->folder); rule_list=g_list_remove (rule_list, rule); free (rule);}GList *g_list_swap (GList *begin, GList *node1, GList *node2) { void *tmpdata; tmpdata=node1->data; node1->data=node2->data; node2->data=tmpdata; return begin;}void filter_move_up (FilterRule *rule) { GList *seek=g_list_find (rule_list, rule); rule_list=g_list_swap (rule_list, seek->prev, seek);}void filter_move_down (FilterRule *rule) { GList *seek=g_list_find (rule_list, rule); rule_list=g_list_swap (rule_list, seek, seek->next);}void filter_action_destroy (FilterAction *fact) { if (fact) { if (fact->folder) free (fact->folder); free (fact); }}void rule_destroy_all () { GList *seek; for (seek=rule_list;seek;seek=seek->next) { FilterRule *rule=seek->data; if (rule->text) free (rule->text); if (rule->folder) free (rule->folder); free (rule); } g_list_free (rule_list); rule_list=NULL;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -