⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filter-opts.c

📁 一个功能全面的电子邮件客户端
💻 C
📖 第 1 页 / 共 2 页
字号:
	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 + -