X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=mymail.c;h=20d041910e6bfd98fbd7cf909cde7c3c86238c9d;hb=1d852dd39736a83b168bbd1f4b0070f40b34be49;hp=b1734f23207663f31d50b8c2bba7375b3891d7d8;hpb=bb821f06831e36cb8fa7088f7eabbf1d567efdb5;p=mymail.git diff --git a/mymail.c b/mymail.c index b1734f2..20d0419 100644 --- a/mymail.c +++ b/mymail.c @@ -217,6 +217,18 @@ void print_usage(FILE *out) { /*********************************************************************/ +time_t time_for_past_day(int day) { + time_t t; + struct tm *tm; + int delta_day; + t = time(0); + tm = localtime(&t); + delta_day = (7 + tm->tm_wday - day) % 7 + 1; + return t - delta_day * 3600 * 24 + tm->tm_sec + 60 * tm->tm_min + 3600 * tm->tm_hour; +} + +/*********************************************************************/ + int ignore_entry(const char *name) { return /* strcmp(name, ".") == 0 || */ @@ -697,12 +709,16 @@ void init_condition(struct search_condition *condition, char *string) { condition->negation = 0; } - if(strcmp(search_field, "6h") == 0) { + /* Last 8 hours */ + + if(strcmp(search_field, "8h") == 0) { condition->field_id = ID_INTERVAL; - condition->interval_start = time(0) - 3600 * 6; + condition->interval_start = time(0) - 3600 * 8; condition->interval_stop = 0; } + /* Today and yesterday */ + else if(strcmp(search_field, "24h") == 0 || strcmp(search_field, "today") == 0) { condition->field_id = ID_INTERVAL; @@ -713,7 +729,51 @@ void init_condition(struct search_condition *condition, char *string) { else if(strcmp(search_field, "yesterday") == 0) { condition->field_id = ID_INTERVAL; condition->interval_start = time(0) - 2 * 3600 * 24; - condition->interval_stop = time(0) - 3600 * 24; + condition->interval_stop = condition->interval_start + 3600 * 24; + } + + /* Week days */ + + else if(strcmp(search_field, "monday") == 0) { + condition->field_id = ID_INTERVAL; + condition->interval_start = time_for_past_day(1); + condition->interval_stop = condition->interval_start + 3600 * 24; + } + + else if(strcmp(search_field, "tuesday") == 0) { + condition->field_id = ID_INTERVAL; + condition->interval_start = time_for_past_day(2); + condition->interval_stop = condition->interval_start + 3600 * 24; + } + + else if(strcmp(search_field, "wednesday") == 0) { + condition->field_id = ID_INTERVAL; + condition->interval_start = time_for_past_day(3); + condition->interval_stop = condition->interval_start + 3600 * 24; + } + + else if(strcmp(search_field, "thursday") == 0) { + condition->field_id = ID_INTERVAL; + condition->interval_start = time_for_past_day(4); + condition->interval_stop = condition->interval_start + 3600 * 24; + } + + else if(strcmp(search_field, "friday") == 0) { + condition->field_id = ID_INTERVAL; + condition->interval_start = time_for_past_day(5); + condition->interval_stop = condition->interval_start + 3600 * 24; + } + + else if(strcmp(search_field, "saturday") == 0) { + condition->field_id = ID_INTERVAL; + condition->interval_start = time_for_past_day(6); + condition->interval_stop = condition->interval_start + 3600 * 24; + } + + else if(strcmp(search_field, "sunday") == 0) { + condition->field_id = ID_INTERVAL; + condition->interval_start = time_for_past_day(7); + condition->interval_stop = condition->interval_start + 3600 * 24; } else { @@ -764,7 +824,7 @@ int main(int argc, char **argv) { struct search_condition search_conditions[MAX_NB_SEARCH_CONDITIONS]; if(regcomp(&leading_from_line_regexp, - "^From [^ ]*@[^ ]* \\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\) \\(Jan\\|Feb\\|Mar\\|Apr\\|Jun\\|Jul\\|Aug\\|Sep\\|Oct\\|Nov\\|Dec\\) [ 123][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]\n$", + "^From [^ ]* \\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\) \\(Jan\\|Feb\\|Mar\\|Apr\\|May\\|Jun\\|Jul\\|Aug\\|Sep\\|Oct\\|Nov\\|Dec\\) [ 123][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]\n$", 0)) { fprintf(stderr, "mymail: Cannot compile leading \"from\" line regexp. That is strange.\n");