X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=mymail.c;h=fe2d9a048abad05cac1bc1c93475ca458e5b2aa4;hb=2acc0a4abd8b818906f5cd027805f77b6a012a25;hp=b890b4b5c3674ac476d5b3330a530e89a3bee351;hpb=e473bd8cb8b715248d70e505be9e116fab5c68b8;p=mymail.git diff --git a/mymail.c b/mymail.c index b890b4b..fe2d9a0 100644 --- a/mymail.c +++ b/mymail.c @@ -101,6 +101,7 @@ struct search_condition { struct parsable_field { int id; + int cflags; char *regexp_string; regex_t regexp; }; @@ -108,31 +109,36 @@ struct parsable_field { static struct parsable_field fields_to_parse[] = { { ID_LEADING_LINE, + 0, "^From ", { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, { ID_FROM, - "^\\([Ff][Rr][Oo][Mm]:\\|[Rr][Ee][Pp][Ll][Yy]-[Tt][Oo]:\\|[Ss][Ee][Nn][Dd][Ee][Rr]:\\)", + REG_ICASE, + "^\\(from\\|reply-to\\|sender\\|return-path\\): ", { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, { ID_TO, - "^\\([Tt][Oo]\\|[Cc][Cc]\\|[Bb][Cc][Cc]\\): ", + REG_ICASE, + "^\\(to\\|cc\\|bcc\\): ", { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, { ID_SUBJECT, - "^[Ss][Uu][Bb][Jj][Ee][Cc][Tt]: ", + REG_ICASE, + "^subject: ", { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, { ID_DATE, - "^[Dd][Aa][Tt][Ee]: ", + REG_ICASE, + "^date: ", { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, @@ -286,7 +292,9 @@ int mbox_line_match_search(struct search_condition *condition, (condition->field_id == ID_FROM && mbox_id == ID_LEADING_LINE) ) + && + regexec(&condition->regexp, mbox_value, 0, 0, 0) == 0; } } @@ -725,6 +733,13 @@ void init_condition(struct search_condition *condition, char *full_string) { condition->interval_stop = 0; } + else if(strcmp(search_field, "24h") == 0 || + strcmp(search_field, "today") == 0) { + condition->field_id = ID_INTERVAL; + condition->interval_start = time(0) - 3600 * 24; + condition->interval_stop = 0; + } + else if(strcmp(search_field, "week") == 0) { condition->field_id = ID_INTERVAL; condition->interval_start = time(0) - 3600 * 24 * 7; @@ -737,10 +752,9 @@ void init_condition(struct search_condition *condition, char *full_string) { condition->interval_stop = 0; } - else if(strcmp(search_field, "24h") == 0 || - strcmp(search_field, "today") == 0) { + else if(strcmp(search_field, "year") == 0) { condition->field_id = ID_INTERVAL; - condition->interval_start = time(0) - 3600 * 24; + condition->interval_start = time(0) - 3600 * 24 * 365; condition->interval_stop = 0; } @@ -1022,7 +1036,7 @@ int main(int argc, char **argv) { for(f = 0; f < nb_fields_to_parse; f++) { if(regcomp(&fields_to_parse[f].regexp, fields_to_parse[f].regexp_string, - REG_ICASE)) { + fields_to_parse[f].cflags)) { fprintf(stderr, "mymail: Syntax error in regexp \"%s\" for field \"%s\".\n", fields_to_parse[f].regexp_string,